From dce62bdd77b894bb3d4b3fb3713208ed024c03c0 Mon Sep 17 00:00:00 2001 From: Aadi Desai <21363892+supleed2@users.noreply.github.com> Date: Tue, 18 May 2021 12:20:27 +0100 Subject: [PATCH] Add Vision initial files from vision resource repo --- Vision/.gitignore | 11 + .../DE10_LITE_D8M_VIP_16/.qsys_edit/Qsys.xml | 2167 ++ .../.qsys_edit/Qsys_schematic.nlv | 54 + .../.qsys_edit/filters.xml | 2 + .../.qsys_edit/preferences.xml | 14 + Vision/DE10_LITE_D8M_VIP_16/Chain.cdf | 13 + .../DE10_LITE_D8M_VIP.SDC | 128 + .../DE10_LITE_D8M_VIP.htm | 1193 + .../DE10_LITE_D8M_VIP.qpf | 6 + .../DE10_LITE_D8M_VIP.qsf | 426 + .../DE10_LITE_D8M_VIP.qws | Bin 0 -> 1312 bytes .../DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.v | 196 + .../DE10_LITE_D8M_VIP_assignment_defaults.qdf | 808 + .../DE10_LITE_D8M_VIP_16/EEE_IMGPROC_hw.tcl | 183 + Vision/DE10_LITE_D8M_VIP_16/FpsMonitor.v | 82 + Vision/DE10_LITE_D8M_VIP_16/Qsys.qsys | 1471 + Vision/DE10_LITE_D8M_VIP_16/Qsys.sopcinfo | 21866 +++++++++++++++ Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.bsf | 431 + Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.cmp | 47 + Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.html | 5416 ++++ Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.xml | 5410 ++++ Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_bb.v | 88 + .../Qsys/Qsys_generation.rpt | 129 + .../Qsys/Qsys_generation_previous.rpt | 129 + Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_inst.v | 45 + .../DE10_LITE_D8M_VIP_16/Qsys/Qsys_inst.vhd | 93 + .../demo_batch/D8M_Camera_Test.elf | Bin 0 -> 1098085 bytes .../demo_batch/DE10_LITE_D8M_VIP.sof | Bin 0 -> 3326881 bytes .../DE10_LITE_D8M_VIP_16/demo_batch/test.bat | 26 + .../DE10_LITE_D8M_VIP_16/demo_batch/test.sh | 6 + .../greybox_tmp/cbx_args.txt | 61 + .../DE10_LITE_D8M_VIP_16/hs_err_pid13062.log | 1085 + .../ip/EEE_IMGPROC/EEE_IMGPROC.v | 305 + .../ip/EEE_IMGPROC/MSG_FIFO.qip | 6 + .../ip/EEE_IMGPROC/MSG_FIFO.v | 163 + .../ip/EEE_IMGPROC/MSG_FIFO_bb.v | 124 + .../ip/EEE_IMGPROC/MSG_FIFO_inst.v | 10 + .../ip/EEE_IMGPROC/STREAM_REG.v | 39 + .../ip/EEE_IMGPROC/STREAM_REG_TEST.v | 51 + .../ip/EEE_IMGPROC/STREAM_REG_TEST.vwf | 1010 + .../ip/EEE_IMGPROC/greybox_tmp/cbx_args.txt | 18 + .../ip/TERASIC_AUTO_FOCUS/F_VCM.v | 56 + .../ip/TERASIC_AUTO_FOCUS/I2C_VCM_Config.v | 160 + .../TERASIC_AUTO_FOCUS/I2C_VCM_Controller.v | 157 + .../TERASIC_AUTO_FOCUS/TERASIC_AUTO_FOCUS.v | 298 + .../TERASIC_AUTO_FOCUS_hw.tcl | 214 + .../ip/TERASIC_AUTO_FOCUS/VCM_CTRL_P.v | 99 + .../ip/TERASIC_CAMERA/Bayer2RGB.v | 294 + .../ip/TERASIC_CAMERA/Bayer_LineBuffer.qip | 3 + .../ip/TERASIC_CAMERA/Bayer_LineBuffer.v | 112 + .../ip/TERASIC_CAMERA/CAMERA_Bayer.v | 121 + .../ip/TERASIC_CAMERA/CAMERA_RGB.v | 95 + .../ip/TERASIC_CAMERA/TERASIC_CAMERA.v | 198 + .../ip/TERASIC_CAMERA/TERASIC_CAMERA_hw.tcl | 149 + .../ip/TERASIC_CAMERA/add2.qip | 4 + .../ip/TERASIC_CAMERA/add2.v | 103 + .../ip/TERASIC_CAMERA/add2_bb.v | 71 + .../ip/TERASIC_CAMERA/add4.qip | 4 + .../ip/TERASIC_CAMERA/add4.v | 113 + .../ip/TERASIC_CAMERA/add4_bb.v | 79 + .../TERASIC_CAMERA/greybox_tmp/cbx_args.txt | 13 + .../ip/TERASIC_CAMERA/rgb_fifo.qip | 3 + .../ip/TERASIC_CAMERA/rgb_fifo.v | 178 + .../ip/TERASIC_CAMERA/rgb_fifo_wave0.jpg | Bin 0 -> 108681 bytes .../ip/TERASIC_CAMERA/rgb_fifo_wave1.jpg | Bin 0 -> 96651 bytes .../ip/TERASIC_CAMERA/rgb_fifo_waveforms.html | 16 + .../ip/i2c_opencores/Docs/I2C_tests.c | 99 + .../ip/i2c_opencores/Docs/i2c_specs.pdf | Bin 0 -> 211471 bytes .../ip/i2c_opencores/HAL/inc/i2c_opencores.h | 31 + .../ip/i2c_opencores/HAL/src/component.mk | 38 + .../ip/i2c_opencores/HAL/src/i2c_opencores.c | 183 + .../ip/i2c_opencores/i2c_master_bit_ctrl.v | 540 + .../ip/i2c_opencores/i2c_master_byte_ctrl.v | 344 + .../ip/i2c_opencores/i2c_master_defines.v | 64 + .../ip/i2c_opencores/i2c_master_top.v | 296 + .../ip/i2c_opencores/i2c_opencores.v | 72 + .../ip/i2c_opencores/i2c_opencores_hw.tcl | 143 + .../ip/i2c_opencores/i2c_opencores_sw.tcl | 56 + .../ip/i2c_opencores/inc/i2c_opencores_regs.h | 75 + .../ip/i2c_opencores/test.v | 388 + .../ip/i2c_opencores/timescale.v | 2 + Vision/DE10_LITE_D8M_VIP_16/readme.pdf | Bin 0 -> 237588 bytes .../software/D8M_Camera_Test/.cproject | 83 + .../software/D8M_Camera_Test/.force_rebuild | 0 .../software/D8M_Camera_Test/.force_relink | 0 .../software/D8M_Camera_Test/.project | 40 + .../.settings/language.settings.xml | 15 + .../D8M_Camera_Test/D8M_Camera_Test.elf | Bin 0 -> 1128331 bytes .../D8M_Camera_Test/D8M_Camera_Test.map | 2517 ++ .../D8M_Camera_Test/D8M_Camera_Test.objdump | 22618 ++++++++++++++++ .../software/D8M_Camera_Test/I2C_core.c | 732 + .../software/D8M_Camera_Test/I2C_core.h | 29 + .../software/D8M_Camera_Test/Makefile | 1083 + .../software/D8M_Camera_Test/auto_focus.c | 98 + .../software/D8M_Camera_Test/auto_focus.h | 30 + .../software/D8M_Camera_Test/create-this-app | 114 + .../software/D8M_Camera_Test/main.c | 301 + .../D8M_Camera_Test/mipi_bridge_config.c | 132 + .../D8M_Camera_Test/mipi_bridge_config.h | 18 + .../D8M_Camera_Test/mipi_camera_config.c | 658 + .../D8M_Camera_Test/mipi_camera_config.h | 30 + .../software/D8M_Camera_Test/queue.c | 54 + .../software/D8M_Camera_Test/queue.h | 21 + .../software/D8M_Camera_Test/readme.txt | 26 + .../D8M_Camera_Test/terasic_includes.h | 61 + .../software/D8M_Camera_Test_bsp/.cproject | 56 + .../D8M_Camera_Test_bsp/.force_rebuild_all | 0 .../D8M_Camera_Test_bsp/.force_relink | 0 .../software/D8M_Camera_Test_bsp/.project | 29 + .../.settings/language.settings.xml | 15 + .../D8M_Camera_Test_bsp/HAL/inc/alt_types.h | 54 + .../HAL/inc/altera_nios2_gen2_irq.h | 80 + .../software/D8M_Camera_Test_bsp/HAL/inc/io.h | 81 + .../D8M_Camera_Test_bsp/HAL/inc/nios2.h | 300 + .../D8M_Camera_Test_bsp/HAL/inc/os/alt_flag.h | 98 + .../HAL/inc/os/alt_hooks.h | 61 + .../D8M_Camera_Test_bsp/HAL/inc/os/alt_sem.h | 96 + .../HAL/inc/os/alt_syscall.h | 75 + .../HAL/inc/priv/alt_alarm.h | 101 + .../HAL/inc/priv/alt_busy_sleep.h | 35 + .../HAL/inc/priv/alt_dev_llist.h | 77 + .../inc/priv/alt_exception_handler_registry.h | 39 + .../HAL/inc/priv/alt_file.h | 179 + .../HAL/inc/priv/alt_iic_isr_register.h | 39 + .../HAL/inc/priv/alt_irq_table.h | 59 + .../HAL/inc/priv/alt_legacy_irq.h | 158 + .../HAL/inc/priv/alt_no_error.h | 77 + .../HAL/inc/priv/nios2_gmon_data.h | 47 + .../HAL/inc/sys/alt_alarm.h | 126 + .../HAL/inc/sys/alt_cache.h | 117 + .../HAL/inc/sys/alt_debug.h | 45 + .../D8M_Camera_Test_bsp/HAL/inc/sys/alt_dev.h | 115 + .../D8M_Camera_Test_bsp/HAL/inc/sys/alt_dma.h | 226 + .../HAL/inc/sys/alt_dma_dev.h | 200 + .../HAL/inc/sys/alt_driver.h | 168 + .../HAL/inc/sys/alt_errno.h | 87 + .../HAL/inc/sys/alt_exceptions.h | 166 + .../HAL/inc/sys/alt_flash.h | 181 + .../HAL/inc/sys/alt_flash_dev.h | 100 + .../HAL/inc/sys/alt_flash_types.h | 64 + .../D8M_Camera_Test_bsp/HAL/inc/sys/alt_irq.h | 245 + .../HAL/inc/sys/alt_irq_entry.h | 39 + .../HAL/inc/sys/alt_license_reminder_ucosii.h | 77 + .../HAL/inc/sys/alt_llist.h | 123 + .../HAL/inc/sys/alt_load.h | 78 + .../HAL/inc/sys/alt_log_printf.h | 354 + .../HAL/inc/sys/alt_set_args.h | 71 + .../D8M_Camera_Test_bsp/HAL/inc/sys/alt_sim.h | 91 + .../HAL/inc/sys/alt_stack.h | 126 + .../HAL/inc/sys/alt_stdio.h | 66 + .../HAL/inc/sys/alt_sys_init.h | 62 + .../HAL/inc/sys/alt_sys_wrappers.h | 100 + .../HAL/inc/sys/alt_timestamp.h | 60 + .../HAL/inc/sys/alt_warning.h | 75 + .../D8M_Camera_Test_bsp/HAL/inc/sys/ioctl.h | 90 + .../D8M_Camera_Test_bsp/HAL/inc/sys/termios.h | 181 + .../HAL/src/alt_alarm_start.c | 112 + .../HAL/src/alt_busy_sleep.c | 133 + .../D8M_Camera_Test_bsp/HAL/src/alt_close.c | 103 + .../HAL/src/alt_dcache_flush.c | 70 + .../HAL/src/alt_dcache_flush_all.c | 51 + .../HAL/src/alt_dcache_flush_no_writeback.c | 69 + .../D8M_Camera_Test_bsp/HAL/src/alt_dev.c | 149 + .../HAL/src/alt_dev_llist_insert.c | 59 + .../HAL/src/alt_dma_rxchan_open.c | 63 + .../HAL/src/alt_dma_txchan_open.c | 63 + .../HAL/src/alt_do_ctors.c | 64 + .../HAL/src/alt_do_dtors.c | 64 + .../HAL/src/alt_ecc_fatal_entry.S | 102 + .../HAL/src/alt_ecc_fatal_exception.c | 75 + .../HAL/src/alt_env_lock.c | 53 + .../D8M_Camera_Test_bsp/HAL/src/alt_environ.c | 42 + .../D8M_Camera_Test_bsp/HAL/src/alt_errno.c | 44 + .../HAL/src/alt_exception_entry.S | 402 + .../HAL/src/alt_exception_muldiv.S | 583 + .../HAL/src/alt_exception_trap.S | 95 + .../D8M_Camera_Test_bsp/HAL/src/alt_execve.c | 55 + .../D8M_Camera_Test_bsp/HAL/src/alt_exit.c | 71 + .../D8M_Camera_Test_bsp/HAL/src/alt_fcntl.c | 101 + .../D8M_Camera_Test_bsp/HAL/src/alt_fd_lock.c | 75 + .../HAL/src/alt_fd_unlock.c | 56 + .../HAL/src/alt_find_dev.c | 88 + .../HAL/src/alt_find_file.c | 89 + .../HAL/src/alt_flash_dev.c | 69 + .../D8M_Camera_Test_bsp/HAL/src/alt_fork.c | 57 + .../D8M_Camera_Test_bsp/HAL/src/alt_fs_reg.c | 75 + .../D8M_Camera_Test_bsp/HAL/src/alt_fstat.c | 128 + .../D8M_Camera_Test_bsp/HAL/src/alt_get_fd.c | 105 + .../D8M_Camera_Test_bsp/HAL/src/alt_getchar.c | 70 + .../D8M_Camera_Test_bsp/HAL/src/alt_getpid.c | 47 + .../D8M_Camera_Test_bsp/HAL/src/alt_gettod.c | 125 + .../D8M_Camera_Test_bsp/HAL/src/alt_gmon.c | 272 + .../HAL/src/alt_icache_flush.c | 84 + .../HAL/src/alt_icache_flush_all.c | 46 + .../D8M_Camera_Test_bsp/HAL/src/alt_iic.c | 106 + .../HAL/src/alt_iic_isr_register.c | 104 + .../HAL/src/alt_instruction_exception_entry.c | 206 + .../src/alt_instruction_exception_register.c | 82 + .../HAL/src/alt_io_redirect.c | 98 + .../D8M_Camera_Test_bsp/HAL/src/alt_ioctl.c | 170 + .../HAL/src/alt_irq_entry.S | 108 + .../HAL/src/alt_irq_handler.c | 169 + .../HAL/src/alt_irq_register.c | 102 + .../HAL/src/alt_irq_vars.c | 47 + .../D8M_Camera_Test_bsp/HAL/src/alt_isatty.c | 125 + .../D8M_Camera_Test_bsp/HAL/src/alt_kill.c | 121 + .../D8M_Camera_Test_bsp/HAL/src/alt_link.c | 56 + .../D8M_Camera_Test_bsp/HAL/src/alt_load.c | 99 + .../HAL/src/alt_log_macro.S | 60 + .../HAL/src/alt_log_printf.c | 479 + .../D8M_Camera_Test_bsp/HAL/src/alt_lseek.c | 117 + .../D8M_Camera_Test_bsp/HAL/src/alt_main.c | 161 + .../HAL/src/alt_malloc_lock.c | 52 + .../D8M_Camera_Test_bsp/HAL/src/alt_mcount.S | 198 + .../D8M_Camera_Test_bsp/HAL/src/alt_open.c | 173 + .../D8M_Camera_Test_bsp/HAL/src/alt_printf.c | 132 + .../D8M_Camera_Test_bsp/HAL/src/alt_putchar.c | 68 + .../HAL/src/alt_putcharbuf.c | 80 + .../D8M_Camera_Test_bsp/HAL/src/alt_putstr.c | 64 + .../D8M_Camera_Test_bsp/HAL/src/alt_read.c | 125 + .../HAL/src/alt_release_fd.c | 54 + .../HAL/src/alt_remap_cached.c | 55 + .../HAL/src/alt_remap_uncached.c | 54 + .../D8M_Camera_Test_bsp/HAL/src/alt_rename.c | 55 + .../D8M_Camera_Test_bsp/HAL/src/alt_sbrk.c | 136 + .../D8M_Camera_Test_bsp/HAL/src/alt_settod.c | 96 + .../HAL/src/alt_software_exception.S | 53 + .../D8M_Camera_Test_bsp/HAL/src/alt_stat.c | 59 + .../D8M_Camera_Test_bsp/HAL/src/alt_tick.c | 149 + .../D8M_Camera_Test_bsp/HAL/src/alt_times.c | 71 + .../HAL/src/alt_uncached_free.c | 53 + .../HAL/src/alt_uncached_malloc.c | 77 + .../D8M_Camera_Test_bsp/HAL/src/alt_unlink.c | 55 + .../D8M_Camera_Test_bsp/HAL/src/alt_usleep.c | 52 + .../D8M_Camera_Test_bsp/HAL/src/alt_wait.c | 52 + .../D8M_Camera_Test_bsp/HAL/src/alt_write.c | 138 + .../HAL/src/altera_nios2_gen2_irq.c | 37 + .../D8M_Camera_Test_bsp/HAL/src/crt0.S | 521 + .../software/D8M_Camera_Test_bsp/Makefile | 781 + .../D8M_Camera_Test_bsp/alt_sys_init.c | 99 + .../D8M_Camera_Test_bsp/create-this-bsp | 52 + .../drivers/inc/altera_avalon_jtag_uart.h | 198 + .../drivers/inc/altera_avalon_jtag_uart_fd.h | 125 + .../inc/altera_avalon_jtag_uart_regs.h | 73 + .../drivers/inc/altera_avalon_pio_regs.h | 67 + .../drivers/inc/altera_avalon_sysid_qsys.h | 60 + .../inc/altera_avalon_sysid_qsys_regs.h | 42 + .../drivers/inc/altera_avalon_timer.h | 193 + .../drivers/inc/altera_avalon_timer_regs.h | 202 + .../drivers/src/altera_avalon_jtag_uart_fd.c | 86 + .../src/altera_avalon_jtag_uart_init.c | 256 + .../src/altera_avalon_jtag_uart_ioctl.c | 86 + .../src/altera_avalon_jtag_uart_read.c | 205 + .../src/altera_avalon_jtag_uart_write.c | 217 + .../drivers/src/altera_avalon_sysid_qsys.c | 82 + .../drivers/src/altera_avalon_timer_sc.c | 110 + .../drivers/src/altera_avalon_timer_ts.c | 143 + .../drivers/src/altera_avalon_timer_vars.c | 45 + .../software/D8M_Camera_Test_bsp/linker.h | 101 + .../software/D8M_Camera_Test_bsp/linker.x | 386 + .../software/D8M_Camera_Test_bsp/mem_init.mk | 344 + .../software/D8M_Camera_Test_bsp/memory.gdb | 50 + .../software/D8M_Camera_Test_bsp/public.mk | 415 + .../software/D8M_Camera_Test_bsp/settings.bsp | 1009 + .../software/D8M_Camera_Test_bsp/summary.html | 2119 ++ .../software/D8M_Camera_Test_bsp/system.h | 496 + .../software/RemoteSystemsTempFiles/.project | 12 + Vision/README.md | 14 + Vision/doc/FPGA-installation.md | 100 + Vision/doc/FPGA-system.md | 72 + 270 files changed, 99350 insertions(+) create mode 100644 Vision/.gitignore create mode 100644 Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/Qsys.xml create mode 100644 Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/Qsys_schematic.nlv create mode 100644 Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/filters.xml create mode 100644 Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/preferences.xml create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Chain.cdf create mode 100644 Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.SDC create mode 100644 Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.htm create mode 100644 Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qpf create mode 100644 Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qsf create mode 100644 Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qws create mode 100644 Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP_assignment_defaults.qdf create mode 100644 Vision/DE10_LITE_D8M_VIP_16/EEE_IMGPROC_hw.tcl create mode 100644 Vision/DE10_LITE_D8M_VIP_16/FpsMonitor.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys.qsys create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys.sopcinfo create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.bsf create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.cmp create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.html create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.xml create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_bb.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_generation.rpt create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_generation_previous.rpt create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_inst.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_inst.vhd create mode 100644 Vision/DE10_LITE_D8M_VIP_16/demo_batch/D8M_Camera_Test.elf create mode 100644 Vision/DE10_LITE_D8M_VIP_16/demo_batch/DE10_LITE_D8M_VIP.sof create mode 100644 Vision/DE10_LITE_D8M_VIP_16/demo_batch/test.bat create mode 100644 Vision/DE10_LITE_D8M_VIP_16/demo_batch/test.sh create mode 100644 Vision/DE10_LITE_D8M_VIP_16/greybox_tmp/cbx_args.txt create mode 100644 Vision/DE10_LITE_D8M_VIP_16/hs_err_pid13062.log create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/EEE_IMGPROC.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO.qip create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO_bb.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO_inst.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG_TEST.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG_TEST.vwf create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/greybox_tmp/cbx_args.txt create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/F_VCM.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/I2C_VCM_Config.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/I2C_VCM_Controller.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/TERASIC_AUTO_FOCUS.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/TERASIC_AUTO_FOCUS_hw.tcl create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/VCM_CTRL_P.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer2RGB.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer_LineBuffer.qip create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer_LineBuffer.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/CAMERA_Bayer.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/CAMERA_RGB.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/TERASIC_CAMERA.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/TERASIC_CAMERA_hw.tcl create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2.qip create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2_bb.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4.qip create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4_bb.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/greybox_tmp/cbx_args.txt create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo.qip create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo_wave0.jpg create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo_wave1.jpg create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo_waveforms.html create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/Docs/I2C_tests.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/Docs/i2c_specs.pdf create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/HAL/inc/i2c_opencores.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/HAL/src/component.mk create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/HAL/src/i2c_opencores.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_bit_ctrl.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_byte_ctrl.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_defines.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_top.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores_hw.tcl create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores_sw.tcl create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/inc/i2c_opencores_regs.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/test.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/timescale.v create mode 100644 Vision/DE10_LITE_D8M_VIP_16/readme.pdf create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.cproject create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.force_rebuild create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.force_relink create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.project create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.settings/language.settings.xml create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/D8M_Camera_Test.elf create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/D8M_Camera_Test.map create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/D8M_Camera_Test.objdump create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/I2C_core.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/I2C_core.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/Makefile create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/auto_focus.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/auto_focus.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/create-this-app create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/main.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/mipi_bridge_config.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/mipi_bridge_config.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/mipi_camera_config.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/mipi_camera_config.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/queue.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/queue.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/readme.txt create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/terasic_includes.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/.cproject create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/.force_rebuild_all create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/.force_relink create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/.project create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/.settings/language.settings.xml create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/alt_types.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/altera_nios2_gen2_irq.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/io.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/nios2.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/os/alt_flag.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/os/alt_hooks.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/os/alt_sem.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/os/alt_syscall.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/priv/alt_alarm.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/priv/alt_busy_sleep.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/priv/alt_dev_llist.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/priv/alt_exception_handler_registry.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/priv/alt_file.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/priv/alt_iic_isr_register.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/priv/alt_irq_table.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/priv/alt_legacy_irq.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/priv/alt_no_error.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/priv/nios2_gmon_data.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_alarm.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_cache.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_debug.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_dev.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_dma.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_dma_dev.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_driver.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_errno.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_exceptions.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_flash.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_flash_dev.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_flash_types.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_irq.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_irq_entry.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_license_reminder_ucosii.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_llist.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_load.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_log_printf.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_set_args.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_sim.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_stack.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_stdio.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_sys_init.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_sys_wrappers.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_timestamp.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/alt_warning.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/ioctl.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/inc/sys/termios.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_alarm_start.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_busy_sleep.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_close.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_dcache_flush.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_dcache_flush_all.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_dcache_flush_no_writeback.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_dev.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_dev_llist_insert.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_dma_rxchan_open.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_dma_txchan_open.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_do_ctors.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_do_dtors.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_ecc_fatal_entry.S create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_ecc_fatal_exception.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_env_lock.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_environ.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_errno.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_exception_entry.S create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_exception_muldiv.S create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_exception_trap.S create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_execve.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_exit.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_fcntl.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_fd_lock.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_fd_unlock.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_find_dev.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_find_file.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_flash_dev.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_fork.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_fs_reg.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_fstat.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_get_fd.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_getchar.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_getpid.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_gettod.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_gmon.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_icache_flush.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_icache_flush_all.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_iic.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_iic_isr_register.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_instruction_exception_entry.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_instruction_exception_register.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_io_redirect.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_ioctl.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_irq_entry.S create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_irq_handler.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_irq_register.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_irq_vars.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_isatty.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_kill.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_link.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_load.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_log_macro.S create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_log_printf.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_lseek.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_main.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_malloc_lock.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_mcount.S create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_open.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_printf.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_putchar.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_putcharbuf.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_putstr.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_read.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_release_fd.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_remap_cached.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_remap_uncached.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_rename.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_sbrk.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_settod.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_software_exception.S create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_stat.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_tick.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_times.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_uncached_free.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_uncached_malloc.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_unlink.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_usleep.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_wait.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/alt_write.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/altera_nios2_gen2_irq.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/HAL/src/crt0.S create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/Makefile create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/alt_sys_init.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/create-this-bsp create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/inc/altera_avalon_jtag_uart.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/inc/altera_avalon_jtag_uart_fd.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/inc/altera_avalon_jtag_uart_regs.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/inc/altera_avalon_pio_regs.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/inc/altera_avalon_sysid_qsys.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/inc/altera_avalon_sysid_qsys_regs.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/inc/altera_avalon_timer.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/inc/altera_avalon_timer_regs.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/src/altera_avalon_jtag_uart_fd.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/src/altera_avalon_jtag_uart_init.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/src/altera_avalon_jtag_uart_ioctl.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/src/altera_avalon_jtag_uart_read.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/src/altera_avalon_jtag_uart_write.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/src/altera_avalon_sysid_qsys.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/src/altera_avalon_timer_sc.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/src/altera_avalon_timer_ts.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/drivers/src/altera_avalon_timer_vars.c create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/linker.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/linker.x create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/mem_init.mk create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/memory.gdb create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/public.mk create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/settings.bsp create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/summary.html create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test_bsp/system.h create mode 100644 Vision/DE10_LITE_D8M_VIP_16/software/RemoteSystemsTempFiles/.project create mode 100644 Vision/README.md create mode 100644 Vision/doc/FPGA-installation.md create mode 100644 Vision/doc/FPGA-system.md diff --git a/Vision/.gitignore b/Vision/.gitignore new file mode 100644 index 0000000..59c4f92 --- /dev/null +++ b/Vision/.gitignore @@ -0,0 +1,11 @@ +*/db/* +*/output_files/* +*/incremental_db/* +*~ +*.bak +*/Qsys/synthesis/* +*/Qsys/testbench/* +*/simulation/* +**/obj/* +**/.metadata/* + diff --git a/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/Qsys.xml b/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/Qsys.xml new file mode 100644 index 0000000..2319421 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/Qsys.xml @@ -0,0 +1,2167 @@ + + + + eclipse + + + + + + + + + + + + external + true + + + 0 + dock.PlaceholderList + + + + + + + dock.CExternalizeArea + + + + + + + + + ccontrol north + true + + + + 0 + dock.PlaceholderList + + + + + + + dock.CContentArea.minimize + + + + + + + + + ccontrol south + true + + + + 0 + dock.PlaceholderList + + + + + + + dock.CContentArea.minimize + + + + + + + + + ccontrol east + true + + + + 0 + dock.PlaceholderList + + + + + + + dock.CContentArea.minimize + + + + + + + + + ccontrol center + true + + false + + + + + + + + + + + + + + + + + + + + + + + + + dock.CContentArea.center + + + + + + 0 + + 0 + dock.PlaceholderList + + + dock.single.IP\ Catalog + + true + + id + index + placeholder + + 0 + 0 + dock.single.IP\ Catalog + + + + + + + + + IP\ Catalog + + + + + + + + + + 0 + + 0 + dock.PlaceholderList + + + dock.single.Hierarchy + + true + + id + index + placeholder + + 0 + 0 + dock.single.Hierarchy + + + + + + + + + Hierarchy + + + + + + + + + + 0 + + 0 + dock.PlaceholderList + + + dock.single.System\ Contents + + true + + id + index + placeholder + + 0 + 0 + dock.single.System\ Contents + + + + dock.single.Address\ Map + + true + + id + index + placeholder + + 1 + 1 + dock.single.Address\ Map + + + + dock.single.Instrumentation + + true + + id + index + placeholder + + 2 + 2 + dock.single.Instrumentation + + + + dock.single.Clock\ Settings + + true + + id + index + placeholder + + 3 + 3 + dock.single.Clock\ Settings + + + + dock.single.Instance\ Parameters + + true + + id + index + placeholder + + 4 + 4 + dock.single.Instance\ Parameters + + + + dock.single.HDL\ Example + + true + + id + index + placeholder + + 6 + 6 + dock.single.HDL\ Example + + + + dock.single.Generation + + true + + id + index + placeholder + + 7 + 7 + dock.single.Generation + + + + dock.single.Connections + + true + + id + index + placeholder + + 8 + 8 + dock.single.Connections + + + + dock.single.Domains + + true + + id + index + placeholder + + 10 + 10 + dock.single.Domains + + + + + + + + + System Contents + + + + + + + + + + Address Map + + + + + + + + + + Instrumentation + + + + + + + + + + Clock Settings + + + + + + + + + + Instance Parameters + + + + + + + + + + HDL Example + + + + + + + + + + Generation + + + + + + + + + + Connections + + + + + + + + + + Domains + + + + + + + + + + 0 + + 0 + dock.PlaceholderList + + + dock.single.Parameter\ Editor + + true + + id + index + placeholder + + 0 + 0 + dock.single.Parameter\ Editor + + + + + + + + + Parameter Editor + + + + + + + + + + 0 + + 0 + dock.PlaceholderList + + + dock.single.Block\ Symbol + + true + + id + index + placeholder + + 0 + 0 + dock.single.Block\ Symbol + + + + dock.single.Element\ Docs + + true + + id + index + placeholder + + 1 + 1 + dock.single.Element\ Docs + + + + + + + + + Block Symbol + + + + + + + + + + Element Docs + + + + + + + + + + 0 + + 0 + dock.PlaceholderList + + + dock.single.Presets + + true + + id + index + placeholder + + 0 + 0 + dock.single.Presets + + + + + + + + + Presets + + + + + + + + + + 0 + + 0 + dock.PlaceholderList + + + dock.single.Messages + + true + + id + index + placeholder + + 0 + 0 + dock.single.Messages + + + + + + + + + Messages + + + + + + + + + + + + + + ccontrol west + true + + + + 0 + dock.PlaceholderList + + + + + + + dock.CContentArea.minimize + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + 0 + dock.PlaceholderList + + + + + + + dock.CExternalizeArea + + + + + + + + + true + + + + 0 + dock.PlaceholderList + + + dock.single.Hierarchy + + + + + dock.single.Clock\ Domains\ \-\ Beta + dock.single.IP\ Catalog + dock.single.Reset\ Domains\ \-\ Beta + + + 0 + dock.PlaceholderList + + + dock.single.IP\ Catalog + + + + + dock.single.Reset\ Domains\ \-\ Beta + + + + + dock.single.Clock\ Domains\ \-\ Beta + + + + + + + dock.single.Interconnect\ Requirements + + + + + + + + + dock.CContentArea.minimize + + + + + + + + + true + + + + 0 + dock.PlaceholderList + + + + + + + dock.CContentArea.minimize + + + + + + + + + true + + + + 0 + dock.PlaceholderList + + + + + + + dock.CContentArea.minimize + + + + + + + + + ccontrol center + true + + false + + + + + dock.single.Clock\ Domains\ \-\ Beta + dock.single.IP\ Catalog + dock.single.Reset\ Domains\ \-\ Beta + + + 0 + dock.PlaceholderList + + + dock.single.IP\ Catalog + + + + + dock.single.Clock\ Domains\ \-\ Beta + + + + + dock.single.Reset\ Domains\ \-\ Beta + + + + + + + dock.single.Hierarchy + + + 0 + dock.PlaceholderList + + + dock.single.Hierarchy + + true + + + + + dock.single.Device\ Family + + true + + + + + + + + + + + dock.single.Connections + dock.single.System\ Contents + dock.single.Assignments + dock.single.Schematic + dock.single.Clocks + dock.single.Interface\ Requirements\ \-\ Alpha + dock.single.Generation + dock.single.Clock\ Settings + dock.single.Instrumentation\ \-\ Beta + dock.single.HDL\ Example + dock.single.Clock\ Domains + dock.single.Interface\ Requirements + dock.single.Interconnect\ Requirements + dock.single.Instrumentation + dock.single.Instance\ Parameters + dock.single.Domains + + + 0 + dock.PlaceholderList + + + dock.single.System\ Contents + + true + + + + + dock.single.Address\ Map + + true + + + + + dock.single.Interconnect\ Requirements + + true + + + + + + + dock.single.Parameter\ Editor + + + + + + + dock.single.Parameters + dock.single.Details + dock.single.Block\ Symbol + dock.single.Presets + + + 0 + dock.PlaceholderList + + + dock.single.Block\ Symbol + + + + + dock.single.Parameters + + + + + dock.single.Details + + + + + dock.single.Presets + + + + + + + dock.single.Element\ Docs + + + + + + + dock.single.Messages + dock.single.Generation\ Messages + + + 0 + dock.PlaceholderList + + + dock.single.Messages + + + + + dock.single.Generation\ Messages + + + + + + + + + + + + dock.CContentArea.center + + + + + + + + Messages + + + + + + + + + + IP Catalog + + + + + + + + 0 + + 0 + dock.PlaceholderList + + + dock.single.Hierarchy + + true + + index + id + placeholder + + 0 + 0 + dock.single.Hierarchy + + + + dock.single.Device\ Family + + true + + index + id + placeholder + + 1 + 1 + dock.single.Device\ Family + + + + + + + + + Hierarchy + + + + + + + + + + Device Family + + + + + + + + + + + + Parameters + + + + + + + + 1 + + 0 + dock.PlaceholderList + + + dock.single.System\ Contents + + true + + index + id + placeholder + + 0 + 0 + dock.single.System\ Contents + + + + dock.single.Address\ Map + + true + + index + id + placeholder + + 1 + 1 + dock.single.Address\ Map + + + + dock.single.Interconnect\ Requirements + + true + + index + id + placeholder + + 2 + 2 + dock.single.Interconnect\ Requirements + + + + dock.single.Assignments + + + + + dock.single.Connections + + + + + dock.single.Instance\ Parameters + + + + + dock.single.Instrumentation\ \-\ Beta + + + + + dock.single.Schematic + + + + + + + + + + System Contents + + + + + + + + + + Address Map + + + + + + + + + + Interconnect Requirements + + + + + + + + + + + + + + true + + + + 0 + dock.PlaceholderList + + + + + + + dock.CContentArea.minimize + + + + + + + + + + dock.single.Details + + + + + + + + + + 1 + dock.single.Details + + + + + + + Details + + + + + + + + + + dock.single.Assignments + + + + + + + + + + 3 + dock.single.Assignments + + + + + + + Assignments + + + + + + + + + + dock.single.Schematic + + + + + + + + + + 7 + dock.single.Schematic + + + + + + + Schematic + + + + + + + + + + dock.single.Presets + + + + + + + + + + 3 + dock.single.Presets + + + + + + + Presets + + + + + + + + + + dock.single.Clock\ Domains\ \-\ Beta + + + + + + + + 1 + dock.single.Clock\ Domains\ \-\ Beta + + + + + + + Clock Domains - Beta + + + + + + + + + + dock.single.Generation\ Messages + + + + + + + + 1 + dock.single.Generation\ Messages + + + + + + + Generation Messages + + + + + + + + + + dock.single.Connections + + + + + + + + + + 4 + dock.single.Connections + + + + + + + Connections + + + + + + + + + + dock.single.Instance\ Parameters + + + + + + + + + + 5 + dock.single.Instance\ Parameters + + + + + + + Instance Parameters + + + + + + + + + + dock.single.Instrumentation\ \-\ Beta + + + + + + + + + + 6 + dock.single.Instrumentation\ \-\ Beta + + + + + + + Instrumentation - Beta + + + + + + + + + + dock.single.Block\ Symbol + + + + + + + + + + + + + + Block Symbol + + + + + + + + + + dock.single.Reset\ Domains\ \-\ Beta + + + + + + + + 1 + dock.single.Reset\ Domains\ \-\ Beta + + + + + + + Reset Domains - Beta + + + + + + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Details + + + + + + + + + + 1 + dock.single.Details + + + + + + + + dock.mode.minimized + dock.mode.normal + + + + dock.mode.minimized + ccontrol west + + + 0 + false + 400 + dock.single.Parameters + + + + + dock.mode.normal + ccontrol center + + + dock.single.Parameters + + + + + + + + + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Assignments + + + + + + + + + + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Address\ Map + + + + + + + + + + + 1 + dock.single.Address\ Map + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Schematic + + + + + + + + + + + 4 + dock.single.Schematic + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Presets + + + + + + + + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Messages + + + + + + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Device\ Family + + + + + + + + + + + + 4 + dock.single.Device\ Family + + + + + + + + dock.mode.maximized + dock.mode.minimized + dock.mode.normal + + + + dock.mode.maximized + ccontrol center + + + + 0 + dock.single.Clock\ Domains\ \-\ Beta + + + + + dock.mode.minimized + ccontrol north + + + 0 + false + 400 + dock.single.Clock\ Domains\ \-\ Beta + + + 0 + dock.single.Clock\ Domains\ \-\ Beta + + + + + dock.mode.normal + ccontrol center + + + dock.single.Clock\ Domains\ \-\ Beta + + + + + + + + 2 + dock.single.Clock\ Domains\ \-\ Beta + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Generation\ Messages + + + + + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Connections + + + + + + + + + + 5 + dock.single.Connections + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.System\ Contents + + + + + + + + + + + 0 + dock.single.System\ Contents + + + + + + + + dock.mode.minimized + dock.mode.normal + + + + dock.mode.minimized + ccontrol north + + + 0 + false + 400 + dock.single.Interconnect\ Requirements + + + + + dock.mode.normal + ccontrol center + + + dock.single.Interconnect\ Requirements + + + + + + + + + + 2 + dock.single.Interconnect\ Requirements + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Instrumentation\ \-\ Beta + + + + + + + + + + + 4 + dock.single.Instrumentation\ \-\ Beta + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Instance\ Parameters + + + + + + + + + + + 4 + dock.single.Instance\ Parameters + + + + + + + + dock.mode.maximized + dock.mode.minimized + dock.mode.normal + + + + dock.mode.maximized + ccontrol center + + + + 0 + dock.single.IP\ Catalog + + + + + dock.mode.minimized + ccontrol north + + + 0 + false + 400 + dock.single.IP\ Catalog + + + 0 + dock.single.IP\ Catalog + + + + + dock.mode.normal + ccontrol center + + + dock.single.IP\ Catalog + + + + + + + + 0 + dock.single.IP\ Catalog + + + + + + + + dock.mode.minimized + dock.mode.normal + + + + dock.mode.minimized + ccontrol north + + + 0 + false + 400 + dock.single.Hierarchy + + + + + dock.mode.normal + ccontrol center + + + dock.single.Hierarchy + + + + + + + + + + + + + dock.mode.normal + + + + dock.mode.normal + ccontrol center + + + dock.single.Block\ Symbol + + + + + + + + + + 1 + dock.single.Block\ Symbol + + + + + + + + dock.mode.maximized + dock.mode.minimized + dock.mode.normal + + + + dock.mode.maximized + ccontrol center + + + + 1 + dock.single.Reset\ Domains\ \-\ Beta + + + + + dock.mode.minimized + ccontrol north + + + 0 + false + 400 + dock.single.Reset\ Domains\ \-\ Beta + + + 1 + dock.single.Reset\ Domains\ \-\ Beta + + + + + dock.mode.normal + ccontrol center + + + dock.single.Reset\ Domains\ \-\ Beta + + + + + + + + 1 + dock.single.Reset\ Domains\ \-\ Beta + + + + + + + + + + + dock.mode.normal + + dock.mode.normal + ccontrol center + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/Qsys_schematic.nlv b/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/Qsys_schematic.nlv new file mode 100644 index 0000000..8cf3162 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/Qsys_schematic.nlv @@ -0,0 +1,54 @@ +# # File gsaved with Nlview version 6.3.8 2013-12-19 bk=1.2992 VDI=34 GEI=35 +# +preplace inst Qsys.nios2_gen2.clock_bridge -pg 1 +preplace inst Qsys.altpll_0 -pg 1 -lvl 3 -y 250 +preplace inst Qsys.i2c_opencores_camera -pg 1 -lvl 7 -y 30 +preplace inst Qsys.alt_vip_itc_0 -pg 1 -lvl 7 -y 810 +preplace inst Qsys.onchip_memory2_0 -pg 1 -lvl 7 -y 540 +preplace inst Qsys.led -pg 1 -lvl 7 -y 1390 +preplace inst Qsys.clk_50 -pg 1 -lvl 1 -y 720 +preplace inst Qsys.sysid_qsys -pg 1 -lvl 7 -y 1010 +preplace inst Qsys.sdram -pg 1 -lvl 7 -y 910 +preplace inst Qsys.nios2_gen2.reset_bridge -pg 1 +preplace inst Qsys.jtag_uart -pg 1 -lvl 7 -y 330 +preplace inst Qsys.TERASIC_CAMERA_0 -pg 1 -lvl 4 -y 740 +preplace inst Qsys.mipi_reset_n -pg 1 -lvl 7 -y 1190 +preplace inst Qsys.alt_vip_vfb_0 -pg 1 -lvl 5 -y 620 +preplace inst Qsys -pg 1 -lvl 1 -y 40 -regy -20 +preplace inst Qsys.timer -pg 1 -lvl 7 -y 440 +preplace inst Qsys.mipi_pwdn_n -pg 1 -lvl 7 -y 1090 +preplace inst Qsys.key -pg 1 -lvl 7 -y 620 +preplace inst Qsys.sw -pg 1 -lvl 7 -y 1290 +preplace inst Qsys.TERASIC_AUTO_FOCUS_0 -pg 1 -lvl 6 -y 560 +preplace inst Qsys.nios2_gen2.cpu -pg 1 +preplace inst Qsys.nios2_gen2 -pg 1 -lvl 2 -y 470 +preplace inst Qsys.i2c_opencores_mipi -pg 1 -lvl 7 -y 170 +preplace netloc INTERCONNECTQsys(SLAVE)sdram.reset,(SLAVE)alt_vip_vfb_0.reset,(SLAVE)led.reset,(MASTER)nios2_gen2.debug_reset_request,(SLAVE)mipi_pwdn_n.reset,(MASTER)clk_50.clk_reset,(SLAVE)mipi_reset_n.reset,(SLAVE)sysid_qsys.reset,(SLAVE)i2c_opencores_mipi.clock_reset,(SLAVE)sw.reset,(SLAVE)key.reset,(SLAVE)alt_vip_itc_0.is_clk_rst_reset,(SLAVE)nios2_gen2.reset,(SLAVE)i2c_opencores_camera.clock_reset,(SLAVE)jtag_uart.reset,(SLAVE)altpll_0.inclk_interface_reset,(SLAVE)TERASIC_AUTO_FOCUS_0.reset,(SLAVE)onchip_memory2_0.reset1,(SLAVE)TERASIC_CAMERA_0.clock_reset_reset,(SLAVE)timer.reset) 1 1 6 430 670 870 530 1170 730 1650 730 1890 800 2230 +preplace netloc POINT_TO_POINTQsys(SLAVE)alt_vip_itc_0.din,(MASTER)TERASIC_AUTO_FOCUS_0.dout) 1 6 1 2190 +preplace netloc EXPORTQsys(SLAVE)clk_50.clk_in_reset,(SLAVE)Qsys.reset) 1 0 1 NJ +preplace netloc EXPORTQsys(SLAVE)i2c_opencores_camera.export,(SLAVE)Qsys.i2c_opencores_camera_export) 1 0 7 NJ 100 NJ 100 NJ 100 NJ 100 NJ 100 NJ 100 NJ +preplace netloc EXPORTQsys(SLAVE)sdram.wire,(SLAVE)Qsys.sdram_wire) 1 0 7 NJ 980 NJ 980 NJ 980 NJ 980 NJ 980 NJ 980 NJ +preplace netloc EXPORTQsys(SLAVE)led.external_connection,(SLAVE)Qsys.led_external_connection) 1 0 7 NJ 1420 NJ 1420 NJ 1420 NJ 1420 NJ 1420 NJ 1420 NJ +preplace netloc EXPORTQsys(MASTER)Qsys.clk_sdram,(MASTER)altpll_0.c1) 1 3 5 NJ 210 NJ 210 NJ 210 NJ 160 NJ +preplace netloc EXPORTQsys(SLAVE)Qsys.altpll_0_locked_conduit,(SLAVE)altpll_0.locked_conduit) 1 0 3 NJ 410 NJ 410 NJ +preplace netloc EXPORTQsys(SLAVE)TERASIC_AUTO_FOCUS_0.Conduit,(SLAVE)Qsys.terasic_auto_focus_0_conduit) 1 0 6 NJ 630 NJ 630 NJ 570 NJ 570 NJ 570 NJ +preplace netloc EXPORTQsys(SLAVE)altpll_0.areset_conduit,(SLAVE)Qsys.altpll_0_areset_conduit) 1 0 3 NJ 260 NJ 260 NJ +preplace netloc EXPORTQsys(SLAVE)mipi_reset_n.external_connection,(SLAVE)Qsys.mipi_reset_n_external_connection) 1 0 7 NJ 1220 NJ 1220 NJ 1220 NJ 1220 NJ 1220 NJ 1220 NJ +preplace netloc EXPORTQsys(SLAVE)Qsys.sw_external_connection,(SLAVE)sw.external_connection) 1 0 7 NJ 1320 NJ 1320 NJ 1320 NJ 1320 NJ 1320 NJ 1320 NJ +preplace netloc EXPORTQsys(SLAVE)Qsys.mipi_pwdn_n_external_connection,(SLAVE)mipi_pwdn_n.external_connection) 1 0 7 NJ 1120 NJ 1120 NJ 1120 NJ 1120 NJ 1120 NJ 1120 NJ +preplace netloc EXPORTQsys(MASTER)Qsys.clk_vga,(MASTER)altpll_0.c3) 1 3 5 NJ 360 NJ 360 NJ 360 NJ 320 NJ +preplace netloc EXPORTQsys(SLAVE)key.external_connection,(SLAVE)Qsys.key_external_connection) 1 0 7 NJ 650 NJ 650 NJ 650 NJ 650 NJ 750 NJ 750 NJ +preplace netloc EXPORTQsys(SLAVE)Qsys.i2c_opencores_mipi_export,(SLAVE)i2c_opencores_mipi.export) 1 0 7 NJ 240 NJ 240 NJ 240 NJ 240 NJ 240 NJ 240 NJ +preplace netloc EXPORTQsys(SLAVE)Qsys.alt_vip_itc_0_clocked_video,(SLAVE)alt_vip_itc_0.clocked_video) 1 0 7 NJ 830 NJ 830 NJ 830 NJ 830 NJ 820 NJ 820 NJ +preplace netloc FAN_OUTQsys(SLAVE)sdram.clk,(SLAVE)alt_vip_itc_0.is_clk_rst,(SLAVE)TERASIC_AUTO_FOCUS_0.clock,(SLAVE)alt_vip_vfb_0.clock,(SLAVE)TERASIC_CAMERA_0.clock_reset,(MASTER)altpll_0.c2) 1 3 4 1190 340 1630 710 1870 780 2150 +preplace netloc POINT_TO_POINTQsys(SLAVE)TERASIC_AUTO_FOCUS_0.din,(MASTER)alt_vip_vfb_0.dout) 1 5 1 1830 +preplace netloc EXPORTQsys(SLAVE)clk_50.clk_in,(SLAVE)Qsys.clk) 1 0 1 NJ +preplace netloc FAN_INQsys(MASTER)alt_vip_vfb_0.read_master,(MASTER)alt_vip_vfb_0.write_master,(SLAVE)sdram.s1) 1 5 2 1830 960 NJ +preplace netloc FAN_OUTQsys(SLAVE)jtag_uart.irq,(SLAVE)timer.irq,(MASTER)nios2_gen2.irq,(SLAVE)i2c_opencores_mipi.interrupt_sender,(SLAVE)i2c_opencores_camera.interrupt_sender) 1 2 5 NJ 550 NJ 550 NJ 550 NJ 550 2170 +preplace netloc POINT_TO_POINTQsys(MASTER)TERASIC_CAMERA_0.avalon_streaming_source,(SLAVE)alt_vip_vfb_0.din) 1 4 1 1610 +preplace netloc EXPORTQsys(MASTER)Qsys.d8m_xclkin,(MASTER)altpll_0.c4) 1 3 5 NJ 380 NJ 380 NJ 380 NJ 300 NJ +preplace netloc FAN_OUTQsys(SLAVE)altpll_0.inclk_interface,(SLAVE)i2c_opencores_camera.clock,(SLAVE)led.clk,(SLAVE)onchip_memory2_0.clk1,(SLAVE)timer.clk,(SLAVE)i2c_opencores_mipi.clock,(SLAVE)sw.clk,(SLAVE)sysid_qsys.clk,(SLAVE)mipi_pwdn_n.clk,(SLAVE)nios2_gen2.clk,(SLAVE)jtag_uart.clk,(MASTER)clk_50.clk,(SLAVE)mipi_reset_n.clk,(SLAVE)key.clk) 1 1 6 410 430 850 400 NJ 400 NJ 400 NJ 400 2210 +preplace netloc INTERCONNECTQsys(SLAVE)altpll_0.pll_slave,(SLAVE)led.s1,(SLAVE)jtag_uart.avalon_jtag_slave,(SLAVE)i2c_opencores_mipi.avalon_slave_0,(SLAVE)mipi_reset_n.s1,(MASTER)nios2_gen2.data_master,(SLAVE)sysid_qsys.control_slave,(SLAVE)timer.s1,(SLAVE)sw.s1,(SLAVE)onchip_memory2_0.s1,(SLAVE)key.s1,(SLAVE)mipi_pwdn_n.s1,(SLAVE)i2c_opencores_camera.avalon_slave_0,(SLAVE)TERASIC_AUTO_FOCUS_0.mm_ctrl,(MASTER)nios2_gen2.instruction_master,(SLAVE)nios2_gen2.debug_mem_slave) 1 1 6 450 610 890 510 NJ 510 NJ 510 1850 690 2130 +preplace netloc EXPORTQsys(SLAVE)Qsys.terasic_camera_0_conduit_end,(SLAVE)TERASIC_CAMERA_0.conduit_end) 1 0 4 NJ 790 NJ 790 NJ 790 NJ +levelinfo -pg 1 0 200 2570 +levelinfo -hier Qsys 210 240 590 980 1300 1680 1980 2320 2470 diff --git a/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/filters.xml b/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/filters.xml new file mode 100644 index 0000000..5ca182d --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/filters.xml @@ -0,0 +1,2 @@ + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/preferences.xml b/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/preferences.xml new file mode 100644 index 0000000..d057998 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/.qsys_edit/preferences.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/Chain.cdf b/Vision/DE10_LITE_D8M_VIP_16/Chain.cdf new file mode 100644 index 0000000..f7a1881 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Chain.cdf @@ -0,0 +1,13 @@ +/* Quartus Prime Version 16.1.0 Build 196 10/24/2016 SJ Lite Edition */ +JedecChain; + FileRevision(JESD32A); + DefaultMfr(6E); + + P ActionCode(Cfg) + Device PartName(10M50DAF484) Path("F:/Ed/Stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/output_files/") File("DE10_LITE_D8M_VIP_time_limited.sof") MfrSpec(OpMask(1)); + +ChainEnd; + +AlteraBegin; + ChainType(JTAG); +AlteraEnd; diff --git a/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.SDC b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.SDC new file mode 100644 index 0000000..cc5b110 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.SDC @@ -0,0 +1,128 @@ +#************************************************************** +# This .sdc file is created by Terasic Tool. +# Users are recommended to modify this file to match users logic. +#************************************************************** + +#************************************************************** +# Create Clock +#************************************************************** +create_clock -period "10.0 MHz" [get_ports ADC_CLK_10] +create_clock -period "50.0 MHz" [get_ports MAX10_CLK1_50] +create_clock -period "50.0 MHz" [get_ports MAX10_CLK2_50] + + +#SDRAM CLK +create_generated_clock -source [get_pins { u0|altpll_0|sd1|pll7|clk[1] }] \ + -name clk_dram_ext [get_ports {DRAM_CLK}] +#VGA CLK +#create_generated_clock -source [get_pins { u0|pll_sys|altera_pll_i|general[3].gpll~PLL_OUTPUT_COUNTER|divclk }] \ + -name clk_vga_ext [get_ports {VGA_CLK}] -invert +#D8M +create_clock -period "25.0 MHz" -name MIPI_PIXEL_CLK [get_ports MIPI_PIXEL_CLK] +create_clock -period "25.0 MHz" -name MIPI_PIXEL_CLK_ext + + +#************************************************************** +# Create Generated Clock +#************************************************************** +derive_pll_clocks + + + +#************************************************************** +# Set Clock Latency +#************************************************************** + + + +#************************************************************** +# Set Clock Uncertainty +#************************************************************** +derive_clock_uncertainty + + + +#************************************************************** +# Set Input Delay +#************************************************************** +# tpd min 1ns ,max 6ns +set_input_delay -max 6.0 -clock MIPI_PIXEL_CLK_ext [get_ports {MIPI_PIXEL_VS MIPI_PIXEL_HS MIPI_PIXEL_D[*]}] +set_input_delay -min 1.0 -clock MIPI_PIXEL_CLK_ext [get_ports {MIPI_PIXEL_VS MIPI_PIXEL_HS MIPI_PIXEL_D[*]}] + +# SDRAM +# max 5.4(max) +0.4(trace delay) +0.1 = 5.9 +# min 2.7(min) +0.4(trace delay) -0.1 = 3.0 +set_input_delay -max -clock clk_dram_ext 5.9 [get_ports DRAM_DQ*] +set_input_delay -min -clock clk_dram_ext 3.0 [get_ports DRAM_DQ*] +#shift-window +set_multicycle_path -from [get_clocks {clk_dram_ext}] \ + -to [get_clocks { u0|altpll_0|sd1|pll7|clk[2] }] \ + -setup 2 + +#************************************************************** +# Set Output Delay +#************************************************************** +# suppose +- 100 ps skew +# max : Board Delay (Data) - Board Delay (Clock) + tsu (External Device) +# min : Board Delay (Data) - Board Delay (Clock) - th (External Device) + +#SDRAM +# max 1.5+0.1 = 1.6 +# min -0.8-0.1 = -0.9 +set_output_delay -max -clock clk_dram_ext 1.6 [get_ports {DRAM_DQ* DRAM_*DQM}] +set_output_delay -min -clock clk_dram_ext -0.9 [get_ports {DRAM_DQ* DRAM_*DQM}] +set_output_delay -max -clock clk_dram_ext 1.6 [get_ports {DRAM_ADDR* DRAM_BA* DRAM_RAS_N DRAM_CAS_N DRAM_WE_N DRAM_CKE DRAM_CS_N}] +set_output_delay -min -clock clk_dram_ext -0.9 [get_ports {DRAM_ADDR* DRAM_BA* DRAM_RAS_N DRAM_CAS_N DRAM_WE_N DRAM_CKE DRAM_CS_N}] + +#VGA +# max 0.2+0.1 = 0.3 +# min -1.5-0.1 = -1.6 +set_output_delay -max -clock clk_vga_ext 0.3 [get_ports {VGA_R* VGA_G* VGA_B* VGA_HS VGA_VS}] +set_output_delay -min -clock clk_vga_ext -1.6 [get_ports {VGA_R* VGA_G* VGA_B* VGA_HS VGA_VS}] + + +#************************************************************** +# Set Clock Groups +#************************************************************** +set_clock_groups -asynchronous -group [get_clocks { u0|altpll_0|sd1|pll7|clk[2] }] \ + -group [get_clocks {MIPI_PIXEL_CLK}] + + +#************************************************************** +# Set False Path +#************************************************************** +set_false_path -from [get_ports {KEY* SW*}] -to * +set_false_path -from * -to [get_ports {LED* HEX*}] + + + +#************************************************************** +# Set Multicycle Path +#************************************************************** + + + +#************************************************************** +# Set Maximum Delay +#************************************************************** + + + +#************************************************************** +# Set Minimum Delay +#************************************************************** + + + +#************************************************************** +# Set Input Transition +#************************************************************** + + + +#************************************************************** +# Set Load +#************************************************************** + + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.htm b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.htm new file mode 100644 index 0000000..b8e6933 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.htm @@ -0,0 +1,1193 @@ + + +

DE10-Lite Kit Configuration

+
+
+

Pin Assignments:

+ +
+
+
+

Pin Assignment Table:

+

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CLOCK
NameLocationDirectionStandard
ADC_CLK_10N5input 3.3-V LVTTL
MAX10_CLK1_50P11input 3.3-V LVTTL
MAX10_CLK2_50N14input 3.3-V LVTTL
+

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SDRAM
NameLocationDirectionStandard
DRAM_ADDR[0]U17output3.3-V LVTTL
DRAM_ADDR[1]W19output3.3-V LVTTL
DRAM_ADDR[2]V18output3.3-V LVTTL
DRAM_ADDR[3]U18output3.3-V LVTTL
DRAM_ADDR[4]U19output3.3-V LVTTL
DRAM_ADDR[5]T18output3.3-V LVTTL
DRAM_ADDR[6]T19output3.3-V LVTTL
DRAM_ADDR[7]R18output3.3-V LVTTL
DRAM_ADDR[8]P18output3.3-V LVTTL
DRAM_ADDR[9]P19output3.3-V LVTTL
DRAM_ADDR[10]T20output3.3-V LVTTL
DRAM_ADDR[11]P20output3.3-V LVTTL
DRAM_ADDR[12]R20output3.3-V LVTTL
DRAM_BA[0]T21output3.3-V LVTTL
DRAM_BA[1]T22output3.3-V LVTTL
DRAM_CAS_NU21output3.3-V LVTTL
DRAM_CKEN22output3.3-V LVTTL
DRAM_CLKL14output3.3-V LVTTL
DRAM_CS_NU20output3.3-V LVTTL
DRAM_DQ[0]Y21inout 3.3-V LVTTL
DRAM_DQ[1]Y20inout 3.3-V LVTTL
DRAM_DQ[2]AA22inout 3.3-V LVTTL
DRAM_DQ[3]AA21inout 3.3-V LVTTL
DRAM_DQ[4]Y22inout 3.3-V LVTTL
DRAM_DQ[5]W22inout 3.3-V LVTTL
DRAM_DQ[6]W20inout 3.3-V LVTTL
DRAM_DQ[7]V21inout 3.3-V LVTTL
DRAM_DQ[8]P21inout 3.3-V LVTTL
DRAM_DQ[9]J22inout 3.3-V LVTTL
DRAM_DQ[10]H21inout 3.3-V LVTTL
DRAM_DQ[11]H22inout 3.3-V LVTTL
DRAM_DQ[12]G22inout 3.3-V LVTTL
DRAM_DQ[13]G20inout 3.3-V LVTTL
DRAM_DQ[14]G19inout 3.3-V LVTTL
DRAM_DQ[15]F22inout 3.3-V LVTTL
DRAM_LDQMV22output3.3-V LVTTL
DRAM_RAS_NU22output3.3-V LVTTL
DRAM_UDQMJ21output3.3-V LVTTL
DRAM_WE_NV20output3.3-V LVTTL
+

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SEG7
NameLocationDirectionStandard
HEX0[0]C14output3.3-V LVTTL
HEX0[1]E15output3.3-V LVTTL
HEX0[2]C15output3.3-V LVTTL
HEX0[3]C16output3.3-V LVTTL
HEX0[4]E16output3.3-V LVTTL
HEX0[5]D17output3.3-V LVTTL
HEX0[6]C17output3.3-V LVTTL
HEX0[7]D15output3.3-V LVTTL
HEX1[0]C18output3.3-V LVTTL
HEX1[1]D18output3.3-V LVTTL
HEX1[2]E18output3.3-V LVTTL
HEX1[3]B16output3.3-V LVTTL
HEX1[4]A17output3.3-V LVTTL
HEX1[5]A18output3.3-V LVTTL
HEX1[6]B17output3.3-V LVTTL
HEX1[7]A16output3.3-V LVTTL
HEX2[0]B20output3.3-V LVTTL
HEX2[1]A20output3.3-V LVTTL
HEX2[2]B19output3.3-V LVTTL
HEX2[3]A21output3.3-V LVTTL
HEX2[4]B21output3.3-V LVTTL
HEX2[5]C22output3.3-V LVTTL
HEX2[6]B22output3.3-V LVTTL
HEX2[7]A19output3.3-V LVTTL
HEX3[0]F21output3.3-V LVTTL
HEX3[1]E22output3.3-V LVTTL
HEX3[2]E21output3.3-V LVTTL
HEX3[3]C19output3.3-V LVTTL
HEX3[4]C20output3.3-V LVTTL
HEX3[5]D19output3.3-V LVTTL
HEX3[6]E17output3.3-V LVTTL
HEX3[7]D22output3.3-V LVTTL
HEX4[0]F18output3.3-V LVTTL
HEX4[1]E20output3.3-V LVTTL
HEX4[2]E19output3.3-V LVTTL
HEX4[3]J18output3.3-V LVTTL
HEX4[4]H19output3.3-V LVTTL
HEX4[5]F19output3.3-V LVTTL
HEX4[6]F20output3.3-V LVTTL
HEX4[7]F17output3.3-V LVTTL
HEX5[0]J20output3.3-V LVTTL
HEX5[1]K20output3.3-V LVTTL
HEX5[2]L18output3.3-V LVTTL
HEX5[3]N18output3.3-V LVTTL
HEX5[4]M20output3.3-V LVTTL
HEX5[5]N19output3.3-V LVTTL
HEX5[6]N20output3.3-V LVTTL
HEX5[7]L19output3.3-V LVTTL
+

+ +
+
+ + + + + + + + + + + + + + + + + + +
KEY
NameLocationDirectionStandard
KEY[0]B8input 3.3 V Schmitt Trigger
KEY[1]A7input 3.3 V Schmitt Trigger
+

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LED
NameLocationDirectionStandard
LEDR[0]A8output3.3-V LVTTL
LEDR[1]A9output3.3-V LVTTL
LEDR[2]A10output3.3-V LVTTL
LEDR[3]B10output3.3-V LVTTL
LEDR[4]D13output3.3-V LVTTL
LEDR[5]C13output3.3-V LVTTL
LEDR[6]E14output3.3-V LVTTL
LEDR[7]D14output3.3-V LVTTL
LEDR[8]A11output3.3-V LVTTL
LEDR[9]B11output3.3-V LVTTL
+

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SW
NameLocationDirectionStandard
SW[0]C10input 3.3-V LVTTL
SW[1]C11input 3.3-V LVTTL
SW[2]D12input 3.3-V LVTTL
SW[3]C12input 3.3-V LVTTL
SW[4]A12input 3.3-V LVTTL
SW[5]B12input 3.3-V LVTTL
SW[6]A13input 3.3-V LVTTL
SW[7]A14input 3.3-V LVTTL
SW[8]B14input 3.3-V LVTTL
SW[9]F15input 3.3-V LVTTL
+

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VGA
NameLocationDirectionStandard
VGA_B[0]P1output3.3-V LVTTL
VGA_B[1]T1output3.3-V LVTTL
VGA_B[2]P4output3.3-V LVTTL
VGA_B[3]N2output3.3-V LVTTL
VGA_G[0]W1output3.3-V LVTTL
VGA_G[1]T2output3.3-V LVTTL
VGA_G[2]R2output3.3-V LVTTL
VGA_G[3]R1output3.3-V LVTTL
VGA_HSN3output3.3-V LVTTL
VGA_R[0]AA1output3.3-V LVTTL
VGA_R[1]V1output3.3-V LVTTL
VGA_R[2]Y2output3.3-V LVTTL
VGA_R[3]Y1output3.3-V LVTTL
VGA_VSN1output3.3-V LVTTL
+

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Accelerometer
NameLocationDirectionStandard
GSENSOR_CS_NAB16output3.3-V LVTTL
GSENSOR_INT[1]Y14input 3.3-V LVTTL
GSENSOR_INT[2]Y13input 3.3-V LVTTL
GSENSOR_SCLKAB15output3.3-V LVTTL
GSENSOR_SDIV11inout 3.3-V LVTTL
GSENSOR_SDOV12inout 3.3-V LVTTL
+

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Arduino
NameLocationDirectionStandard
ARDUINO_IO[0]AB5inout 3.3-V LVTTL
ARDUINO_IO[1]AB6inout 3.3-V LVTTL
ARDUINO_IO[2]AB7inout 3.3-V LVTTL
ARDUINO_IO[3]AB8inout 3.3-V LVTTL
ARDUINO_IO[4]AB9inout 3.3-V LVTTL
ARDUINO_IO[5]Y10inout 3.3-V LVTTL
ARDUINO_IO[6]AA11inout 3.3-V LVTTL
ARDUINO_IO[7]AA12inout 3.3-V LVTTL
ARDUINO_IO[8]AB17inout 3.3-V LVTTL
ARDUINO_IO[9]AA17inout 3.3-V LVTTL
ARDUINO_IO[10]AB19inout 3.3-V LVTTL
ARDUINO_IO[11]AA19inout 3.3-V LVTTL
ARDUINO_IO[12]Y19inout 3.3-V LVTTL
ARDUINO_IO[13]AB20inout 3.3-V LVTTL
ARDUINO_IO[14]AB21inout 3.3-V LVTTL
ARDUINO_IO[15]AA20inout 3.3-V LVTTL
ARDUINO_RESET_NF16inout 3.3-V LVTTL
+

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GPIO connect to D8M-GPIO
NameLocationDirectionStandardGPIO Pin Index
CAMERA_I2C_SCLAA7inout 3.3-V LVTTL31
CAMERA_I2C_SDAY6inout 3.3-V LVTTL32
CAMERA_PWDN_nY7output3.3-V LVTTL28
MIPI_CS_nY8output3.3-V LVTTL26
MIPI_I2C_SCLAA5inout 3.3-V LVTTL35
MIPI_I2C_SDAY4inout 3.3-V LVTTL36
MIPI_MCLKAA6output3.3-V LVTTL33
MIPI_PIXEL_CLKV10input 3.3-V LVTTL1
MIPI_PIXEL_D[0]W9input 3.3-V LVTTL4
MIPI_PIXEL_D[1]V8input 3.3-V LVTTL5
MIPI_PIXEL_D[2]W8input 3.3-V LVTTL6
MIPI_PIXEL_D[3]V7input 3.3-V LVTTL7
MIPI_PIXEL_D[4]W7input 3.3-V LVTTL8
MIPI_PIXEL_D[5]W6input 3.3-V LVTTL9
MIPI_PIXEL_D[6]V5input 3.3-V LVTTL10
MIPI_PIXEL_D[7]W5input 3.3-V LVTTL13
MIPI_PIXEL_D[8]AA15input 3.3-V LVTTL14
MIPI_PIXEL_D[9]AA14input 3.3-V LVTTL15
MIPI_PIXEL_HSAA9input 3.3-V LVTTL25
MIPI_PIXEL_VSAB10input 3.3-V LVTTL23
MIPI_REFCLKAB11output3.3-V LVTTL21
MIPI_RESET_nAA8output3.3-V LVTTL27
+ + diff --git a/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qpf b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qpf new file mode 100644 index 0000000..f8d6c57 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qpf @@ -0,0 +1,6 @@ +DATE = "15:21:37 August 23, 2016" +QUARTUS_VERSION = "15.1.0" + +# Revisions + +PROJECT_REVISION = "DE10_LITE_D8M_VIP" diff --git a/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qsf b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qsf new file mode 100644 index 0000000..f5e15d6 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qsf @@ -0,0 +1,426 @@ +#============================================================ +# Build by Terasic System Builder +#============================================================ + +set_global_assignment -name FAMILY "MAX 10" +set_global_assignment -name DEVICE 10M50DAF484C7G +set_global_assignment -name TOP_LEVEL_ENTITY DE10_LITE_D8M_VIP +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 15.1.0 +set_global_assignment -name LAST_QUARTUS_VERSION "16.1.0 Lite Edition" +set_global_assignment -name PROJECT_CREATION_TIME_DATE "15:21:37 AUGUST 23,2016" +set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 484 +#set_global_assignment -name ENABLE_ERAM_PRELOAD ON + +#============================================================ +# CLOCK +#============================================================ +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ADC_CLK_10 +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MAX10_CLK1_50 +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MAX10_CLK2_50 +set_location_assignment PIN_N5 -to ADC_CLK_10 +set_location_assignment PIN_P11 -to MAX10_CLK1_50 +set_location_assignment PIN_N14 -to MAX10_CLK2_50 + +#============================================================ +# SDRAM +#============================================================ +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[8] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[9] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[10] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[11] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[12] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_BA[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_BA[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CAS_N +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CKE +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CLK +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CS_N +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[8] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[9] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[10] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[11] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[12] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[13] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[14] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[15] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_LDQM +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_RAS_N +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_UDQM +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_WE_N +set_location_assignment PIN_U17 -to DRAM_ADDR[0] +set_location_assignment PIN_W19 -to DRAM_ADDR[1] +set_location_assignment PIN_V18 -to DRAM_ADDR[2] +set_location_assignment PIN_U18 -to DRAM_ADDR[3] +set_location_assignment PIN_U19 -to DRAM_ADDR[4] +set_location_assignment PIN_T18 -to DRAM_ADDR[5] +set_location_assignment PIN_T19 -to DRAM_ADDR[6] +set_location_assignment PIN_R18 -to DRAM_ADDR[7] +set_location_assignment PIN_P18 -to DRAM_ADDR[8] +set_location_assignment PIN_P19 -to DRAM_ADDR[9] +set_location_assignment PIN_T20 -to DRAM_ADDR[10] +set_location_assignment PIN_P20 -to DRAM_ADDR[11] +set_location_assignment PIN_R20 -to DRAM_ADDR[12] +set_location_assignment PIN_T21 -to DRAM_BA[0] +set_location_assignment PIN_T22 -to DRAM_BA[1] +set_location_assignment PIN_U21 -to DRAM_CAS_N +set_location_assignment PIN_N22 -to DRAM_CKE +set_location_assignment PIN_L14 -to DRAM_CLK +set_location_assignment PIN_U20 -to DRAM_CS_N +set_location_assignment PIN_Y21 -to DRAM_DQ[0] +set_location_assignment PIN_Y20 -to DRAM_DQ[1] +set_location_assignment PIN_AA22 -to DRAM_DQ[2] +set_location_assignment PIN_AA21 -to DRAM_DQ[3] +set_location_assignment PIN_Y22 -to DRAM_DQ[4] +set_location_assignment PIN_W22 -to DRAM_DQ[5] +set_location_assignment PIN_W20 -to DRAM_DQ[6] +set_location_assignment PIN_V21 -to DRAM_DQ[7] +set_location_assignment PIN_P21 -to DRAM_DQ[8] +set_location_assignment PIN_J22 -to DRAM_DQ[9] +set_location_assignment PIN_H21 -to DRAM_DQ[10] +set_location_assignment PIN_H22 -to DRAM_DQ[11] +set_location_assignment PIN_G22 -to DRAM_DQ[12] +set_location_assignment PIN_G20 -to DRAM_DQ[13] +set_location_assignment PIN_G19 -to DRAM_DQ[14] +set_location_assignment PIN_F22 -to DRAM_DQ[15] +set_location_assignment PIN_V22 -to DRAM_LDQM +set_location_assignment PIN_U22 -to DRAM_RAS_N +set_location_assignment PIN_J21 -to DRAM_UDQM +set_location_assignment PIN_V20 -to DRAM_WE_N + +#============================================================ +# SEG7 +#============================================================ +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[7] +set_location_assignment PIN_C14 -to HEX0[0] +set_location_assignment PIN_E15 -to HEX0[1] +set_location_assignment PIN_C15 -to HEX0[2] +set_location_assignment PIN_C16 -to HEX0[3] +set_location_assignment PIN_E16 -to HEX0[4] +set_location_assignment PIN_D17 -to HEX0[5] +set_location_assignment PIN_C17 -to HEX0[6] +set_location_assignment PIN_D15 -to HEX0[7] +set_location_assignment PIN_C18 -to HEX1[0] +set_location_assignment PIN_D18 -to HEX1[1] +set_location_assignment PIN_E18 -to HEX1[2] +set_location_assignment PIN_B16 -to HEX1[3] +set_location_assignment PIN_A17 -to HEX1[4] +set_location_assignment PIN_A18 -to HEX1[5] +set_location_assignment PIN_B17 -to HEX1[6] +set_location_assignment PIN_A16 -to HEX1[7] +set_location_assignment PIN_B20 -to HEX2[0] +set_location_assignment PIN_A20 -to HEX2[1] +set_location_assignment PIN_B19 -to HEX2[2] +set_location_assignment PIN_A21 -to HEX2[3] +set_location_assignment PIN_B21 -to HEX2[4] +set_location_assignment PIN_C22 -to HEX2[5] +set_location_assignment PIN_B22 -to HEX2[6] +set_location_assignment PIN_A19 -to HEX2[7] +set_location_assignment PIN_F21 -to HEX3[0] +set_location_assignment PIN_E22 -to HEX3[1] +set_location_assignment PIN_E21 -to HEX3[2] +set_location_assignment PIN_C19 -to HEX3[3] +set_location_assignment PIN_C20 -to HEX3[4] +set_location_assignment PIN_D19 -to HEX3[5] +set_location_assignment PIN_E17 -to HEX3[6] +set_location_assignment PIN_D22 -to HEX3[7] +set_location_assignment PIN_F18 -to HEX4[0] +set_location_assignment PIN_E20 -to HEX4[1] +set_location_assignment PIN_E19 -to HEX4[2] +set_location_assignment PIN_J18 -to HEX4[3] +set_location_assignment PIN_H19 -to HEX4[4] +set_location_assignment PIN_F19 -to HEX4[5] +set_location_assignment PIN_F20 -to HEX4[6] +set_location_assignment PIN_F17 -to HEX4[7] +set_location_assignment PIN_J20 -to HEX5[0] +set_location_assignment PIN_K20 -to HEX5[1] +set_location_assignment PIN_L18 -to HEX5[2] +set_location_assignment PIN_N18 -to HEX5[3] +set_location_assignment PIN_M20 -to HEX5[4] +set_location_assignment PIN_N19 -to HEX5[5] +set_location_assignment PIN_N20 -to HEX5[6] +set_location_assignment PIN_L19 -to HEX5[7] + +#============================================================ +# KEY +#============================================================ +set_instance_assignment -name IO_STANDARD "3.3 V SCHMITT TRIGGER" -to KEY[0] +set_instance_assignment -name IO_STANDARD "3.3 V SCHMITT TRIGGER" -to KEY[1] +set_location_assignment PIN_B8 -to KEY[0] +set_location_assignment PIN_A7 -to KEY[1] + +#============================================================ +# LED +#============================================================ +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[8] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[9] +set_location_assignment PIN_A8 -to LEDR[0] +set_location_assignment PIN_A9 -to LEDR[1] +set_location_assignment PIN_A10 -to LEDR[2] +set_location_assignment PIN_B10 -to LEDR[3] +set_location_assignment PIN_D13 -to LEDR[4] +set_location_assignment PIN_C13 -to LEDR[5] +set_location_assignment PIN_E14 -to LEDR[6] +set_location_assignment PIN_D14 -to LEDR[7] +set_location_assignment PIN_A11 -to LEDR[8] +set_location_assignment PIN_B11 -to LEDR[9] + +#============================================================ +# SW +#============================================================ +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[8] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[9] +set_location_assignment PIN_C10 -to SW[0] +set_location_assignment PIN_C11 -to SW[1] +set_location_assignment PIN_D12 -to SW[2] +set_location_assignment PIN_C12 -to SW[3] +set_location_assignment PIN_A12 -to SW[4] +set_location_assignment PIN_B12 -to SW[5] +set_location_assignment PIN_A13 -to SW[6] +set_location_assignment PIN_A14 -to SW[7] +set_location_assignment PIN_B14 -to SW[8] +set_location_assignment PIN_F15 -to SW[9] + +#============================================================ +# VGA +#============================================================ +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_HS +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_VS +set_location_assignment PIN_P1 -to VGA_B[0] +set_location_assignment PIN_T1 -to VGA_B[1] +set_location_assignment PIN_P4 -to VGA_B[2] +set_location_assignment PIN_N2 -to VGA_B[3] +set_location_assignment PIN_W1 -to VGA_G[0] +set_location_assignment PIN_T2 -to VGA_G[1] +set_location_assignment PIN_R2 -to VGA_G[2] +set_location_assignment PIN_R1 -to VGA_G[3] +set_location_assignment PIN_N3 -to VGA_HS +set_location_assignment PIN_AA1 -to VGA_R[0] +set_location_assignment PIN_V1 -to VGA_R[1] +set_location_assignment PIN_Y2 -to VGA_R[2] +set_location_assignment PIN_Y1 -to VGA_R[3] +set_location_assignment PIN_N1 -to VGA_VS + +#============================================================ +# Accelerometer +#============================================================ +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GSENSOR_CS_N +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GSENSOR_INT[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GSENSOR_INT[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GSENSOR_SCLK +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GSENSOR_SDI +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GSENSOR_SDO +set_location_assignment PIN_AB16 -to GSENSOR_CS_N +set_location_assignment PIN_Y14 -to GSENSOR_INT[1] +set_location_assignment PIN_Y13 -to GSENSOR_INT[2] +set_location_assignment PIN_AB15 -to GSENSOR_SCLK +set_location_assignment PIN_V11 -to GSENSOR_SDI +set_location_assignment PIN_V12 -to GSENSOR_SDO + +#============================================================ +# Arduino +#============================================================ +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[8] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[9] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[10] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[11] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[12] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[13] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[14] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_IO[15] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ARDUINO_RESET_N +set_location_assignment PIN_AB5 -to ARDUINO_IO[0] +set_location_assignment PIN_AB6 -to ARDUINO_IO[1] +set_location_assignment PIN_AB7 -to ARDUINO_IO[2] +set_location_assignment PIN_AB8 -to ARDUINO_IO[3] +set_location_assignment PIN_AB9 -to ARDUINO_IO[4] +set_location_assignment PIN_Y10 -to ARDUINO_IO[5] +set_location_assignment PIN_AA11 -to ARDUINO_IO[6] +set_location_assignment PIN_AA12 -to ARDUINO_IO[7] +set_location_assignment PIN_AB17 -to ARDUINO_IO[8] +set_location_assignment PIN_AA17 -to ARDUINO_IO[9] +set_location_assignment PIN_AB19 -to ARDUINO_IO[10] +set_location_assignment PIN_AA19 -to ARDUINO_IO[11] +set_location_assignment PIN_Y19 -to ARDUINO_IO[12] +set_location_assignment PIN_AB20 -to ARDUINO_IO[13] +set_location_assignment PIN_AB21 -to ARDUINO_IO[14] +set_location_assignment PIN_AA20 -to ARDUINO_IO[15] +set_location_assignment PIN_F16 -to ARDUINO_RESET_N + +#============================================================ +# GPIO, GPIO connect to D8M-GPIO +#============================================================ +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CAMERA_I2C_SCL +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CAMERA_I2C_SDA +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CAMERA_PWDN_n +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_CS_n +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_I2C_SCL +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_I2C_SDA +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_MCLK +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_CLK +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_D[0] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_D[1] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_D[2] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_D[3] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_D[4] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_D[5] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_D[6] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_D[7] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_D[8] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_D[9] +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_HS +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_PIXEL_VS +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_REFCLK +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MIPI_RESET_n +set_location_assignment PIN_AA7 -to CAMERA_I2C_SCL +set_location_assignment PIN_Y6 -to CAMERA_I2C_SDA +set_location_assignment PIN_Y7 -to CAMERA_PWDN_n +set_location_assignment PIN_Y8 -to MIPI_CS_n +set_location_assignment PIN_AA5 -to MIPI_I2C_SCL +set_location_assignment PIN_Y4 -to MIPI_I2C_SDA +set_location_assignment PIN_AA6 -to MIPI_MCLK +set_location_assignment PIN_W10 -to MIPI_PIXEL_CLK +set_location_assignment PIN_W9 -to MIPI_PIXEL_D[0] +set_location_assignment PIN_V8 -to MIPI_PIXEL_D[1] +set_location_assignment PIN_W8 -to MIPI_PIXEL_D[2] +set_location_assignment PIN_V7 -to MIPI_PIXEL_D[3] +set_location_assignment PIN_W7 -to MIPI_PIXEL_D[4] +set_location_assignment PIN_W6 -to MIPI_PIXEL_D[5] +set_location_assignment PIN_V5 -to MIPI_PIXEL_D[6] +set_location_assignment PIN_W5 -to MIPI_PIXEL_D[7] +set_location_assignment PIN_AA15 -to MIPI_PIXEL_D[8] +set_location_assignment PIN_AA14 -to MIPI_PIXEL_D[9] +set_location_assignment PIN_AA9 -to MIPI_PIXEL_HS +set_location_assignment PIN_AB10 -to MIPI_PIXEL_VS +set_location_assignment PIN_AB11 -to MIPI_REFCLK +set_location_assignment PIN_AA8 -to MIPI_RESET_n + +#============================================================ +# End of pin assignments by Terasic System Builder +#============================================================ + + +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V" +set_global_assignment -name ENABLE_SIGNALTAP OFF +set_global_assignment -name USE_SIGNALTAP_FILE stp1.stp +set_global_assignment -name OPTIMIZATION_MODE BALANCED +set_global_assignment -name FITTER_EFFORT "STANDARD FIT" +set_global_assignment -name VERILOG_FILE FpsMonitor.v +set_global_assignment -name QSYS_FILE Qsys.qsys +set_global_assignment -name SDC_FILE DE10_LITE_D8M_VIP.SDC +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name VERILOG_FILE ip/EEE_IMGPROC/STREAM_REG.v +set_global_assignment -name VECTOR_WAVEFORM_FILE ip/EEE_IMGPROC/STREAM_REG_TEST.vwf +set_global_assignment -name VERILOG_FILE DE10_LITE_D8M_VIP.v +set_global_assignment -name VERILOG_FILE ip/EEE_IMGPROC/STREAM_REG_TEST.v +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name QIP_FILE ip/EEE_IMGPROC/MSG_FIFO.qip +set_global_assignment -name VERILOG_FILE ip/EEE_IMGPROC/EEE_IMGPROC.v +set_global_assignment -name CDF_FILE Chain.cdf +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qws b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.qws new file mode 100644 index 0000000000000000000000000000000000000000..9a7beedca978bb85d11ff496ce86170b270e4bde GIT binary patch literal 1312 zcmeH_yG{a85QcwN3Q8+03kySt2?)jrc1A^Gf{_?vyK!+r_nm6iY$OSK-&B4C&*(2$F8{AupaGV77@m49`PZi;QG57z-0C@#?ipd#cj6cPkdxl-u-#9_rh9q@-+Rpb literal 0 HcmV?d00001 diff --git a/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.v b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.v new file mode 100644 index 0000000..c294591 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP.v @@ -0,0 +1,196 @@ + +//======================================================= +// This code is generated by Terasic System Builder +//======================================================= + +`default_nettype none + +module DE10_LITE_D8M_VIP( + + //////////// CLOCK ////////// + input ADC_CLK_10, + input MAX10_CLK1_50, + input MAX10_CLK2_50, + + //////////// SDRAM ////////// + output [12:0] DRAM_ADDR, + output [1:0] DRAM_BA, + output DRAM_CAS_N, + output DRAM_CKE, + output DRAM_CLK, + output DRAM_CS_N, + inout [15:0] DRAM_DQ, + output DRAM_LDQM, + output DRAM_RAS_N, + output DRAM_UDQM, + output DRAM_WE_N, + + //////////// SEG7 ////////// + output [7:0] HEX0, + output [7:0] HEX1, + output [7:0] HEX2, + output [7:0] HEX3, + output [7:0] HEX4, + output [7:0] HEX5, + + //////////// KEY ////////// + input [1:0] KEY, + + //////////// LED ////////// + output [9:0] LEDR, + + //////////// SW ////////// + input [9:0] SW, + + //////////// VGA ////////// + output [3:0] VGA_B, + output [3:0] VGA_G, + output VGA_HS, + output [3:0] VGA_R, + output VGA_VS, + + //////////// Accelerometer ////////// + output GSENSOR_CS_N, + input [2:1] GSENSOR_INT, + output GSENSOR_SCLK, + inout GSENSOR_SDI, + inout GSENSOR_SDO, + + //////////// Arduino ////////// + inout [15:0] ARDUINO_IO, + inout ARDUINO_RESET_N, + + //////////// GPIO, GPIO connect to D8M-GPIO ////////// + inout CAMERA_I2C_SCL, + inout CAMERA_I2C_SDA, + output CAMERA_PWDN_n, + output MIPI_CS_n, + inout MIPI_I2C_SCL, + inout MIPI_I2C_SDA, + output MIPI_MCLK, + input MIPI_PIXEL_CLK, + input [9:0] MIPI_PIXEL_D, + input MIPI_PIXEL_HS, + input MIPI_PIXEL_VS, + output MIPI_REFCLK, + output MIPI_RESET_n +); + + + +//======================================================= +// REG/WIRE declarations +//======================================================= +wire disp_clk; +wire disp_hs; +wire disp_vs; +wire [23:0] disp_data; +wire [7 :0] mVGA_R; +wire [7 :0] mVGA_G; +wire [7 :0] mVGA_B; + + + +//======================================================= +// Structural coding +//======================================================= +assign VGA_HS = disp_hs; +assign VGA_VS = disp_vs; +assign {mVGA_R, mVGA_G, mVGA_B} = disp_data; + +assign VGA_R = mVGA_R[7:4]; +assign VGA_G = mVGA_G[7:4]; +assign VGA_B = mVGA_B[7:4]; + +assign MIPI_CS_n = 1'b0; + + + +/////////////////////////////////////// +wire MIPI_PIXEL_CLK_d; +reg MIPI_PIXEL_VS_d; +reg MIPI_PIXEL_HS_d; +reg [9:0] MIPI_PIXEL_D_d; + +assign MIPI_PIXEL_CLK_d = ~MIPI_PIXEL_CLK; + +always @ (posedge MIPI_PIXEL_CLK_d) begin + MIPI_PIXEL_VS_d <= MIPI_PIXEL_VS; + MIPI_PIXEL_HS_d <= MIPI_PIXEL_HS; + MIPI_PIXEL_D_d <= MIPI_PIXEL_D; +end + + + +Qsys u0 ( + .clk_clk (MAX10_CLK1_50), // clk.clk + .reset_reset_n (1'b1), // reset.reset_n + + .clk_sdram_clk (DRAM_CLK), // clk_sdram.clk + .clk_vga_clk (disp_clk), // clk_vga.clk + .d8m_xclkin_clk (MIPI_REFCLK), // d8m_xclkin.clk + + .key_external_connection_export (KEY), // key_external_connection.export + .led_external_connection_export (), // led_external_connection.export + .sw_external_connection_export (SW), // sw_external_connection.export + + .i2c_opencores_camera_export_scl_pad_io (CAMERA_I2C_SCL), // i2c_opencores_camera_export.scl_pad_io + .i2c_opencores_camera_export_sda_pad_io (CAMERA_I2C_SDA), // .sda_pad_io + + .i2c_opencores_mipi_export_scl_pad_io (MIPI_I2C_SCL), // i2c_opencores_mipi_export.scl_pad_io + .i2c_opencores_mipi_export_sda_pad_io (MIPI_I2C_SDA), // .sda_pad_io + + .mipi_pwdn_n_external_connection_export (CAMERA_PWDN_n), // mipi_pwdn_n_external_connection.export + .mipi_reset_n_external_connection_export (MIPI_RESET_n), // mipi_reset_n_external_connection.export + + .sdram_wire_addr (DRAM_ADDR), // sdram_wire.addr + .sdram_wire_ba (DRAM_BA), // .ba + .sdram_wire_cas_n (DRAM_CAS_N), // .cas_n + .sdram_wire_cke (DRAM_CKE), // .cke + .sdram_wire_cs_n (DRAM_CS_N), // .cs_n + .sdram_wire_dq (DRAM_DQ), // .dq + .sdram_wire_dqm ({DRAM_UDQM, DRAM_LDQM}), // .dqm + .sdram_wire_ras_n (DRAM_RAS_N), // .ras_n + .sdram_wire_we_n (DRAM_WE_N), // .we_n + + .terasic_camera_0_conduit_end_D ({MIPI_PIXEL_D_d[9:0], 2'b00}),// terasic_camera_0_conduit_end.D + .terasic_camera_0_conduit_end_FVAL (MIPI_PIXEL_VS_d), // .FVAL + .terasic_camera_0_conduit_end_LVAL (MIPI_PIXEL_HS_d), // .LVAL + .terasic_camera_0_conduit_end_PIXCLK (~MIPI_PIXEL_CLK_d), // .PIXCLK + + .terasic_auto_focus_0_conduit_vcm_i2c_sda (CAMERA_I2C_SDA), // terasic_auto_focus_0_conduit.vcm_i2c_sda + .terasic_auto_focus_0_conduit_clk50 (MAX10_CLK1_50), // .clk50 + .terasic_auto_focus_0_conduit_vcm_i2c_scl (CAMERA_I2C_SCL), // .vcm_i2c_scl + + .alt_vip_itc_0_clocked_video_vid_clk (disp_clk), // alt_vip_itc_0_clocked_video.vid_clk + .alt_vip_itc_0_clocked_video_vid_data (disp_data), // .vid_data + .alt_vip_itc_0_clocked_video_underflow (), // .underflow + .alt_vip_itc_0_clocked_video_vid_datavalid (), // .vid_datavalid + .alt_vip_itc_0_clocked_video_vid_v_sync (disp_vs), // .vid_v_sync + .alt_vip_itc_0_clocked_video_vid_h_sync (disp_hs), // .vid_h_sync + .alt_vip_itc_0_clocked_video_vid_f (), // .vid_f + .alt_vip_itc_0_clocked_video_vid_h (), // .vid_h + .alt_vip_itc_0_clocked_video_vid_v (), // .vid_v + + .altpll_0_areset_conduit_export (), // altpll_0_areset_conduit.export + .altpll_0_locked_conduit_export (), // altpll_0_locked_conduit.export + .altpll_0_phasedone_conduit_export (), // altpll_0_phasedone_conduit.export + + .eee_imgproc_0_conduit_mode_new_signal (SW[0]) + ); + +FpsMonitor uFps( + .clk50(MAX10_CLK2_50), + .vs(MIPI_PIXEL_VS), + + .fps(), + .hex_fps_h(HEX1), + .hex_fps_l(HEX0) +); + +assign HEX2 = 7'h7F; +assign HEX3 = 7'h7F; +assign HEX4 = 7'h7F; +assign HEX5 = 7'h7F; + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP_assignment_defaults.qdf b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP_assignment_defaults.qdf new file mode 100644 index 0000000..a644b0f --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/DE10_LITE_D8M_VIP_assignment_defaults.qdf @@ -0,0 +1,808 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 2020 Intel Corporation. All rights reserved. +# Your use of Intel Corporation's design tools, logic functions +# and other software and tools, and any partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Intel Program License +# Subscription Agreement, the Intel Quartus Prime License Agreement, +# the Intel FPGA IP License Agreement, or other applicable license +# agreement, including, without limitation, that your use is for +# the sole purpose of programming logic devices manufactured by +# Intel and sold by Intel or its authorized distributors. Please +# refer to the applicable agreement for further details, at +# https://fpgasoftware.intel.com/eula. +# +# -------------------------------------------------------------------------- # +# +# Quartus Prime +# Version 20.1.1 Build 720 11/11/2020 SJ Lite Edition +# Date created = 13:06:40 March 09, 2021 +# +# -------------------------------------------------------------------------- # +# +# Note: +# +# 1) Do not modify this file. This file was generated +# automatically by the Quartus Prime software and is used +# to preserve global assignments across Quartus Prime versions. +# +# -------------------------------------------------------------------------- # + +set_global_assignment -name IP_COMPONENT_REPORT_HIERARCHY Off +set_global_assignment -name IP_COMPONENT_INTERNAL Off +set_global_assignment -name PROJECT_SHOW_ENTITY_NAME On +set_global_assignment -name PROJECT_USE_SIMPLIFIED_NAMES Off +set_global_assignment -name ENABLE_REDUCED_MEMORY_MODE Off +set_global_assignment -name VER_COMPATIBLE_DB_DIR export_db +set_global_assignment -name AUTO_EXPORT_VER_COMPATIBLE_DB Off +set_global_assignment -name FLOW_DISABLE_ASSEMBLER Off +set_global_assignment -name FLOW_ENABLE_POWER_ANALYZER Off +set_global_assignment -name FLOW_ENABLE_HC_COMPARE Off +set_global_assignment -name HC_OUTPUT_DIR hc_output +set_global_assignment -name SAVE_MIGRATION_INFO_DURING_COMPILATION Off +set_global_assignment -name FLOW_ENABLE_IO_ASSIGNMENT_ANALYSIS Off +set_global_assignment -name RUN_FULL_COMPILE_ON_DEVICE_CHANGE On +set_global_assignment -name FLOW_ENABLE_RTL_VIEWER Off +set_global_assignment -name READ_OR_WRITE_IN_BYTE_ADDRESS "Use global settings" +set_global_assignment -name FLOW_HARDCOPY_DESIGN_READINESS_CHECK On +set_global_assignment -name FLOW_ENABLE_PARALLEL_MODULES On +set_global_assignment -name ENABLE_COMPACT_REPORT_TABLE Off +set_global_assignment -name REVISION_TYPE Base -family "Arria V" +set_global_assignment -name REVISION_TYPE Base -family "Stratix V" +set_global_assignment -name REVISION_TYPE Base -family "Arria V GZ" +set_global_assignment -name REVISION_TYPE Base -family "Cyclone V" +set_global_assignment -name DEFAULT_HOLD_MULTICYCLE "Same as Multicycle" +set_global_assignment -name CUT_OFF_PATHS_BETWEEN_CLOCK_DOMAINS On +set_global_assignment -name CUT_OFF_READ_DURING_WRITE_PATHS On +set_global_assignment -name CUT_OFF_IO_PIN_FEEDBACK On +set_global_assignment -name DO_COMBINED_ANALYSIS Off +set_global_assignment -name TDC_AGGRESSIVE_HOLD_CLOSURE_EFFORT Off +set_global_assignment -name ENABLE_HPS_INTERNAL_TIMING Off +set_global_assignment -name EMIF_SOC_PHYCLK_ADVANCE_MODELING Off +set_global_assignment -name USE_DLL_FREQUENCY_FOR_DQS_DELAY_CHAIN Off +set_global_assignment -name ANALYZE_LATCHES_AS_SYNCHRONOUS_ELEMENTS On +set_global_assignment -name TIMING_ANALYZER_REPORT_SCRIPT_INCLUDE_DEFAULT_ANALYSIS On +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS Off -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS Off -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS On -family "Cyclone V" +set_global_assignment -name TIMING_ANALYZER_DO_REPORT_TIMING Off +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_REPORT_WORST_CASE_TIMING_PATHS Off -family "Cyclone V" +set_global_assignment -name TIMING_ANALYZER_REPORT_NUM_WORST_CASE_TIMING_PATHS 100 +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone 10 LP" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "MAX 10" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone IV E" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Stratix IV" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria 10" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL Off -family "MAX V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Stratix V" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria V GZ" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL Off -family "MAX II" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria II GX" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Arria II GZ" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone IV GX" +set_global_assignment -name TIMING_ANALYZER_DO_CCPP_REMOVAL On -family "Cyclone V" +set_global_assignment -name OPTIMIZATION_MODE Balanced +set_global_assignment -name ALLOW_REGISTER_MERGING On +set_global_assignment -name ALLOW_REGISTER_DUPLICATION On +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER ON -family "Cyclone 10 LP" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX 10" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Stratix IV" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone IV E" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER ON -family "Arria 10" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Stratix V" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria V GZ" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "MAX II" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria II GX" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Arria II GZ" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone IV GX" +set_global_assignment -name DISABLE_LEGACY_TIMING_ANALYZER OFF -family "Cyclone V" +set_global_assignment -name MUX_RESTRUCTURE Auto +set_global_assignment -name MLAB_ADD_TIMING_CONSTRAINTS_FOR_MIXED_PORT_FEED_THROUGH_MODE_SETTING_DONT_CARE Off +set_global_assignment -name ENABLE_IP_DEBUG Off +set_global_assignment -name SAVE_DISK_SPACE On +set_global_assignment -name OCP_HW_EVAL -value OFF +set_global_assignment -name DEVICE_FILTER_PACKAGE Any +set_global_assignment -name DEVICE_FILTER_PIN_COUNT Any +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE Any +set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "" +set_global_assignment -name VERILOG_INPUT_VERSION Verilog_2001 +set_global_assignment -name VHDL_INPUT_VERSION VHDL_1993 +set_global_assignment -name FAMILY "Cyclone V" +set_global_assignment -name TRUE_WYSIWYG_FLOW Off +set_global_assignment -name SMART_COMPILE_IGNORES_TDC_FOR_STRATIX_PLL_CHANGES Off +set_global_assignment -name STATE_MACHINE_PROCESSING Auto +set_global_assignment -name SAFE_STATE_MACHINE Off +set_global_assignment -name EXTRACT_VERILOG_STATE_MACHINES On +set_global_assignment -name EXTRACT_VHDL_STATE_MACHINES On +set_global_assignment -name IGNORE_VERILOG_INITIAL_CONSTRUCTS Off +set_global_assignment -name VERILOG_CONSTANT_LOOP_LIMIT 5000 +set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 250 +set_global_assignment -name INFER_RAMS_FROM_RAW_LOGIC On +set_global_assignment -name PARALLEL_SYNTHESIS On +set_global_assignment -name DSP_BLOCK_BALANCING Auto +set_global_assignment -name MAX_BALANCING_DSP_BLOCKS "-1 (Unlimited)" +set_global_assignment -name NOT_GATE_PUSH_BACK On +set_global_assignment -name ALLOW_POWER_UP_DONT_CARE On +set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS Off +set_global_assignment -name REMOVE_DUPLICATE_REGISTERS On +set_global_assignment -name IGNORE_CARRY_BUFFERS Off +set_global_assignment -name IGNORE_CASCADE_BUFFERS Off +set_global_assignment -name IGNORE_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_ROW_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_LCELL_BUFFERS Off +set_global_assignment -name MAX7000_IGNORE_LCELL_BUFFERS AUTO +set_global_assignment -name IGNORE_SOFT_BUFFERS On +set_global_assignment -name MAX7000_IGNORE_SOFT_BUFFERS Off +set_global_assignment -name LIMIT_AHDL_INTEGERS_TO_32_BITS Off +set_global_assignment -name AUTO_GLOBAL_CLOCK_MAX On +set_global_assignment -name AUTO_GLOBAL_OE_MAX On +set_global_assignment -name MAX_AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name AUTO_IMPLEMENT_IN_ROM Off +set_global_assignment -name APEX20K_TECHNOLOGY_MAPPER Lut +set_global_assignment -name OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAX7000_OPTIMIZATION_TECHNIQUE Speed +set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MERCURY_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX6K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX10K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name ALLOW_XOR_GATE_USAGE On +set_global_assignment -name AUTO_LCELL_INSERTION On +set_global_assignment -name CARRY_CHAIN_LENGTH 48 +set_global_assignment -name FLEX6K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name FLEX10K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name MERCURY_CARRY_CHAIN_LENGTH 48 +set_global_assignment -name STRATIX_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name STRATIXII_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name CASCADE_CHAIN_LENGTH 2 +set_global_assignment -name PARALLEL_EXPANDER_CHAIN_LENGTH 16 +set_global_assignment -name MAX7000_PARALLEL_EXPANDER_CHAIN_LENGTH 4 +set_global_assignment -name AUTO_CARRY_CHAINS On +set_global_assignment -name AUTO_CASCADE_CHAINS On +set_global_assignment -name AUTO_PARALLEL_EXPANDERS On +set_global_assignment -name AUTO_OPEN_DRAIN_PINS On +set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP Off +set_global_assignment -name AUTO_ROM_RECOGNITION On +set_global_assignment -name AUTO_RAM_RECOGNITION On +set_global_assignment -name AUTO_DSP_RECOGNITION On +set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION Auto +set_global_assignment -name ALLOW_SHIFT_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name AUTO_CLOCK_ENABLE_RECOGNITION On +set_global_assignment -name STRICT_RAM_RECOGNITION Off +set_global_assignment -name ALLOW_SYNCH_CTRL_USAGE On +set_global_assignment -name FORCE_SYNCH_CLEAR Off +set_global_assignment -name AUTO_RAM_BLOCK_BALANCING On +set_global_assignment -name AUTO_RAM_TO_LCELL_CONVERSION Off +set_global_assignment -name AUTO_RESOURCE_SHARING Off +set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION Off +set_global_assignment -name MAX7000_FANIN_PER_CELL 100 +set_global_assignment -name USE_LOGICLOCK_CONSTRAINTS_IN_BALANCING On +set_global_assignment -name MAX_RAM_BLOCKS_M512 "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_M4K "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_MRAM "-1 (Unlimited)" +set_global_assignment -name IGNORE_TRANSLATE_OFF_AND_SYNTHESIS_OFF Off +set_global_assignment -name STRATIXGX_BYPASS_REMAPPING_OF_FORCE_SIGNAL_DETECT_SIGNAL_THRESHOLD_SELECT Off +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria II GZ" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone 10 LP" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "MAX 10" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Stratix IV" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone IV E" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria 10" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Stratix V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria V GZ" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Cyclone V" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS On -family "Arria II GX" +set_global_assignment -name REPORT_PARAMETER_SETTINGS On +set_global_assignment -name REPORT_SOURCE_ASSIGNMENTS On +set_global_assignment -name REPORT_CONNECTIVITY_CHECKS On +set_global_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS Off +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone 10 LP" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX 10" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone IV E" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Stratix IV" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria 10" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Stratix V" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "MAX II" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria V GZ" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria II GX" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Arria II GZ" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 -family "Cyclone IV GX" +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 3 -family "Cyclone V" +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS "Normal compilation" +set_global_assignment -name HDL_MESSAGE_LEVEL Level2 +set_global_assignment -name USE_HIGH_SPEED_ADDER Auto +set_global_assignment -name NUMBER_OF_PROTECTED_REGISTERS_REPORTED 100 +set_global_assignment -name NUMBER_OF_REMOVED_REGISTERS_REPORTED 5000 +set_global_assignment -name NUMBER_OF_SYNTHESIS_MIGRATION_ROWS 5000 +set_global_assignment -name SYNTHESIS_S10_MIGRATION_CHECKS Off +set_global_assignment -name NUMBER_OF_SWEPT_NODES_REPORTED 5000 +set_global_assignment -name NUMBER_OF_INVERTED_REGISTERS_REPORTED 100 +set_global_assignment -name SYNTH_CLOCK_MUX_PROTECTION On +set_global_assignment -name SYNTH_GATED_CLOCK_CONVERSION Off +set_global_assignment -name BLOCK_DESIGN_NAMING Auto +set_global_assignment -name SYNTH_PROTECT_SDC_CONSTRAINT Off +set_global_assignment -name SYNTHESIS_EFFORT Auto +set_global_assignment -name SHIFT_REGISTER_RECOGNITION_ACLR_SIGNAL On +set_global_assignment -name PRE_MAPPING_RESYNTHESIS Off +set_global_assignment -name SYNTH_MESSAGE_LEVEL Medium +set_global_assignment -name DISABLE_REGISTER_MERGING_ACROSS_HIERARCHIES Auto +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GZ" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone 10 LP" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "MAX 10" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV GX" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix IV" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone IV E" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria 10" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Stratix V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria V GZ" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Cyclone V" +set_global_assignment -name SYNTH_RESOURCE_AWARE_INFERENCE_FOR_BLOCK_RAM On -family "Arria II GX" +set_global_assignment -name MAX_LABS "-1 (Unlimited)" +set_global_assignment -name RBCGEN_CRITICAL_WARNING_TO_ERROR On +set_global_assignment -name MAX_NUMBER_OF_REGISTERS_FROM_UNINFERRED_RAMS "-1 (Unlimited)" +set_global_assignment -name AUTO_PARALLEL_SYNTHESIS On +set_global_assignment -name PRPOF_ID Off +set_global_assignment -name DISABLE_DSP_NEGATE_INFERENCING Off +set_global_assignment -name REPORT_PARAMETER_SETTINGS_PRO On +set_global_assignment -name REPORT_SOURCE_ASSIGNMENTS_PRO On +set_global_assignment -name ENABLE_STATE_MACHINE_INFERENCE Off +set_global_assignment -name FLEX10K_ENABLE_LOCK_OUTPUT Off +set_global_assignment -name AUTO_MERGE_PLLS On +set_global_assignment -name IGNORE_MODE_FOR_MERGE Off +set_global_assignment -name TXPMA_SLEW_RATE Low +set_global_assignment -name ADCE_ENABLED Auto +set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL Normal +set_global_assignment -name ROUTER_CLOCKING_TOPOLOGY_ANALYSIS Off +set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name FIT_ATTEMPTS_TO_SKIP 0.0 +set_global_assignment -name PHYSICAL_SYNTHESIS Off +set_global_assignment -name ECO_ALLOW_ROUTING_CHANGES Off +set_global_assignment -name DEVICE AUTO +set_global_assignment -name BASE_PIN_OUT_FILE_ON_SAMEFRAME_DEVICE Off +set_global_assignment -name ENABLE_JTAG_BST_SUPPORT Off +set_global_assignment -name MAX7000_ENABLE_JTAG_BST_SUPPORT On +set_global_assignment -name ENABLE_NCEO_OUTPUT Off +set_global_assignment -name RESERVE_NCEO_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name STRATIXIII_UPDATE_MODE Standard +set_global_assignment -name STRATIX_UPDATE_MODE Standard +set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "Single Image" +set_global_assignment -name CVP_MODE Off +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria V" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria 10" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Stratix V" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Arria V GZ" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "Passive Serial" -family "Cyclone V" +set_global_assignment -name VID_OPERATION_MODE "PMBus Slave" +set_global_assignment -name USE_CONF_DONE AUTO +set_global_assignment -name USE_PWRMGT_SCL AUTO +set_global_assignment -name USE_PWRMGT_SDA AUTO +set_global_assignment -name USE_PWRMGT_ALERT AUTO +set_global_assignment -name USE_INIT_DONE AUTO +set_global_assignment -name USE_CVP_CONFDONE AUTO +set_global_assignment -name USE_SEU_ERROR AUTO +set_global_assignment -name RESERVE_AVST_CLK_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_VALID_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_DATA15_THROUGH_DATA0_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_AVST_DATA31_THROUGH_DATA16_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name STRATIXIII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name MAX10FPGA_CONFIGURATION_SCHEME "Internal Configuration" +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name APEX20K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name STRATIX_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name MERCURY_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX6K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX10K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name APEXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name USER_START_UP_CLOCK Off +set_global_assignment -name ENABLE_UNUSED_RX_CLOCK_WORKAROUND Off +set_global_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL Off +set_global_assignment -name IGNORE_HSSI_COLUMN_POWER_WHEN_PRESERVING_UNUSED_XCVR_CHANNELS On +set_global_assignment -name AUTO_RESERVE_CLKUSR_FOR_CALIBRATION On +set_global_assignment -name DEVICE_INITIALIZATION_CLOCK INIT_INTOSC +set_global_assignment -name ENABLE_VREFA_PIN Off +set_global_assignment -name ENABLE_VREFB_PIN Off +set_global_assignment -name ALWAYS_ENABLE_INPUT_BUFFERS Off +set_global_assignment -name ENABLE_ASMI_FOR_FLASH_LOADER Off +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET Off +set_global_assignment -name ENABLE_DEVICE_WIDE_OE Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "As output driving ground" +set_global_assignment -name ENABLE_INIT_DONE_OUTPUT Off +set_global_assignment -name INIT_DONE_OPEN_DRAIN On +set_global_assignment -name RESERVE_NWS_NRS_NCS_CS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_RDYNBUSY_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA31_THROUGH_DATA16_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA15_THROUGH_DATA8_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA2_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA5_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_OTHER_AP_PINS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name ENABLE_CONFIGURATION_PINS On +set_global_assignment -name ENABLE_JTAG_PIN_SHARING Off +set_global_assignment -name ENABLE_NCE_PIN Off +set_global_assignment -name ENABLE_BOOT_SEL_PIN On +set_global_assignment -name CRC_ERROR_CHECKING Off +set_global_assignment -name INTERNAL_SCRUBBING Off +set_global_assignment -name PR_ERROR_OPEN_DRAIN On +set_global_assignment -name PR_READY_OPEN_DRAIN On +set_global_assignment -name ENABLE_CVP_CONFDONE Off +set_global_assignment -name CVP_CONFDONE_OPEN_DRAIN On +set_global_assignment -name ENABLE_NCONFIG_FROM_CORE On +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GZ" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone 10 LP" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "MAX 10" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria 10" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Stratix V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria V GZ" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Cyclone V" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "All Paths" -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone 10 LP" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "MAX 10" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone IV E" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Stratix IV" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria 10" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off -family "MAX V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Stratix V" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria V GZ" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off -family "MAX II" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Arria II GZ" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone IV GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING On -family "Cyclone V" +set_global_assignment -name BLOCK_RAM_TO_MLAB_CELL_CONVERSION On +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_POWER_UP_CONDITIONS Auto +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_PAUSED_READ_CAPABILITIES Care +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Stratix IV" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Arria 10" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Stratix V" +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING Automatic -family "Arria V GZ" +set_global_assignment -name PROGRAMMABLE_POWER_MAXIMUM_HIGH_SPEED_FRACTION_OF_USED_LAB_TILES 1.0 +set_global_assignment -name GUARANTEE_MIN_DELAY_CORNER_IO_ZERO_HOLD_TIME On +set_global_assignment -name OPTIMIZE_POWER_DURING_FITTING "Normal compilation" +set_global_assignment -name OPTIMIZE_SSN Off +set_global_assignment -name OPTIMIZE_TIMING "Normal compilation" +set_global_assignment -name ECO_OPTIMIZE_TIMING Off +set_global_assignment -name ECO_REGENERATE_REPORT Off +set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING Normal +set_global_assignment -name FIT_ONLY_ONE_ATTEMPT Off +set_global_assignment -name FINAL_PLACEMENT_OPTIMIZATION Automatically +set_global_assignment -name FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION Automatically +set_global_assignment -name SEED 1 +set_global_assignment -name PERIPHERY_TO_CORE_PLACEMENT_AND_ROUTING_OPTIMIZATION OFF +set_global_assignment -name RESERVE_ROUTING_OUTPUT_FLEXIBILITY Off +set_global_assignment -name SLOW_SLEW_RATE Off +set_global_assignment -name PCI_IO Off +set_global_assignment -name TURBO_BIT On +set_global_assignment -name WEAK_PULL_UP_RESISTOR Off +set_global_assignment -name ENABLE_BUS_HOLD_CIRCUITRY Off +set_global_assignment -name AUTO_GLOBAL_MEMORY_CONTROLS Off +set_global_assignment -name MIGRATION_CONSTRAIN_CORE_RESOURCES On +set_global_assignment -name QII_AUTO_PACKED_REGISTERS Auto +set_global_assignment -name AUTO_PACKED_REGISTERS_MAX Auto +set_global_assignment -name NORMAL_LCELL_INSERT On +set_global_assignment -name CARRY_OUT_PINS_LCELL_INSERT On +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone 10 LP" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX 10" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Stratix IV" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone IV E" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria 10" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Stratix V" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "MAX II" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria V GZ" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria II GX" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Arria II GZ" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone IV GX" +set_global_assignment -name AUTO_DELAY_CHAINS On -family "Cyclone V" +set_global_assignment -name AUTO_DELAY_CHAINS_FOR_HIGH_FANOUT_INPUT_PINS OFF +set_global_assignment -name XSTL_INPUT_ALLOW_SE_BUFFER Off +set_global_assignment -name TREAT_BIDIR_AS_OUTPUT Off +set_global_assignment -name AUTO_TURBO_BIT ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC Off +set_global_assignment -name PHYSICAL_SYNTHESIS_LOG_FILE Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION Off +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING Off +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING Off +set_global_assignment -name IO_PLACEMENT_OPTIMIZATION On +set_global_assignment -name ALLOW_LVTTL_LVCMOS_INPUT_LEVELS_TO_OVERDRIVE_INPUT_BUFFER Off +set_global_assignment -name OVERRIDE_DEFAULT_ELECTROMIGRATION_PARAMETERS Off +set_global_assignment -name FITTER_EFFORT "Auto Fit" +set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN 0ns +set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT Normal +set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION Auto +set_global_assignment -name ROUTER_REGISTER_DUPLICATION Auto +set_global_assignment -name STRATIXGX_ALLOW_CLOCK_FANOUT_WITH_ANALOG_RESET Off +set_global_assignment -name AUTO_GLOBAL_CLOCK On +set_global_assignment -name AUTO_GLOBAL_OE On +set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name FITTER_EARLY_TIMING_ESTIMATE_MODE Realistic +set_global_assignment -name STRATIXGX_ALLOW_GIGE_UNDER_FULL_DATARATE_RANGE Off +set_global_assignment -name STRATIXGX_ALLOW_RX_CORECLK_FROM_NON_RX_CLKOUT_SOURCE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_PARALLEL_LOOPBACK_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_IN_SINGLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITHOUT_8B10B Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_POST8B10B_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_REVERSE_PARALLEL_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_USE_OF_GXB_COUPLED_IOS Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF_WITH_PLL Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_WEAK_PULLUP "As input tri-stated with weak pull-up" +set_global_assignment -name ENABLE_HOLD_BACK_OFF On +set_global_assignment -name CONFIGURATION_VCCIO_LEVEL Auto +set_global_assignment -name FORCE_CONFIGURATION_VCCIO Off +set_global_assignment -name SYNCHRONIZER_IDENTIFICATION Auto +set_global_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION On +set_global_assignment -name OPTIMIZE_FOR_METASTABILITY On +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria V" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "Cyclone 10 LP" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "MAX 10" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off -family "Cyclone IV E" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria 10" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Stratix V" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Arria V GZ" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN On -family "Cyclone V" +set_global_assignment -name MAX_GLOBAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_REGIONAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_PERIPHERY_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria 10" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Stratix V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz -family "Cyclone IV GX" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Arria V GZ" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_100MHz -family "Cyclone V" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz -family "Arria II GX" +set_global_assignment -name M144K_BLOCK_READ_CLOCK_DUTY_CYCLE_DEPENDENCY Off +set_global_assignment -name STRATIXIII_MRAM_COMPATIBILITY On +set_global_assignment -name FORCE_FITTER_TO_AVOID_PERIPHERY_PLACEMENT_WARNINGS Off +set_global_assignment -name AUTO_C3_M9K_BIT_SKIP Off +set_global_assignment -name PR_DONE_OPEN_DRAIN On +set_global_assignment -name NCEO_OPEN_DRAIN On +set_global_assignment -name ENABLE_CRC_ERROR_PIN Off +set_global_assignment -name ENABLE_PR_PINS Off +set_global_assignment -name RESERVE_PR_PINS Off +set_global_assignment -name CONVERT_PR_WARNINGS_TO_ERRORS Off +set_global_assignment -name PR_PINS_OPEN_DRAIN Off +set_global_assignment -name CLAMPING_DIODE Off +set_global_assignment -name TRI_STATE_SPI_PINS Off +set_global_assignment -name UNUSED_TSD_PINS_GND Off +set_global_assignment -name IMPLEMENT_MLAB_IN_16_BIT_DEEP_MODE Off +set_global_assignment -name FORM_DDR_CLUSTERING_CLIQUE Off +set_global_assignment -name ALM_REGISTER_PACKING_EFFORT Medium +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria V" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION Off -family "Stratix IV" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria 10" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Stratix V" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Arria V GZ" +set_global_assignment -name ADVANCED_PHYSICAL_OPTIMIZATION On -family "Cyclone V" +set_global_assignment -name RELATIVE_NEUTRON_FLUX 1.0 +set_global_assignment -name SEU_FIT_REPORT Off +set_global_assignment -name HYPER_RETIMER Off -family "Arria 10" +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ADD_PIPELINING_MAX "-1" +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ASYNCH_CLEAR Auto +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_USER_PRESERVE_RESTRICTION Auto +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_DSP_BLOCKS On +set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_RAM_BLOCKS On +set_global_assignment -name EDA_SIMULATION_TOOL "" +set_global_assignment -name EDA_TIMING_ANALYSIS_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TIMING_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SYMBOL_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SIGNAL_INTEGRITY_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_BOUNDARY_SCAN_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TOOL "" +set_global_assignment -name EDA_FORMAL_VERIFICATION_TOOL "" +set_global_assignment -name EDA_RESYNTHESIS_TOOL "" +set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION On +set_global_assignment -name COMPRESSION_MODE Off +set_global_assignment -name CLOCK_SOURCE Internal +set_global_assignment -name CONFIGURATION_CLOCK_FREQUENCY "10 MHz" +set_global_assignment -name CONFIGURATION_CLOCK_DIVISOR 1 +set_global_assignment -name ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name FLEX6K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE Off +set_global_assignment -name FLEX10K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name MAX7000S_JTAG_USER_CODE FFFF +set_global_assignment -name STRATIX_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name APEX20K_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_JTAG_USER_CODE 7F +set_global_assignment -name MAX7000_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MAX7000_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name USE_CHECKSUM_AS_USERCODE On +set_global_assignment -name SECURITY_BIT Off +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone 10 LP" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX 10" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV E" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX V" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GZ" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone IV GX" +set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIXII_CONFIGURATION_DEVICE Auto +set_global_assignment -name PWRMGT_SLAVE_DEVICE_TYPE "PV3102 or EM1130" +set_global_assignment -name PWRMGT_SLAVE_DEVICE0_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE1_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE2_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE3_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE4_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE5_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE6_ADDRESS 0000000 +set_global_assignment -name PWRMGT_SLAVE_DEVICE7_ADDRESS 0000000 +set_global_assignment -name PWRMGT_VOLTAGE_OUTPUT_FORMAT "Auto discovery" +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_M 0 +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_B 0 +set_global_assignment -name PWRMGT_DIRECT_FORMAT_COEFFICIENT_R 0 +set_global_assignment -name APEX20K_CONFIGURATION_DEVICE Auto +set_global_assignment -name MERCURY_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE Auto +set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIX_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name STRATIX_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE On +set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE Off +set_global_assignment -name GENERATE_TTF_FILE Off +set_global_assignment -name GENERATE_RBF_FILE Off +set_global_assignment -name GENERATE_HEX_FILE Off +set_global_assignment -name HEXOUT_FILE_START_ADDRESS 0 +set_global_assignment -name HEXOUT_FILE_COUNT_DIRECTION Up +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "As output driving an unspecified signal" +set_global_assignment -name RELEASE_CLEARS_BEFORE_TRI_STATES Off +set_global_assignment -name AUTO_RESTART_CONFIGURATION On +set_global_assignment -name HARDCOPYII_POWER_ON_EXTRA_DELAY Off +set_global_assignment -name STRATIXII_MRAM_COMPATIBILITY Off +set_global_assignment -name CYCLONEII_M4K_COMPATIBILITY On +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria V" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone 10 LP" +set_global_assignment -name ENABLE_OCT_DONE On -family "MAX 10" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone IV E" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria 10" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Stratix V" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria V GZ" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Arria II GX" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone IV GX" +set_global_assignment -name ENABLE_OCT_DONE Off -family "Cyclone V" +set_global_assignment -name USE_CHECKERED_PATTERN_AS_UNINITIALIZED_RAM_CONTENT OFF +set_global_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE Off +set_global_assignment -name ENABLE_AUTONOMOUS_PCIE_HIP Off +set_global_assignment -name ENABLE_ADV_SEU_DETECTION Off +set_global_assignment -name POR_SCHEME "Instant ON" +set_global_assignment -name EN_USER_IO_WEAK_PULLUP On +set_global_assignment -name EN_SPI_IO_WEAK_PULLUP On +set_global_assignment -name POF_VERIFY_PROTECT Off +set_global_assignment -name ENABLE_SPI_MODE_CHECK Off +set_global_assignment -name FORCE_SSMCLK_TO_ISMCLK On +set_global_assignment -name FALLBACK_TO_EXTERNAL_FLASH Off +set_global_assignment -name EXTERNAL_FLASH_FALLBACK_ADDRESS 0 +set_global_assignment -name GENERATE_PMSF_FILES On +set_global_assignment -name START_TIME 0ns +set_global_assignment -name SIMULATION_MODE TIMING +set_global_assignment -name AUTO_USE_SIMULATION_PDB_NETLIST Off +set_global_assignment -name ADD_DEFAULT_PINS_TO_SIMULATION_OUTPUT_WAVEFORMS On +set_global_assignment -name SETUP_HOLD_DETECTION Off +set_global_assignment -name SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off +set_global_assignment -name CHECK_OUTPUTS Off +set_global_assignment -name SIMULATION_COVERAGE On +set_global_assignment -name SIMULATION_COMPLETE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_1_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_0_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name GLITCH_DETECTION Off +set_global_assignment -name GLITCH_INTERVAL 1ns +set_global_assignment -name SIMULATOR_GENERATE_SIGNAL_ACTIVITY_FILE Off +set_global_assignment -name SIMULATION_WITH_GLITCH_FILTERING_WHEN_GENERATING_SAF On +set_global_assignment -name SIMULATION_BUS_CHANNEL_GROUPING Off +set_global_assignment -name SIMULATION_VDB_RESULT_FLUSH On +set_global_assignment -name VECTOR_COMPARE_TRIGGER_MODE INPUT_EDGE +set_global_assignment -name SIMULATION_NETLIST_VIEWER Off +set_global_assignment -name SIMULATION_INTERCONNECT_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATION_CELL_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATOR_GENERATE_POWERPLAY_VCD_FILE Off +set_global_assignment -name SIMULATOR_PVT_TIMING_MODEL_TYPE AUTO +set_global_assignment -name SIMULATION_WITH_AUTO_GLITCH_FILTERING AUTO +set_global_assignment -name DRC_TOP_FANOUT 50 +set_global_assignment -name DRC_FANOUT_EXCEEDING 30 +set_global_assignment -name DRC_GATED_CLOCK_FEED 30 +set_global_assignment -name HARDCOPY_FLOW_AUTOMATION MIGRATION_ONLY +set_global_assignment -name ENABLE_DRC_SETTINGS Off +set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES_THRESHOLD 25 +set_global_assignment -name DRC_DETAIL_MESSAGE_LIMIT 10 +set_global_assignment -name DRC_VIOLATION_MESSAGE_LIMIT 30 +set_global_assignment -name DRC_DEADLOCK_STATE_LIMIT 2 +set_global_assignment -name MERGE_HEX_FILE Off +set_global_assignment -name GENERATE_SVF_FILE Off +set_global_assignment -name GENERATE_ISC_FILE Off +set_global_assignment -name GENERATE_JAM_FILE Off +set_global_assignment -name GENERATE_JBC_FILE Off +set_global_assignment -name GENERATE_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_SVF_FILE Off +set_global_assignment -name GENERATE_CONFIG_ISC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JAM_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_HEXOUT_FILE Off +set_global_assignment -name ISP_CLAMP_STATE_DEFAULT "Tri-state" +set_global_assignment -name HPS_EARLY_IO_RELEASE Off +set_global_assignment -name SIGNALPROBE_ALLOW_OVERUSE Off +set_global_assignment -name SIGNALPROBE_DURING_NORMAL_COMPILATION Off +set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_DEFAULT_INPUT_IO_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_USE_PVA On +set_global_assignment -name POWER_USE_INPUT_FILE "No File" +set_global_assignment -name POWER_USE_INPUT_FILES Off +set_global_assignment -name POWER_VCD_FILTER_GLITCHES On +set_global_assignment -name POWER_REPORT_SIGNAL_ACTIVITY Off +set_global_assignment -name POWER_REPORT_POWER_DISSIPATION Off +set_global_assignment -name POWER_USE_DEVICE_CHARACTERISTICS TYPICAL +set_global_assignment -name POWER_AUTO_COMPUTE_TJ On +set_global_assignment -name POWER_TJ_VALUE 25 +set_global_assignment -name POWER_USE_TA_VALUE 25 +set_global_assignment -name POWER_USE_CUSTOM_COOLING_SOLUTION Off +set_global_assignment -name POWER_BOARD_TEMPERATURE 25 +set_global_assignment -name POWER_HPS_ENABLE Off +set_global_assignment -name POWER_HPS_PROC_FREQ 0.0 +set_global_assignment -name ENABLE_SMART_VOLTAGE_ID Off +set_global_assignment -name IGNORE_PARTITIONS Off +set_global_assignment -name AUTO_EXPORT_INCREMENTAL_COMPILATION Off +set_global_assignment -name RAPID_RECOMPILE_ASSIGNMENT_CHECKING On +set_global_assignment -name OUTPUT_IO_TIMING_ENDPOINT "Near End" +set_global_assignment -name RTLV_REMOVE_FANOUT_FREE_REGISTERS On +set_global_assignment -name RTLV_SIMPLIFIED_LOGIC On +set_global_assignment -name RTLV_GROUP_RELATED_NODES On +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD Off +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD_TMV Off +set_global_assignment -name RTLV_GROUP_RELATED_NODES_TMV On +set_global_assignment -name EQC_CONSTANT_DFF_DETECTION On +set_global_assignment -name EQC_DUPLICATE_DFF_DETECTION On +set_global_assignment -name EQC_BBOX_MERGE On +set_global_assignment -name EQC_LVDS_MERGE On +set_global_assignment -name EQC_RAM_UNMERGING On +set_global_assignment -name EQC_DFF_SS_EMULATION On +set_global_assignment -name EQC_RAM_REGISTER_UNPACK On +set_global_assignment -name EQC_MAC_REGISTER_UNPACK On +set_global_assignment -name EQC_SET_PARTITION_BB_TO_VCC_GND On +set_global_assignment -name EQC_STRUCTURE_MATCHING On +set_global_assignment -name EQC_AUTO_BREAK_CONE On +set_global_assignment -name EQC_POWER_UP_COMPARE Off +set_global_assignment -name EQC_AUTO_COMP_LOOP_CUT On +set_global_assignment -name EQC_AUTO_INVERSION On +set_global_assignment -name EQC_AUTO_TERMINATE On +set_global_assignment -name EQC_SUB_CONE_REPORT Off +set_global_assignment -name EQC_RENAMING_RULES On +set_global_assignment -name EQC_PARAMETER_CHECK On +set_global_assignment -name EQC_AUTO_PORTSWAP On +set_global_assignment -name EQC_DETECT_DONT_CARES On +set_global_assignment -name EQC_SHOW_ALL_MAPPED_POINTS Off +set_global_assignment -name EDA_INPUT_GND_NAME GND -section_id ? +set_global_assignment -name EDA_INPUT_VCC_NAME VCC -section_id ? +set_global_assignment -name EDA_INPUT_DATA_FORMAT NONE -section_id ? +set_global_assignment -name EDA_SHOW_LMF_MAPPING_MESSAGES Off -section_id ? +set_global_assignment -name EDA_RUN_TOOL_AUTOMATICALLY Off -section_id ? +set_global_assignment -name RESYNTHESIS_RETIMING FULL -section_id ? +set_global_assignment -name RESYNTHESIS_OPTIMIZATION_EFFORT Normal -section_id ? +set_global_assignment -name RESYNTHESIS_PHYSICAL_SYNTHESIS Normal -section_id ? +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS On -section_id ? +set_global_assignment -name VCCPD_VOLTAGE 3.3V -section_id ? +set_global_assignment -name EDA_USER_COMPILED_SIMULATION_LIBRARY_DIRECTORY "" -section_id ? +set_global_assignment -name EDA_LAUNCH_CMD_LINE_TOOL Off -section_id ? +set_global_assignment -name EDA_ENABLE_IPUTF_MODE On -section_id ? +set_global_assignment -name EDA_NATIVELINK_PORTABLE_FILE_PATHS Off -section_id ? +set_global_assignment -name EDA_NATIVELINK_GENERATE_SCRIPT_ONLY Off -section_id ? +set_global_assignment -name EDA_WAIT_FOR_GUI_TOOL_COMPLETION Off -section_id ? +set_global_assignment -name EDA_TRUNCATE_LONG_HIERARCHY_PATHS Off -section_id ? +set_global_assignment -name EDA_FLATTEN_BUSES Off -section_id ? +set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS Off -section_id ? +set_global_assignment -name EDA_GENERATE_TIMING_CLOSURE_DATA Off -section_id ? +set_global_assignment -name EDA_GENERATE_POWER_INPUT_FILE Off -section_id ? +set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS NOT_USED -section_id ? +set_global_assignment -name EDA_RTL_SIM_MODE NOT_USED -section_id ? +set_global_assignment -name EDA_MAINTAIN_DESIGN_HIERARCHY OFF -section_id ? +set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST On -section_id ? +set_global_assignment -name EDA_WRITE_DEVICE_CONTROL_PORTS Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_TCL_FILE Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_SIGNALS_TO_TCL_FILE "All Except Combinational Logic Element Outputs" -section_id ? +set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING Off -section_id ? +set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id ? +set_global_assignment -name EDA_SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off -section_id ? +set_global_assignment -name EDA_WRITER_DONT_WRITE_TOP_ENTITY Off -section_id ? +set_global_assignment -name EDA_VHDL_ARCH_NAME structure -section_id ? +set_global_assignment -name EDA_IBIS_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_EXTENDED_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_MUTUAL_COUPLING Off -section_id ? +set_global_assignment -name EDA_FORMAL_VERIFICATION_ALLOW_RETIMING Off -section_id ? +set_global_assignment -name EDA_BOARD_BOUNDARY_SCAN_OPERATION PRE_CONFIG -section_id ? +set_global_assignment -name EDA_GENERATE_RTL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_GENERATE_GATE_LEVEL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_IBIS_SPECIFICATION_VERSION 4p2 -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_OFFSET 0ns -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_DUTY_CYCLE 50 -section_id ? +set_global_assignment -name APEX20K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MAX7K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MERCURY_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX6K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX10K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name PARTITION_PRESERVE_HIGH_SPEED_TILES On -section_id ? -entity ? +set_global_assignment -name PARTITION_IGNORE_SOURCE_FILE_CHANGES Off -section_id ? -entity ? +set_global_assignment -name PARTITION_ALWAYS_USE_QXP_NETLIST Off -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_ASSIGNMENTS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_LOGICLOCK_REGIONS UPDATE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_PROMOTE_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name ALLOW_MULTIPLE_PERSONAS Off -section_id ? -entity ? +set_global_assignment -name PARTITION_ASD_REGION_ID 1 -section_id ? -entity ? +set_global_assignment -name CROSS_BOUNDARY_OPTIMIZATIONS Off -section_id ? -entity ? +set_global_assignment -name PROPAGATE_CONSTANTS_ON_INPUTS On -section_id ? -entity ? +set_global_assignment -name PROPAGATE_INVERSIONS_ON_INPUTS On -section_id ? -entity ? +set_global_assignment -name REMOVE_LOGIC_ON_UNCONNECTED_OUTPUTS On -section_id ? -entity ? +set_global_assignment -name MERGE_EQUIVALENT_INPUTS On -section_id ? -entity ? +set_global_assignment -name MERGE_EQUIVALENT_BIDIRS On -section_id ? -entity ? +set_global_assignment -name ABSORB_PATHS_FROM_OUTPUTS_TO_INPUTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_ENABLE_STRICT_PRESERVATION Off -section_id ? -entity ? diff --git a/Vision/DE10_LITE_D8M_VIP_16/EEE_IMGPROC_hw.tcl b/Vision/DE10_LITE_D8M_VIP_16/EEE_IMGPROC_hw.tcl new file mode 100644 index 0000000..85a03e7 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/EEE_IMGPROC_hw.tcl @@ -0,0 +1,183 @@ +# TCL File Generated by Component Editor 16.0 +# Fri Apr 23 12:07:51 BST 2021 +# DO NOT MODIFY + + +# +# EEE_IMGPROC "EEE_IMGPROC" v1.0 +# 2021.04.23.12:07:51 +# +# + +# +# request TCL package from ACDS 16.0 +# +package require -exact qsys 16.0 + + +# +# module EEE_IMGPROC +# +set_module_property DESCRIPTION "" +set_module_property NAME EEE_IMGPROC +set_module_property VERSION 1.0 +set_module_property INTERNAL false +set_module_property OPAQUE_ADDRESS_MAP true +set_module_property AUTHOR "" +set_module_property DISPLAY_NAME EEE_IMGPROC +set_module_property INSTANTIATE_IN_SYSTEM_MODULE true +set_module_property EDITABLE true +set_module_property REPORT_TO_TALKBACK false +set_module_property ALLOW_GREYBOX_GENERATION false +set_module_property REPORT_HIERARCHY false + + +# +# file sets +# +add_fileset QUARTUS_SYNTH QUARTUS_SYNTH "" "" +set_fileset_property QUARTUS_SYNTH TOP_LEVEL EEE_IMGPROC +set_fileset_property QUARTUS_SYNTH ENABLE_RELATIVE_INCLUDE_PATHS false +set_fileset_property QUARTUS_SYNTH ENABLE_FILE_OVERWRITE_MODE false +add_fileset_file EEE_IMGPROC.v VERILOG PATH ip/EEE_IMGPROC/EEE_IMGPROC.v TOP_LEVEL_FILE + + +# +# parameters +# + + +# +# display items +# + + +# +# connection point clock +# +add_interface clock clock end +set_interface_property clock clockRate 0 +set_interface_property clock ENABLED true +set_interface_property clock EXPORT_OF "" +set_interface_property clock PORT_NAME_MAP "" +set_interface_property clock CMSIS_SVD_VARIABLES "" +set_interface_property clock SVD_ADDRESS_GROUP "" + +add_interface_port clock clk clk Input 1 + + +# +# connection point reset +# +add_interface reset reset end +set_interface_property reset associatedClock clock +set_interface_property reset synchronousEdges DEASSERT +set_interface_property reset ENABLED true +set_interface_property reset EXPORT_OF "" +set_interface_property reset PORT_NAME_MAP "" +set_interface_property reset CMSIS_SVD_VARIABLES "" +set_interface_property reset SVD_ADDRESS_GROUP "" + +add_interface_port reset reset_n reset_n Input 1 + + +# +# connection point avalon_streaming_sink +# +add_interface avalon_streaming_sink avalon_streaming end +set_interface_property avalon_streaming_sink associatedClock clock +set_interface_property avalon_streaming_sink associatedReset reset +set_interface_property avalon_streaming_sink dataBitsPerSymbol 8 +set_interface_property avalon_streaming_sink errorDescriptor "" +set_interface_property avalon_streaming_sink firstSymbolInHighOrderBits true +set_interface_property avalon_streaming_sink maxChannel 0 +set_interface_property avalon_streaming_sink readyLatency 1 +set_interface_property avalon_streaming_sink ENABLED true +set_interface_property avalon_streaming_sink EXPORT_OF "" +set_interface_property avalon_streaming_sink PORT_NAME_MAP "" +set_interface_property avalon_streaming_sink CMSIS_SVD_VARIABLES "" +set_interface_property avalon_streaming_sink SVD_ADDRESS_GROUP "" + +add_interface_port avalon_streaming_sink sink_data data Input 24 +add_interface_port avalon_streaming_sink sink_valid valid Input 1 +add_interface_port avalon_streaming_sink sink_ready ready Output 1 +add_interface_port avalon_streaming_sink sink_sop startofpacket Input 1 +add_interface_port avalon_streaming_sink sink_eop endofpacket Input 1 + + +# +# connection point avalon_streaming_source +# +add_interface avalon_streaming_source avalon_streaming start +set_interface_property avalon_streaming_source associatedClock clock +set_interface_property avalon_streaming_source associatedReset reset +set_interface_property avalon_streaming_source dataBitsPerSymbol 8 +set_interface_property avalon_streaming_source errorDescriptor "" +set_interface_property avalon_streaming_source firstSymbolInHighOrderBits true +set_interface_property avalon_streaming_source maxChannel 0 +set_interface_property avalon_streaming_source readyLatency 1 +set_interface_property avalon_streaming_source ENABLED true +set_interface_property avalon_streaming_source EXPORT_OF "" +set_interface_property avalon_streaming_source PORT_NAME_MAP "" +set_interface_property avalon_streaming_source CMSIS_SVD_VARIABLES "" +set_interface_property avalon_streaming_source SVD_ADDRESS_GROUP "" + +add_interface_port avalon_streaming_source source_data data Output 24 +add_interface_port avalon_streaming_source source_eop endofpacket Output 1 +add_interface_port avalon_streaming_source source_ready ready Input 1 +add_interface_port avalon_streaming_source source_sop startofpacket Output 1 +add_interface_port avalon_streaming_source source_valid valid Output 1 + + +# +# connection point s1 +# +add_interface s1 avalon end +set_interface_property s1 addressUnits WORDS +set_interface_property s1 associatedClock clock +set_interface_property s1 associatedReset reset +set_interface_property s1 bitsPerSymbol 8 +set_interface_property s1 burstOnBurstBoundariesOnly false +set_interface_property s1 burstcountUnits WORDS +set_interface_property s1 explicitAddressSpan 0 +set_interface_property s1 holdTime 0 +set_interface_property s1 linewrapBursts false +set_interface_property s1 maximumPendingReadTransactions 0 +set_interface_property s1 maximumPendingWriteTransactions 0 +set_interface_property s1 readLatency 0 +set_interface_property s1 readWaitTime 1 +set_interface_property s1 setupTime 0 +set_interface_property s1 timingUnits Cycles +set_interface_property s1 writeWaitTime 0 +set_interface_property s1 ENABLED true +set_interface_property s1 EXPORT_OF "" +set_interface_property s1 PORT_NAME_MAP "" +set_interface_property s1 CMSIS_SVD_VARIABLES "" +set_interface_property s1 SVD_ADDRESS_GROUP "" + +add_interface_port s1 s_chipselect chipselect Input 1 +add_interface_port s1 s_read read Input 1 +add_interface_port s1 s_write write Input 1 +add_interface_port s1 s_readdata readdata Output 32 +add_interface_port s1 s_writedata writedata Input 32 +add_interface_port s1 s_address address Input 3 +set_interface_assignment s1 embeddedsw.configuration.isFlash 0 +set_interface_assignment s1 embeddedsw.configuration.isMemoryDevice 0 +set_interface_assignment s1 embeddedsw.configuration.isNonVolatileStorage 0 +set_interface_assignment s1 embeddedsw.configuration.isPrintableDevice 0 + + +# +# connection point conduit_mode +# +add_interface conduit_mode conduit end +set_interface_property conduit_mode associatedClock clock +set_interface_property conduit_mode associatedReset "" +set_interface_property conduit_mode ENABLED true +set_interface_property conduit_mode EXPORT_OF "" +set_interface_property conduit_mode PORT_NAME_MAP "" +set_interface_property conduit_mode CMSIS_SVD_VARIABLES "" +set_interface_property conduit_mode SVD_ADDRESS_GROUP "" + +add_interface_port conduit_mode mode new_signal Input 1 + diff --git a/Vision/DE10_LITE_D8M_VIP_16/FpsMonitor.v b/Vision/DE10_LITE_D8M_VIP_16/FpsMonitor.v new file mode 100644 index 0000000..b3659b0 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/FpsMonitor.v @@ -0,0 +1,82 @@ +module FpsMonitor( + input clk50, + input vs, + + // output frame pixel data + output reg [7:0] fps, + output wire [6:0] hex_fps_h, + output wire [6:0] hex_fps_l + +); + + +parameter ONE_SEC = 32'd50_000_000; + +reg [3:0] fps_h; +reg [3:0] fps_l; + +reg [7:0] rfps; +reg [3:0] rfps_l; +reg [3:0] rfps_h; + +reg [26:0] sec_cnt; +reg pre_vs; +wire one_sec_mask; + +assign one_sec_mask = (sec_cnt>= (ONE_SEC - 1'b1) )?1'b1:1'b0; + +always @(posedge clk50) + if(one_sec_mask) sec_cnt <= 27'h0; + else sec_cnt <= sec_cnt + 1'b1; + + +always @(posedge clk50) begin + pre_vs <= vs; + if(sec_cnt == 27'd0) begin + rfps <= 8'd0; + rfps_h <= 4'd0; + rfps_l <= 4'd0; + end + else if({pre_vs,vs} == 2'b01) begin + rfps <= rfps + 1'b1; + + if(rfps_l == 4'd9) begin + rfps_l <= 4'd0; + rfps_h <= rfps_h + 1'b1; + end + else rfps_l <= rfps_l + 1'b1; + end + +end + + +always @ (posedge clk50) + if(one_sec_mask) begin + fps <= rfps; + fps_h <= rfps_h; + fps_l <= rfps_l; + end + +assign hex_fps_h = (fps_h == 4'd0)?7'h40: //0 + (fps_h == 4'd1)?7'h79: //1 + (fps_h == 4'd2)?7'h24: //2 + (fps_h == 4'd3)?7'h30: //3 + (fps_h == 4'd4)?7'h19: //4 + (fps_h == 4'd5)?7'h12: //5 + (fps_h == 4'd6)?7'h02: //6 + (fps_h == 4'd7)?7'h78: //7 + (fps_h == 4'd8)?7'h00: //8 + 7'h10; //9 + +assign hex_fps_l = (fps_l == 4'd0)?7'h40: //0 + (fps_l == 4'd1)?7'h79: //1 + (fps_l == 4'd2)?7'h24: //2 + (fps_l == 4'd3)?7'h30: //3 + (fps_l == 4'd4)?7'h19: //4 + (fps_l == 4'd5)?7'h12: //5 + (fps_l == 4'd6)?7'h02: //6 + (fps_l == 4'd7)?7'h78: //7 + (fps_l == 4'd8)?7'h00: //8 + 7'h10; //9 +endmodule + diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys.qsys b/Vision/DE10_LITE_D8M_VIP_16/Qsys.qsys new file mode 100644 index 0000000..08eeb63 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys.qsys @@ -0,0 +1,1471 @@ + + + + + + + + + + + + + + + + + DE10_LITE_D8M_VIP.qpf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MyFrameBuffer640480813falsetrue0true0000000032false1024410244110000false]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CT#CLK2_DIVIDE_BY 1 CT#PORT_clk5 PORT_UNUSED CT#PORT_clk4 PORT_USED CT#PORT_clk3 PORT_USED CT#PORT_clk2 PORT_USED CT#PORT_clk1 PORT_USED CT#PORT_clk0 PORT_USED CT#CLK0_MULTIPLY_BY 2 CT#PORT_SCANWRITE PORT_UNUSED CT#PORT_SCANACLR PORT_UNUSED CT#PORT_PFDENA PORT_UNUSED CT#CLK3_DUTY_CYCLE 50 CT#CLK3_DIVIDE_BY 2 CT#PORT_PLLENA PORT_UNUSED CT#PORT_SCANDATA PORT_UNUSED CT#CLK3_PHASE_SHIFT 0 CT#PORT_SCANCLKENA PORT_UNUSED CT#CLK4_DIVIDE_BY 5 CT#WIDTH_CLOCK 5 CT#PORT_SCANDATAOUT PORT_UNUSED CT#CLK4_MULTIPLY_BY 2 CT#LPM_TYPE altpll CT#PLL_TYPE AUTO CT#CLK0_PHASE_SHIFT 0 CT#CLK1_DUTY_CYCLE 50 CT#PORT_PHASEDONE PORT_UNUSED CT#OPERATION_MODE NORMAL CT#PORT_CONFIGUPDATE PORT_UNUSED CT#CLK1_MULTIPLY_BY 2 CT#COMPENSATE_CLOCK CLK0 CT#PORT_CLKSWITCH PORT_UNUSED CT#CLK4_PHASE_SHIFT 0 CT#INCLK0_INPUT_FREQUENCY 20000 CT#CLK4_DUTY_CYCLE 50 CT#PORT_SCANDONE PORT_UNUSED CT#PORT_CLKLOSS PORT_UNUSED CT#PORT_INCLK1 PORT_UNUSED CT#AVALON_USE_SEPARATE_SYSCLK NO CT#PORT_INCLK0 PORT_USED CT#PORT_clkena5 PORT_UNUSED CT#PORT_clkena4 PORT_UNUSED CT#PORT_clkena3 PORT_UNUSED CT#PORT_clkena2 PORT_UNUSED CT#PORT_clkena1 PORT_UNUSED CT#PORT_clkena0 PORT_UNUSED CT#CLK1_PHASE_SHIFT 7500 CT#PORT_ARESET PORT_USED CT#BANDWIDTH_TYPE AUTO CT#CLK2_MULTIPLY_BY 2 CT#INTENDED_DEVICE_FAMILY {MAX 10} CT#PORT_SCANREAD PORT_UNUSED CT#CLK2_DUTY_CYCLE 50 CT#PORT_PHASESTEP PORT_UNUSED CT#PORT_SCANCLK PORT_UNUSED CT#PORT_CLKBAD1 PORT_UNUSED CT#PORT_CLKBAD0 PORT_UNUSED CT#PORT_FBIN PORT_UNUSED CT#PORT_PHASEUPDOWN PORT_UNUSED CT#PORT_extclk3 PORT_UNUSED CT#PORT_extclk2 PORT_UNUSED CT#PORT_extclk1 PORT_UNUSED CT#PORT_PHASECOUNTERSELECT PORT_UNUSED CT#PORT_extclk0 PORT_UNUSED CT#PORT_ACTIVECLOCK PORT_UNUSED CT#CLK2_PHASE_SHIFT 0 CT#CLK0_DUTY_CYCLE 50 CT#CLK0_DIVIDE_BY 1 CT#CLK1_DIVIDE_BY 1 CT#CLK3_MULTIPLY_BY 1 CT#PORT_LOCKED PORT_USED + altpll_avalon_elaboration + altpll_avalon_post_edit + IF#phasecounterselect {input 3} IF#locked {output 0} IF#reset {input 0} IF#clk {input 0} IF#phaseupdown {input 0} IF#scandone {output 0} IF#readdata {output 32} IF#write {input 0} IF#scanclk {input 0} IF#phasedone {output 0} IF#c4 {output 0} IF#c3 {output 0} IF#address {input 2} IF#c2 {output 0} IF#c1 {output 0} IF#c0 {output 0} IF#writedata {input 32} IF#read {input 0} IF#areset {input 0} IF#scanclkena {input 0} IF#scandataout {output 0} IF#configupdate {input 0} IF#phasestep {input 0} IF#scandata {input 0} + + IN#WIDTH_CLOCK 1 IN#CLK0_DUTY_CYCLE 1 IN#CLK2_DIVIDE_BY 1 IN#PLL_TARGET_HARCOPY_CHECK 1 IN#CLK3_DIVIDE_BY 1 IN#CLK4_MULTIPLY_BY 1 IN#CLK1_MULTIPLY_BY 1 IN#CLK3_DUTY_CYCLE 1 IN#CLK4_DIVIDE_BY 1 IN#SWITCHOVER_COUNT_EDIT 1 IN#INCLK0_INPUT_FREQUENCY 1 IN#PLL_LVDS_PLL_CHECK 1 IN#PLL_AUTOPLL_CHECK 1 IN#PLL_FASTPLL_CHECK 1 IN#CLK1_DUTY_CYCLE 1 IN#PLL_ENHPLL_CHECK 1 IN#CLK2_MULTIPLY_BY 1 IN#DIV_FACTOR4 1 IN#DIV_FACTOR3 1 IN#DIV_FACTOR2 1 IN#DIV_FACTOR1 1 IN#DIV_FACTOR0 1 IN#LVDS_MODE_DATA_RATE_DIRTY 1 IN#CLK4_DUTY_CYCLE 1 IN#GLOCK_COUNTER_EDIT 1 IN#CLK2_DUTY_CYCLE 1 IN#CLK0_DIVIDE_BY 1 IN#CLK3_MULTIPLY_BY 1 IN#MULT_FACTOR4 1 IN#MULT_FACTOR3 1 IN#MULT_FACTOR2 1 IN#MULT_FACTOR1 1 IN#MULT_FACTOR0 1 IN#CLK0_MULTIPLY_BY 1 IN#USE_MIL_SPEED_GRADE 1 IN#CLK1_DIVIDE_BY 1 + MF#areset 1 MF#clk 1 MF#locked 1 MF#inclk 1 + PT#GLOCKED_FEATURE_ENABLED 0 PT#SPREAD_FEATURE_ENABLED 0 PT#BANDWIDTH_FREQ_UNIT MHz PT#CUR_DEDICATED_CLK c0 PT#INCLK0_FREQ_EDIT 50.000 PT#BANDWIDTH_PRESET Low PT#PLL_LVDS_PLL_CHECK 0 PT#BANDWIDTH_USE_PRESET 0 PT#AVALON_USE_SEPARATE_SYSCLK NO PT#OUTPUT_FREQ_UNIT4 MHz PT#OUTPUT_FREQ_UNIT3 MHz PT#PLL_ENHPLL_CHECK 0 PT#OUTPUT_FREQ_UNIT2 MHz PT#OUTPUT_FREQ_UNIT1 MHz PT#OUTPUT_FREQ_UNIT0 MHz PT#PHASE_RECONFIG_FEATURE_ENABLED 1 PT#CREATE_CLKBAD_CHECK 0 PT#CLKSWITCH_CHECK 0 PT#INCLK1_FREQ_EDIT 100.000 PT#NORMAL_MODE_RADIO 1 PT#SRC_SYNCH_COMP_RADIO 0 PT#PLL_ARESET_CHECK 1 PT#LONG_SCAN_RADIO 1 PT#SCAN_FEATURE_ENABLED 1 PT#USE_CLK4 1 PT#USE_CLK3 1 PT#USE_CLK2 1 PT#PHASE_RECONFIG_INPUTS_CHECK 0 PT#USE_CLK1 1 PT#USE_CLK0 1 PT#PRIMARY_CLK_COMBO inclk0 PT#BANDWIDTH 1.000 PT#GLOCKED_COUNTER_EDIT_CHANGED 1 PT#PLL_FASTPLL_CHECK 0 PT#SPREAD_FREQ_UNIT KHz PT#LVDS_PHASE_SHIFT_UNIT4 deg PT#LVDS_PHASE_SHIFT_UNIT3 deg PT#PLL_AUTOPLL_CHECK 1 PT#OUTPUT_FREQ_MODE4 1 PT#LVDS_PHASE_SHIFT_UNIT2 deg PT#OUTPUT_FREQ_MODE3 1 PT#LVDS_PHASE_SHIFT_UNIT1 deg PT#OUTPUT_FREQ_MODE2 1 PT#LVDS_PHASE_SHIFT_UNIT0 deg PT#OUTPUT_FREQ_MODE1 1 PT#SWITCHOVER_FEATURE_ENABLED 0 PT#MIG_DEVICE_SPEED_GRADE Any PT#OUTPUT_FREQ_MODE0 1 PT#BANDWIDTH_FEATURE_ENABLED 1 PT#INCLK0_FREQ_UNIT_COMBO MHz PT#ZERO_DELAY_RADIO 0 PT#OUTPUT_FREQ4 20.00000000 PT#OUTPUT_FREQ3 25.00000000 PT#OUTPUT_FREQ2 100.00000000 PT#OUTPUT_FREQ1 100.00000000 PT#OUTPUT_FREQ0 100.00000000 PT#SHORT_SCAN_RADIO 0 PT#LVDS_MODE_DATA_RATE_DIRTY 0 PT#CUR_FBIN_CLK c0 PT#PLL_ADVANCED_PARAM_CHECK 0 PT#CLKBAD_SWITCHOVER_CHECK 0 PT#PHASE_SHIFT_STEP_ENABLED_CHECK 0 PT#DEVICE_SPEED_GRADE 6 PT#PLL_FBMIMIC_CHECK 0 PT#LVDS_MODE_DATA_RATE {Not Available} PT#PHASE_SHIFT4 0.00000000 PT#LOCKED_OUTPUT_CHECK 1 PT#SPREAD_PERCENT 0.500 PT#PHASE_SHIFT3 0.00000000 PT#DIV_FACTOR4 1 PT#PHASE_SHIFT2 0.00000000 PT#DIV_FACTOR3 1 PT#PHASE_SHIFT1 270.00000000 PT#DIV_FACTOR2 1 PT#PHASE_SHIFT0 0.00000000 PT#DIV_FACTOR1 1 PT#DIV_FACTOR0 1 PT#CNX_NO_COMPENSATE_RADIO 0 PT#USE_CLKENA4 0 PT#USE_CLKENA3 0 PT#USE_CLKENA2 0 PT#USE_CLKENA1 0 PT#USE_CLKENA0 0 PT#CREATE_INCLK1_CHECK 0 PT#GLOCK_COUNTER_EDIT 1048575 PT#INCLK1_FREQ_UNIT_COMBO MHz PT#EFF_OUTPUT_FREQ_VALUE4 20.000000 PT#EFF_OUTPUT_FREQ_VALUE3 25.000000 PT#EFF_OUTPUT_FREQ_VALUE2 100.000000 PT#EFF_OUTPUT_FREQ_VALUE1 100.000000 PT#EFF_OUTPUT_FREQ_VALUE0 100.000000 PT#SPREAD_FREQ 50.000 PT#USE_MIL_SPEED_GRADE 0 PT#EXPLICIT_SWITCHOVER_COUNTER 0 PT#STICKY_CLK4 1 PT#STICKY_CLK3 1 PT#STICKY_CLK2 1 PT#STICKY_CLK1 1 PT#STICKY_CLK0 1 PT#MIRROR_CLK4 0 PT#EXT_FEEDBACK_RADIO 0 PT#MIRROR_CLK3 0 PT#MIRROR_CLK2 0 PT#MIRROR_CLK1 0 PT#SWITCHOVER_COUNT_EDIT 1 PT#MIRROR_CLK0 0 PT#SELF_RESET_LOCK_LOSS 0 PT#PLL_PFDENA_CHECK 0 PT#INT_FEEDBACK__MODE_RADIO 1 PT#INCLK1_FREQ_EDIT_CHANGED 1 PT#SYNTH_WRAPPER_GEN_POSTFIX 0 PT#CLKLOSS_CHECK 0 PT#PHASE_SHIFT_UNIT4 deg PT#PHASE_SHIFT_UNIT3 deg PT#PHASE_SHIFT_UNIT2 deg PT#PHASE_SHIFT_UNIT1 deg PT#PHASE_SHIFT_UNIT0 deg PT#BANDWIDTH_USE_AUTO 1 PT#HAS_MANUAL_SWITCHOVER 1 PT#MULT_FACTOR4 1 PT#MULT_FACTOR3 1 PT#MULT_FACTOR2 1 PT#MULT_FACTOR1 1 PT#MULT_FACTOR0 1 PT#SPREAD_USE 0 PT#GLOCKED_MODE_CHECK 0 PT#DUTY_CYCLE4 50.00000000 PT#DUTY_CYCLE3 50.00000000 PT#DUTY_CYCLE2 50.00000000 PT#SACN_INPUTS_CHECK 0 PT#DUTY_CYCLE1 50.00000000 PT#INTENDED_DEVICE_FAMILY {MAX 10} PT#DUTY_CYCLE0 50.00000000 PT#PLL_TARGET_HARCOPY_CHECK 0 PT#INCLK1_FREQ_UNIT_CHANGED 1 PT#RECONFIG_FILE ALTPLL1472001986172141.mif PT#ACTIVECLK_CHECK 0 + UP#locked used UP#c4 used UP#c3 used UP#c2 used UP#c1 used UP#c0 used UP#areset used UP#inclk0 used + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NO_INTERACTIVE_WINDOWS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + ADDRESS_STALL 1 ADVANCED_INFO 0 ALLOWS_COMPILING_OTHER_FAMILY_IP 1 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 1 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 0 ENABLE_PHYSICAL_DESIGN_PLANNER 0 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 FPP_COMPLETELY_PLACES_AND_ROUTES_PERIPHERY 0 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 0 HARDCOPY 0 HAS_18_BIT_MULTS 0 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 0 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 0 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 0 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 1 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 0 HAS_BSDL_FILE_GENERATION 0 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 0 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 0 HAS_DDB_FDI_SUPPORT 0 HAS_DESIGN_ANALYZER_SUPPORT 0 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 0 HAS_ERROR_DETECTION_SUPPORT 0 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 0 HAS_FPGA_XCHANGE_SUPPORT 0 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 0 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 0 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 0 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_IDB_SUPPORT 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 0 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_PLACEMENT_USING_GEOMETRY_RULE 0 HAS_IO_PLACEMENT_USING_PHYSIC_RULE 0 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NADDER_STYLE_CLOCKING 0 HAS_NADDER_STYLE_FF 0 HAS_NADDER_STYLE_LCELL_COMB 0 HAS_NEW_CDB_NAME_FOR_M20K_SCLR 0 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 1 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 0 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PHYSICAL_DESIGN_PLANNER_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 0 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 0 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 0 HAS_PVA_SUPPORT 1 HAS_QUARTUS_HIERARCHICAL_DESIGN_SUPPORT 0 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 1 HAS_SYNTHESIS_ON_ATOMS 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 0 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 1 HAS_VCCPD_POWER_RAIL 0 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO2_WRITER_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 0 IFP_USE_LEGACY_IO_CHECKER 0 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 1 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_FOR_INTERNAL_TESTING_ONLY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 IS_SMI_PART 0 LOAD_BLK_TYPE_DATA_FROM_ATOM_WYS_INFO 0 LVDS_IO 0 M10K_MEMORY 0 M144K_MEMORY 0 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 1 MLAB_MEMORY 0 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 0 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 0 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 0 PROGRAMMER_ONLY 0 PROGRAMMER_SUPPORT 1 PVA_SUPPORTS_ONLY_SUBSET_OF_ATOMS 0 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 REQUIRE_QUARTUS_HIERARCHICAL_DESIGN 0 REQUIRE_SPECIAL_HANDLING_FOR_LOCAL_LABLINE 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RESTRICT_PARTIAL_RECONFIG 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 0 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 0 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 0 SUPPORTS_HIPI_RETIMING 0 SUPPORTS_MAC_CHAIN_OUT_ADDER 0 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 SUPPORTS_VID 0 TMV_RUN_CUSTOMIZABLE_VIEWER 0 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 0 TRANSCEIVER_6G_BLOCK 0 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_NETWORK_ROUTING_POWER_CALCULATOR 0 USES_PART_INFO_FOR_DISPLAYING_CORE_VOLTAGE_VALUE 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_PVAFAM2 0 USES_SECOND_GENERATION_PART_INFO 0 USES_SECOND_GENERATION_POWER_ANALYZER 0 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USES_XML_FORMAT_FOR_EMIF_PIN_MAP_FILE 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 1 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 0 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 0 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1 + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $${FILENAME}_onchip_memory2_0 + + + + + + ADDRESS_STALL 1 ADVANCED_INFO 0 ALLOWS_COMPILING_OTHER_FAMILY_IP 1 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 1 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 0 ENABLE_PHYSICAL_DESIGN_PLANNER 0 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 FPP_COMPLETELY_PLACES_AND_ROUTES_PERIPHERY 0 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 0 HARDCOPY 0 HAS_18_BIT_MULTS 0 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 0 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 0 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 0 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 1 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 0 HAS_BSDL_FILE_GENERATION 0 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 0 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 0 HAS_DDB_FDI_SUPPORT 0 HAS_DESIGN_ANALYZER_SUPPORT 0 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 0 HAS_ERROR_DETECTION_SUPPORT 0 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 0 HAS_FPGA_XCHANGE_SUPPORT 0 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 0 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 0 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 0 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_IDB_SUPPORT 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 0 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_PLACEMENT_USING_GEOMETRY_RULE 0 HAS_IO_PLACEMENT_USING_PHYSIC_RULE 0 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NADDER_STYLE_CLOCKING 0 HAS_NADDER_STYLE_FF 0 HAS_NADDER_STYLE_LCELL_COMB 0 HAS_NEW_CDB_NAME_FOR_M20K_SCLR 0 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 1 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 0 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PHYSICAL_DESIGN_PLANNER_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 0 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 0 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 0 HAS_PVA_SUPPORT 1 HAS_QUARTUS_HIERARCHICAL_DESIGN_SUPPORT 0 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 1 HAS_SYNTHESIS_ON_ATOMS 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 0 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 1 HAS_VCCPD_POWER_RAIL 0 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO2_WRITER_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 0 IFP_USE_LEGACY_IO_CHECKER 0 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 1 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_FOR_INTERNAL_TESTING_ONLY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 IS_SMI_PART 0 LOAD_BLK_TYPE_DATA_FROM_ATOM_WYS_INFO 0 LVDS_IO 0 M10K_MEMORY 0 M144K_MEMORY 0 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 1 MLAB_MEMORY 0 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 0 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 0 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 0 PROGRAMMER_ONLY 0 PROGRAMMER_SUPPORT 1 PVA_SUPPORTS_ONLY_SUBSET_OF_ATOMS 0 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 REQUIRE_QUARTUS_HIERARCHICAL_DESIGN 0 REQUIRE_SPECIAL_HANDLING_FOR_LOCAL_LABLINE 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RESTRICT_PARTIAL_RECONFIG 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 0 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 0 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 0 SUPPORTS_HIPI_RETIMING 0 SUPPORTS_MAC_CHAIN_OUT_ADDER 0 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 SUPPORTS_VID 0 TMV_RUN_CUSTOMIZABLE_VIEWER 0 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 0 TRANSCEIVER_6G_BLOCK 0 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_NETWORK_ROUTING_POWER_CALCULATOR 0 USES_PART_INFO_FOR_DISPLAYING_CORE_VOLTAGE_VALUE 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_PVAFAM2 0 USES_SECOND_GENERATION_PART_INFO 0 USES_SECOND_GENERATION_POWER_ANALYZER 0 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USES_XML_FORMAT_FOR_EMIF_PIN_MAP_FILE 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 1 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 0 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 0 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + single_Micron_MT48LC4M32B2_7_chip + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys.sopcinfo b/Vision/DE10_LITE_D8M_VIP_16/Qsys.sopcinfo new file mode 100644 index 0000000..c3b5fca --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys.sopcinfo @@ -0,0 +1,21866 @@ + + + + + + + java.lang.Integer + 1621008007 + false + true + false + true + GENERATION_ID + + + java.lang.String + + false + true + false + true + UNIQUE_ID + + + java.lang.String + MAX10FPGA + false + true + false + true + DEVICE_FAMILY + + + java.lang.String + 10M50DAF484C7G + false + true + false + true + DEVICE + + + java.lang.String + 7 + false + true + false + true + DEVICE_SPEEDGRADE + + + java.lang.Long + -1 + false + true + false + true + CLOCK_RATE + clk + + + java.lang.Integer + -1 + false + true + false + true + CLOCK_DOMAIN + clk + + + java.lang.Integer + -1 + false + true + false + true + RESET_DOMAIN + clk + + + java.lang.String + MAX 10 + false + true + false + true + DEVICE_FAMILY + + + boolean + false + false + true + true + true + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clock + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + java.lang.String + clock + false + true + false + true + + + java.lang.String + reset + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + false + true + + + [Ljava.lang.String; + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + int + 1 + false + true + true + true + + + int + 1 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_streaming + false + + sink_data + Input + 24 + data + + + sink_valid + Input + 1 + valid + + + sink_ready + Output + 1 + ready + + + sink_sop + Input + 1 + startofpacket + + + sink_eop + Input + 1 + endofpacket + + + + + + java.lang.String + clock + false + true + false + true + + + java.lang.String + reset + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + false + true + + + [Ljava.lang.String; + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + int + 1 + false + true + true + true + + + int + 1 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_streaming + true + + source_data + Output + 24 + data + + + source_eop + Output + 1 + endofpacket + + + source_ready + Input + 1 + ready + + + source_sop + Output + 1 + startofpacket + + + source_valid + Output + 1 + valid + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 32 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clock + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + s_chipselect + Input + 1 + chipselect + + + s_read + Input + 1 + read + + + s_write + Input + 1 + write + + + s_readdata + Output + 32 + readdata + + + s_writedata + Input + 32 + writedata + + + s_address + Input + 3 + address + + + + + + java.lang.String + clock + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + mode + Input + 1 + new_signal + + + + + + + int + 640 + false + true + true + true + + + int + 480 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clock + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 32 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clock + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + s_chipselect + Input + 1 + chipselect + + + s_read + Input + 1 + read + + + s_write + Input + 1 + write + + + s_readdata + Output + 32 + readdata + + + s_writedata + Input + 32 + writedata + + + s_address + Input + 3 + address + + + + + + java.lang.String + clock + false + true + false + true + + + java.lang.String + reset + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + false + true + + + [Ljava.lang.String; + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + int + 1 + false + true + true + true + + + int + 1 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_streaming + false + + sink_data + Input + 24 + data + + + sink_valid + Input + 1 + valid + + + sink_ready + Output + 1 + ready + + + sink_sop + Input + 1 + startofpacket + + + sink_eop + Input + 1 + endofpacket + + + + + + java.lang.String + clock + false + true + false + true + + + java.lang.String + reset + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + false + true + + + [Ljava.lang.String; + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + int + 1 + false + true + true + true + + + int + 1 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_streaming + true + + source_data + Output + 24 + data + + + source_valid + Output + 1 + valid + + + source_ready + Input + 1 + ready + + + source_sop + Output + 1 + startofpacket + + + source_eop + Output + 1 + endofpacket + + + + + + java.lang.String + clock + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + vcm_i2c_sda + Bidir + 1 + vcm_i2c_sda + + + clk50 + Input + 1 + clk50 + + + vcm_i2c_scl + Bidir + 1 + vcm_i2c_scl + + + + + + + int + 640 + false + true + true + true + + + int + 480 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clock_reset + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + CAMERA_D + Input + 12 + export + + + CAMERA_FVAL + Input + 1 + export + + + CAMERA_LVAL + Input + 1 + export + + + CAMERA_PIXCLK + Input + 1 + export + + + + + + java.lang.String + clock_reset + false + true + false + true + + + java.lang.String + clock_reset_reset + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + false + true + + + [Ljava.lang.String; + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + int + 1 + false + true + true + true + + + int + 1 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_streaming + true + + st_data + Output + 24 + data + + + st_sop + Output + 1 + startofpacket + + + st_eop + Output + 1 + endofpacket + + + st_ready + Input + 1 + ready + + + st_valid + Output + 1 + valid + + + + + + + java.lang.String + MAX10FPGA + false + true + false + true + DEVICE_FAMILY + + + int + 3 + false + true + true + true + + + int + 1 + false + true + true + true + + + int + 8 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 640 + false + true + true + true + + + int + 480 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 640 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + true + true + + + int + 639 + false + true + true + true + + + int + 1 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 96 + false + true + true + true + + + int + 16 + false + true + true + true + + + int + 48 + false + true + true + true + + + int + 2 + false + true + true + true + + + int + 10 + false + true + true + true + + + int + 33 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + is_clk + Input + 1 + clk + + + + + + java.lang.String + is_clk_rst + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + rst + Input + 1 + reset + + + + + + java.lang.String + is_clk_rst + false + true + false + true + + + java.lang.String + is_clk_rst_reset + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + false + true + + + [Ljava.lang.String; + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + int + 1 + false + true + true + true + + + int + 3 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_streaming + false + + is_data + Input + 24 + data + + + is_valid + Input + 1 + valid + + + is_ready + Output + 1 + ready + + + is_sop + Input + 1 + startofpacket + + + is_eop + Input + 1 + endofpacket + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + vid_clk + Input + 1 + export + + + vid_data + Output + 24 + export + + + underflow + Output + 1 + export + + + vid_datavalid + Output + 1 + export + + + vid_v_sync + Output + 1 + export + + + vid_h_sync + Output + 1 + export + + + vid_f + Output + 1 + export + + + vid_h + Output + 1 + export + + + vid_v + Output + 1 + export + + + + + + + java.lang.String + 0 + true + true + true + true + + + java.lang.String + 0 + true + true + true + true + + + java.lang.String + 2 + true + true + true + true + + + java.lang.String + 0 + true + true + true + true + + + java.lang.String + 2 + true + true + true + true + + + java.lang.String + MAX10FPGA + false + true + false + true + DEVICE_FAMILY + + + java.lang.String + 0 + true + true + true + true + + + java.lang.String + 0 + true + true + true + true + + + java.lang.String + 0 + true + true + true + true + + + java.lang.String + 27 + true + true + true + true + + + java.lang.String + 27 + true + true + true + true + + + java.lang.String + MyFrameBuffer640480813falsetrue0true0000000032false1024410244110000false]]> + false + true + false + true + + + java.lang.String + MAX 10 + false + true + false + true + DEVICE_FAMILY + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + clock + Input + 1 + clk + + + + + + java.lang.String + clock + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset + Input + 1 + reset + + + + + + java.lang.String + clock + false + true + false + true + + + java.lang.String + reset + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + false + true + + + [Ljava.lang.String; + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + int + 1 + false + true + true + true + + + int + 3 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_streaming + false + + din_ready + Output + 1 + ready + + + din_valid + Input + 1 + valid + + + din_data + Input + 24 + data + + + din_startofpacket + Input + 1 + startofpacket + + + din_endofpacket + Input + 1 + endofpacket + + + + + + java.lang.String + clock + false + true + false + true + + + java.lang.String + reset + false + true + false + true + + + int + 1 + false + true + false + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + false + true + + + [Ljava.lang.String; + + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + + false + true + false + true + + + int + 1 + false + true + true + true + + + int + 3 + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon_streaming + true + + dout_ready + Input + 1 + ready + + + dout_valid + Output + 1 + valid + + + dout_data + Output + 24 + data + + + dout_startofpacket + Output + 1 + startofpacket + + + dout_endofpacket + Output + 1 + endofpacket + + + + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + int + 1 + false + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + SYMBOLS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clock + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 32 + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + true + + read_master_av_address + Output + 32 + address + + + read_master_av_read + Output + 1 + read + + + read_master_av_waitrequest + Input + 1 + waitrequest + + + read_master_av_readdatavalid + Input + 1 + readdatavalid + + + read_master_av_readdata + Input + 32 + readdata + + + read_master_av_burstcount + Output + 3 + burstcount + + + false + sdram + s1 + sdram.s1 + 67108864 + 67108864 + + + + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + int + 1 + false + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + SYMBOLS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clock + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 32 + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + true + + write_master_av_address + Output + 32 + address + + + write_master_av_write + Output + 1 + write + + + write_master_av_writedata + Output + 32 + writedata + + + write_master_av_waitrequest + Input + 1 + waitrequest + + + write_master_av_burstcount + Output + 3 + burstcount + + + false + sdram + s1 + sdram.s1 + 67108864 + 67108864 + + + + + + + java.lang.String + altpll_avalon_elaboration + false + true + false + true + + + java.lang.String + altpll_avalon_post_edit + false + true + false + true + + + java.lang.String + MAX 10 + false + true + true + true + + + java.lang.String + 5 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + 20000 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + NORMAL + false + true + true + true + + + java.lang.String + AUTO + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + CLK0 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + AUTO + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + 2 + false + true + true + true + + + java.lang.String + 2 + false + true + true + true + + + java.lang.String + 2 + false + true + true + true + + + java.lang.String + 1 + false + true + true + true + + + java.lang.String + 2 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + 1 + false + true + true + true + + + java.lang.String + 1 + false + true + true + true + + + java.lang.String + 1 + false + true + true + true + + + java.lang.String + 2 + false + true + true + true + + + java.lang.String + 5 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + 0 + false + true + true + true + + + java.lang.String + 7500 + false + true + true + true + + + java.lang.String + 0 + false + true + true + true + + + java.lang.String + 0 + false + true + true + true + + + java.lang.String + 0 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + 50 + false + true + true + true + + + java.lang.String + 50 + false + true + true + true + + + java.lang.String + 50 + false + true + true + true + + + java.lang.String + 50 + false + true + true + true + + + java.lang.String + 50 + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_USED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + PORT_UNUSED + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + NO + false + true + true + true + + + java.lang.String + CT#CLK2_DIVIDE_BY 1 CT#PORT_clk5 PORT_UNUSED CT#PORT_clk4 PORT_USED CT#PORT_clk3 PORT_USED CT#PORT_clk2 PORT_USED CT#PORT_clk1 PORT_USED CT#PORT_clk0 PORT_USED CT#CLK0_MULTIPLY_BY 2 CT#PORT_SCANWRITE PORT_UNUSED CT#PORT_SCANACLR PORT_UNUSED CT#PORT_PFDENA PORT_UNUSED CT#CLK3_DUTY_CYCLE 50 CT#CLK3_DIVIDE_BY 2 CT#PORT_PLLENA PORT_UNUSED CT#PORT_SCANDATA PORT_UNUSED CT#CLK3_PHASE_SHIFT 0 CT#PORT_SCANCLKENA PORT_UNUSED CT#CLK4_DIVIDE_BY 5 CT#WIDTH_CLOCK 5 CT#PORT_SCANDATAOUT PORT_UNUSED CT#CLK4_MULTIPLY_BY 2 CT#LPM_TYPE altpll CT#PLL_TYPE AUTO CT#CLK0_PHASE_SHIFT 0 CT#CLK1_DUTY_CYCLE 50 CT#PORT_PHASEDONE PORT_UNUSED CT#OPERATION_MODE NORMAL CT#PORT_CONFIGUPDATE PORT_UNUSED CT#CLK1_MULTIPLY_BY 2 CT#COMPENSATE_CLOCK CLK0 CT#PORT_CLKSWITCH PORT_UNUSED CT#CLK4_PHASE_SHIFT 0 CT#INCLK0_INPUT_FREQUENCY 20000 CT#CLK4_DUTY_CYCLE 50 CT#PORT_SCANDONE PORT_UNUSED CT#PORT_CLKLOSS PORT_UNUSED CT#PORT_INCLK1 PORT_UNUSED CT#AVALON_USE_SEPARATE_SYSCLK NO CT#PORT_INCLK0 PORT_USED CT#PORT_clkena5 PORT_UNUSED CT#PORT_clkena4 PORT_UNUSED CT#PORT_clkena3 PORT_UNUSED CT#PORT_clkena2 PORT_UNUSED CT#PORT_clkena1 PORT_UNUSED CT#PORT_clkena0 PORT_UNUSED CT#CLK1_PHASE_SHIFT 7500 CT#PORT_ARESET PORT_USED CT#BANDWIDTH_TYPE AUTO CT#CLK2_MULTIPLY_BY 2 CT#INTENDED_DEVICE_FAMILY {MAX 10} CT#PORT_SCANREAD PORT_UNUSED CT#CLK2_DUTY_CYCLE 50 CT#PORT_PHASESTEP PORT_UNUSED CT#PORT_SCANCLK PORT_UNUSED CT#PORT_CLKBAD1 PORT_UNUSED CT#PORT_CLKBAD0 PORT_UNUSED CT#PORT_FBIN PORT_UNUSED CT#PORT_PHASEUPDOWN PORT_UNUSED CT#PORT_extclk3 PORT_UNUSED CT#PORT_extclk2 PORT_UNUSED CT#PORT_extclk1 PORT_UNUSED CT#PORT_PHASECOUNTERSELECT PORT_UNUSED CT#PORT_extclk0 PORT_UNUSED CT#PORT_ACTIVECLOCK PORT_UNUSED CT#CLK2_PHASE_SHIFT 0 CT#CLK0_DUTY_CYCLE 50 CT#CLK0_DIVIDE_BY 1 CT#CLK1_DIVIDE_BY 1 CT#CLK3_MULTIPLY_BY 1 CT#PORT_LOCKED PORT_USED + false + true + false + true + + + java.lang.String + PT#GLOCKED_FEATURE_ENABLED 0 PT#SPREAD_FEATURE_ENABLED 0 PT#BANDWIDTH_FREQ_UNIT MHz PT#CUR_DEDICATED_CLK c0 PT#INCLK0_FREQ_EDIT 50.000 PT#BANDWIDTH_PRESET Low PT#PLL_LVDS_PLL_CHECK 0 PT#BANDWIDTH_USE_PRESET 0 PT#AVALON_USE_SEPARATE_SYSCLK NO PT#OUTPUT_FREQ_UNIT4 MHz PT#OUTPUT_FREQ_UNIT3 MHz PT#PLL_ENHPLL_CHECK 0 PT#OUTPUT_FREQ_UNIT2 MHz PT#OUTPUT_FREQ_UNIT1 MHz PT#OUTPUT_FREQ_UNIT0 MHz PT#PHASE_RECONFIG_FEATURE_ENABLED 1 PT#CREATE_CLKBAD_CHECK 0 PT#CLKSWITCH_CHECK 0 PT#INCLK1_FREQ_EDIT 100.000 PT#NORMAL_MODE_RADIO 1 PT#SRC_SYNCH_COMP_RADIO 0 PT#PLL_ARESET_CHECK 1 PT#LONG_SCAN_RADIO 1 PT#SCAN_FEATURE_ENABLED 1 PT#USE_CLK4 1 PT#USE_CLK3 1 PT#USE_CLK2 1 PT#PHASE_RECONFIG_INPUTS_CHECK 0 PT#USE_CLK1 1 PT#USE_CLK0 1 PT#PRIMARY_CLK_COMBO inclk0 PT#BANDWIDTH 1.000 PT#GLOCKED_COUNTER_EDIT_CHANGED 1 PT#PLL_FASTPLL_CHECK 0 PT#SPREAD_FREQ_UNIT KHz PT#LVDS_PHASE_SHIFT_UNIT4 deg PT#LVDS_PHASE_SHIFT_UNIT3 deg PT#PLL_AUTOPLL_CHECK 1 PT#OUTPUT_FREQ_MODE4 1 PT#LVDS_PHASE_SHIFT_UNIT2 deg PT#OUTPUT_FREQ_MODE3 1 PT#LVDS_PHASE_SHIFT_UNIT1 deg PT#OUTPUT_FREQ_MODE2 1 PT#LVDS_PHASE_SHIFT_UNIT0 deg PT#OUTPUT_FREQ_MODE1 1 PT#SWITCHOVER_FEATURE_ENABLED 0 PT#MIG_DEVICE_SPEED_GRADE Any PT#OUTPUT_FREQ_MODE0 1 PT#BANDWIDTH_FEATURE_ENABLED 1 PT#INCLK0_FREQ_UNIT_COMBO MHz PT#ZERO_DELAY_RADIO 0 PT#OUTPUT_FREQ4 20.00000000 PT#OUTPUT_FREQ3 25.00000000 PT#OUTPUT_FREQ2 100.00000000 PT#OUTPUT_FREQ1 100.00000000 PT#OUTPUT_FREQ0 100.00000000 PT#SHORT_SCAN_RADIO 0 PT#LVDS_MODE_DATA_RATE_DIRTY 0 PT#CUR_FBIN_CLK c0 PT#PLL_ADVANCED_PARAM_CHECK 0 PT#CLKBAD_SWITCHOVER_CHECK 0 PT#PHASE_SHIFT_STEP_ENABLED_CHECK 0 PT#DEVICE_SPEED_GRADE 6 PT#PLL_FBMIMIC_CHECK 0 PT#LVDS_MODE_DATA_RATE {Not Available} PT#PHASE_SHIFT4 0.00000000 PT#LOCKED_OUTPUT_CHECK 1 PT#SPREAD_PERCENT 0.500 PT#PHASE_SHIFT3 0.00000000 PT#DIV_FACTOR4 1 PT#PHASE_SHIFT2 0.00000000 PT#DIV_FACTOR3 1 PT#PHASE_SHIFT1 270.00000000 PT#DIV_FACTOR2 1 PT#PHASE_SHIFT0 0.00000000 PT#DIV_FACTOR1 1 PT#DIV_FACTOR0 1 PT#CNX_NO_COMPENSATE_RADIO 0 PT#USE_CLKENA4 0 PT#USE_CLKENA3 0 PT#USE_CLKENA2 0 PT#USE_CLKENA1 0 PT#USE_CLKENA0 0 PT#CREATE_INCLK1_CHECK 0 PT#GLOCK_COUNTER_EDIT 1048575 PT#INCLK1_FREQ_UNIT_COMBO MHz PT#EFF_OUTPUT_FREQ_VALUE4 20.000000 PT#EFF_OUTPUT_FREQ_VALUE3 25.000000 PT#EFF_OUTPUT_FREQ_VALUE2 100.000000 PT#EFF_OUTPUT_FREQ_VALUE1 100.000000 PT#EFF_OUTPUT_FREQ_VALUE0 100.000000 PT#SPREAD_FREQ 50.000 PT#USE_MIL_SPEED_GRADE 0 PT#EXPLICIT_SWITCHOVER_COUNTER 0 PT#STICKY_CLK4 1 PT#STICKY_CLK3 1 PT#STICKY_CLK2 1 PT#STICKY_CLK1 1 PT#STICKY_CLK0 1 PT#MIRROR_CLK4 0 PT#EXT_FEEDBACK_RADIO 0 PT#MIRROR_CLK3 0 PT#MIRROR_CLK2 0 PT#MIRROR_CLK1 0 PT#SWITCHOVER_COUNT_EDIT 1 PT#MIRROR_CLK0 0 PT#SELF_RESET_LOCK_LOSS 0 PT#PLL_PFDENA_CHECK 0 PT#INT_FEEDBACK__MODE_RADIO 1 PT#INCLK1_FREQ_EDIT_CHANGED 1 PT#SYNTH_WRAPPER_GEN_POSTFIX 0 PT#CLKLOSS_CHECK 0 PT#PHASE_SHIFT_UNIT4 deg PT#PHASE_SHIFT_UNIT3 deg PT#PHASE_SHIFT_UNIT2 deg PT#PHASE_SHIFT_UNIT1 deg PT#PHASE_SHIFT_UNIT0 deg PT#BANDWIDTH_USE_AUTO 1 PT#HAS_MANUAL_SWITCHOVER 1 PT#MULT_FACTOR4 1 PT#MULT_FACTOR3 1 PT#MULT_FACTOR2 1 PT#MULT_FACTOR1 1 PT#MULT_FACTOR0 1 PT#SPREAD_USE 0 PT#GLOCKED_MODE_CHECK 0 PT#DUTY_CYCLE4 50.00000000 PT#DUTY_CYCLE3 50.00000000 PT#DUTY_CYCLE2 50.00000000 PT#SACN_INPUTS_CHECK 0 PT#DUTY_CYCLE1 50.00000000 PT#INTENDED_DEVICE_FAMILY {MAX 10} PT#DUTY_CYCLE0 50.00000000 PT#PLL_TARGET_HARCOPY_CHECK 0 PT#INCLK1_FREQ_UNIT_CHANGED 1 PT#RECONFIG_FILE ALTPLL1472001986172141.mif PT#ACTIVECLK_CHECK 0 + false + true + false + true + + + java.lang.String + UP#locked used UP#c4 used UP#c3 used UP#c2 used UP#c1 used UP#c0 used UP#areset used UP#inclk0 used + false + true + false + true + + + java.lang.String + IN#WIDTH_CLOCK 1 IN#CLK0_DUTY_CYCLE 1 IN#CLK2_DIVIDE_BY 1 IN#PLL_TARGET_HARCOPY_CHECK 1 IN#CLK3_DIVIDE_BY 1 IN#CLK4_MULTIPLY_BY 1 IN#CLK1_MULTIPLY_BY 1 IN#CLK3_DUTY_CYCLE 1 IN#CLK4_DIVIDE_BY 1 IN#SWITCHOVER_COUNT_EDIT 1 IN#INCLK0_INPUT_FREQUENCY 1 IN#PLL_LVDS_PLL_CHECK 1 IN#PLL_AUTOPLL_CHECK 1 IN#PLL_FASTPLL_CHECK 1 IN#CLK1_DUTY_CYCLE 1 IN#PLL_ENHPLL_CHECK 1 IN#CLK2_MULTIPLY_BY 1 IN#DIV_FACTOR4 1 IN#DIV_FACTOR3 1 IN#DIV_FACTOR2 1 IN#DIV_FACTOR1 1 IN#DIV_FACTOR0 1 IN#LVDS_MODE_DATA_RATE_DIRTY 1 IN#CLK4_DUTY_CYCLE 1 IN#GLOCK_COUNTER_EDIT 1 IN#CLK2_DUTY_CYCLE 1 IN#CLK0_DIVIDE_BY 1 IN#CLK3_MULTIPLY_BY 1 IN#MULT_FACTOR4 1 IN#MULT_FACTOR3 1 IN#MULT_FACTOR2 1 IN#MULT_FACTOR1 1 IN#MULT_FACTOR0 1 IN#CLK0_MULTIPLY_BY 1 IN#USE_MIL_SPEED_GRADE 1 IN#CLK1_DIVIDE_BY 1 + false + true + false + true + + + java.lang.String + MF#areset 1 MF#clk 1 MF#locked 1 MF#inclk 1 + false + true + false + true + + + java.lang.String + IF#phasecounterselect {input 3} IF#locked {output 0} IF#reset {input 0} IF#clk {input 0} IF#phaseupdown {input 0} IF#scandone {output 0} IF#readdata {output 32} IF#write {input 0} IF#scanclk {input 0} IF#phasedone {output 0} IF#c4 {output 0} IF#c3 {output 0} IF#address {input 2} IF#c2 {output 0} IF#c1 {output 0} IF#c0 {output 0} IF#writedata {input 32} IF#read {input 0} IF#areset {input 0} IF#scanclkena {input 0} IF#scandataout {output 0} IF#configupdate {input 0} IF#phasestep {input 0} IF#scandata {input 0} + false + true + false + true + + + java.lang.String + 0 + false + true + false + true + + + java.lang.String + MAX10FPGA + false + true + false + true + DEVICE_FAMILY + + + java.lang.Long + 50000000 + false + true + false + true + CLOCK_RATE + inclk_interface + + + java.lang.String + MAX 10 + false + true + false + true + DEVICE_FAMILY + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + inclk_interface + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset + Input + 1 + reset + + + + + + embeddedsw.configuration.isMemoryDevice + false + + + embeddedsw.configuration.isNonVolatileStorage + false + + + embeddedsw.configuration.isPrintableDevice + false + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 16 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + inclk_interface + false + true + true + true + + + java.lang.String + inclk_interface_reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + read + Input + 1 + read + + + write + Input + 1 + write + + + address + Input + 2 + address + + + readdata + Output + 32 + readdata + + + writedata + Input + 32 + writedata + + + + + + java.lang.String + + false + true + true + true + + + long + 100000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + c0 + Output + 1 + clk + + + + + + java.lang.String + + false + true + true + true + + + long + 100000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + c1 + Output + 1 + clk + + + + + + java.lang.String + + false + true + true + true + + + long + 100000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + c2 + Output + 1 + clk + + + false + sdram + clk + sdram.clk + + + false + TERASIC_AUTO_FOCUS_0 + clock + TERASIC_AUTO_FOCUS_0.clock + + + false + alt_vip_vfb_0 + clock + alt_vip_vfb_0.clock + + + false + EEE_IMGPROC_0 + clock + EEE_IMGPROC_0.clock + + + false + TERASIC_CAMERA_0 + clock_reset + TERASIC_CAMERA_0.clock_reset + + + false + alt_vip_itc_0 + is_clk_rst + alt_vip_itc_0.is_clk_rst + + + + + + java.lang.String + + false + true + true + true + + + long + 25000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + c3 + Output + 1 + clk + + + + + + java.lang.String + + false + true + true + true + + + long + 20000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + c4 + Output + 1 + clk + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + areset + Input + 1 + export + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + locked + Output + 1 + export + + + + + + + long + 50000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + long + 0 + false + true + false + true + CLOCK_RATE + clk_in + + + com.altera.sopcmodel.reset.Reset$Edges + NONE + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + qsys.ui.export_name + clk + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + in_clk + Input + 1 + clk + + + + + + qsys.ui.export_name + reset + + + java.lang.String + + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + NONE + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + java.lang.String + clk_in + false + true + true + true + + + long + 50000000 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + true + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + true + + clk_out + Output + 1 + clk + + + false + jtag_uart + clk + jtag_uart.clk + + + false + sysid_qsys + clk + sysid_qsys.clk + + + false + timer + clk + timer.clk + + + false + led + clk + led.clk + + + false + sw + clk + sw.clk + + + false + key + clk + key.clk + + + false + mipi_reset_n + clk + mipi_reset_n.clk + + + false + mipi_pwdn_n + clk + mipi_pwdn_n.clk + + + false + nios2_gen2 + clk + nios2_gen2.clk + + + false + onchip_memory2_0 + clk1 + onchip_memory2_0.clk1 + + + false + i2c_opencores_mipi + clock + i2c_opencores_mipi.clock + + + false + i2c_opencores_camera + clock + i2c_opencores_camera.clock + + + false + altpll_0 + inclk_interface + altpll_0.inclk_interface + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + clk_in_reset + false + true + true + true + + + [Ljava.lang.String; + clk_in_reset + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + NONE + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + true + + reset_n_out + Output + 1 + reset_n + + + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + wb_clk_i + Input + 1 + clk + + + + + + java.lang.String + clock + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + wb_rst_i + Input + 1 + reset + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + scl_pad_io + Bidir + 1 + export + + + sda_pad_io + Bidir + 1 + export + + + + + + embeddedsw.configuration.isMemoryDevice + false + + + embeddedsw.configuration.isNonVolatileStorage + false + + + embeddedsw.configuration.isPrintableDevice + false + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 8 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clock + false + true + true + true + + + java.lang.String + clock_reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + false + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + false + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + wb_adr_i + Input + 3 + address + + + wb_dat_i + Input + 8 + writedata + + + wb_dat_o + Output + 8 + readdata + + + wb_we_i + Input + 1 + write + + + wb_stb_i + Input + 1 + chipselect + + + wb_ack_o + Output + 1 + waitrequest_n + + + + + + com.altera.entityinterfaces.IConnectionPoint + i2c_opencores_camera.avalon_slave_0 + false + true + true + true + + + java.lang.String + clock + false + true + false + true + + + java.lang.String + clock_reset + false + true + false + true + + + java.lang.Integer + + false + true + true + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + true + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + NONE + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + false + + wb_inta_o + Output + 1 + irq + + + + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + wb_clk_i + Input + 1 + clk + + + + + + java.lang.String + clock + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + wb_rst_i + Input + 1 + reset + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + scl_pad_io + Bidir + 1 + export + + + sda_pad_io + Bidir + 1 + export + + + + + + embeddedsw.configuration.isMemoryDevice + false + + + embeddedsw.configuration.isNonVolatileStorage + false + + + embeddedsw.configuration.isPrintableDevice + false + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 8 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clock + false + true + true + true + + + java.lang.String + clock_reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + false + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + false + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + wb_adr_i + Input + 3 + address + + + wb_dat_i + Input + 8 + writedata + + + wb_dat_o + Output + 8 + readdata + + + wb_we_i + Input + 1 + write + + + wb_stb_i + Input + 1 + chipselect + + + wb_ack_o + Output + 1 + waitrequest_n + + + + + + com.altera.entityinterfaces.IConnectionPoint + i2c_opencores_mipi.avalon_slave_0 + false + true + true + true + + + java.lang.String + clock + false + true + false + true + + + java.lang.String + clock_reset + false + true + false + true + + + java.lang.Integer + + false + true + true + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + true + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + NONE + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + false + + wb_inta_o + Output + 1 + irq + + + + + + + embeddedsw.CMacro.READ_DEPTH + 64 + + + embeddedsw.CMacro.READ_THRESHOLD + 8 + + + embeddedsw.CMacro.WRITE_DEPTH + 64 + + + embeddedsw.CMacro.WRITE_THRESHOLD + 8 + + + embeddedsw.dts.compatible + altr,juart-1.0 + + + embeddedsw.dts.group + serial + + + embeddedsw.dts.name + juart + + + embeddedsw.dts.vendor + altr + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 64 + false + true + true + true + + + int + 8 + false + true + true + true + + + java.lang.String + + false + false + false + true + + + java.lang.String + NO_INTERACTIVE_WINDOWS + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 64 + false + true + true + true + + + int + 8 + false + true + true + true + + + long + 50000000 + false + true + false + true + CLOCK_RATE + clk + + + java.lang.String + 2.0 + false + true + false + true + AVALON_SPEC + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + rst_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 1 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 2 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + true + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + false + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + false + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + av_chipselect + Input + 1 + chipselect + + + av_address + Input + 1 + address + + + av_read_n + Input + 1 + read_n + + + av_readdata + Output + 32 + readdata + + + av_write_n + Input + 1 + write_n + + + av_writedata + Input + 32 + writedata + + + av_waitrequest + Output + 1 + waitrequest + + + + + + com.altera.entityinterfaces.IConnectionPoint + jtag_uart.avalon_jtag_slave + false + true + true + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + reset + false + true + false + true + + + java.lang.Integer + + false + true + true + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + true + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + NONE + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + false + + av_irq + Output + 1 + irq + + + + + + + embeddedsw.CMacro.BIT_CLEARING_EDGE_REGISTER + 0 + + + embeddedsw.CMacro.BIT_MODIFYING_OUTPUT_REGISTER + 0 + + + embeddedsw.CMacro.CAPTURE + 0 + + + embeddedsw.CMacro.DATA_WIDTH + 2 + + + embeddedsw.CMacro.DO_TEST_BENCH_WIRING + 0 + + + embeddedsw.CMacro.DRIVEN_SIM_VALUE + 0 + + + embeddedsw.CMacro.EDGE_TYPE + NONE + + + embeddedsw.CMacro.FREQ + 50000000 + + + embeddedsw.CMacro.HAS_IN + 1 + + + embeddedsw.CMacro.HAS_OUT + 0 + + + embeddedsw.CMacro.HAS_TRI + 0 + + + embeddedsw.CMacro.IRQ_TYPE + NONE + + + embeddedsw.CMacro.RESET_VALUE + 0 + + + embeddedsw.dts.compatible + altr,pio-1.0 + + + embeddedsw.dts.group + gpio + + + embeddedsw.dts.name + pio + + + embeddedsw.dts.params.altr,gpio-bank-width + 2 + + + embeddedsw.dts.params.resetvalue + 0 + + + embeddedsw.dts.vendor + altr + + + boolean + false + false + false + true + true + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + Input + false + true + true + true + + + java.lang.String + RISING + false + false + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + LEVEL + false + false + true + true + + + long + 0 + false + false + true + true + + + boolean + false + false + true + true + true + + + long + 0 + false + false + true + true + + + int + 2 + false + true + true + true + + + long + 50000000 + false + true + false + true + CLOCK_RATE + clk + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + true + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 4 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 2 + address + + + readdata + Output + 32 + readdata + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + in_port + Input + 2 + export + + + + + + + embeddedsw.CMacro.BIT_CLEARING_EDGE_REGISTER + 0 + + + embeddedsw.CMacro.BIT_MODIFYING_OUTPUT_REGISTER + 0 + + + embeddedsw.CMacro.CAPTURE + 0 + + + embeddedsw.CMacro.DATA_WIDTH + 10 + + + embeddedsw.CMacro.DO_TEST_BENCH_WIRING + 0 + + + embeddedsw.CMacro.DRIVEN_SIM_VALUE + 0 + + + embeddedsw.CMacro.EDGE_TYPE + NONE + + + embeddedsw.CMacro.FREQ + 50000000 + + + embeddedsw.CMacro.HAS_IN + 0 + + + embeddedsw.CMacro.HAS_OUT + 1 + + + embeddedsw.CMacro.HAS_TRI + 0 + + + embeddedsw.CMacro.IRQ_TYPE + NONE + + + embeddedsw.CMacro.RESET_VALUE + 0 + + + embeddedsw.dts.compatible + altr,pio-1.0 + + + embeddedsw.dts.group + gpio + + + embeddedsw.dts.name + pio + + + embeddedsw.dts.params.altr,gpio-bank-width + 10 + + + embeddedsw.dts.params.resetvalue + 0 + + + embeddedsw.dts.vendor + altr + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + false + true + true + + + java.lang.String + Output + false + true + true + true + + + java.lang.String + RISING + false + false + true + true + + + boolean + false + false + false + true + true + + + java.lang.String + LEVEL + false + false + true + true + + + long + 0 + false + true + true + true + + + boolean + false + false + false + true + true + + + long + 0 + false + false + true + true + + + int + 10 + false + true + true + true + + + long + 50000000 + false + true + false + true + CLOCK_RATE + clk + + + boolean + false + true + true + false + true + + + boolean + true + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 4 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 2 + address + + + write_n + Input + 1 + write_n + + + writedata + Input + 32 + writedata + + + chipselect + Input + 1 + chipselect + + + readdata + Output + 32 + readdata + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + out_port + Output + 10 + export + + + + + + + embeddedsw.CMacro.BIT_CLEARING_EDGE_REGISTER + 0 + + + embeddedsw.CMacro.BIT_MODIFYING_OUTPUT_REGISTER + 0 + + + embeddedsw.CMacro.CAPTURE + 0 + + + embeddedsw.CMacro.DATA_WIDTH + 1 + + + embeddedsw.CMacro.DO_TEST_BENCH_WIRING + 0 + + + embeddedsw.CMacro.DRIVEN_SIM_VALUE + 0 + + + embeddedsw.CMacro.EDGE_TYPE + NONE + + + embeddedsw.CMacro.FREQ + 50000000 + + + embeddedsw.CMacro.HAS_IN + 0 + + + embeddedsw.CMacro.HAS_OUT + 1 + + + embeddedsw.CMacro.HAS_TRI + 0 + + + embeddedsw.CMacro.IRQ_TYPE + NONE + + + embeddedsw.CMacro.RESET_VALUE + 0 + + + embeddedsw.dts.compatible + altr,pio-1.0 + + + embeddedsw.dts.group + gpio + + + embeddedsw.dts.name + pio + + + embeddedsw.dts.params.altr,gpio-bank-width + 1 + + + embeddedsw.dts.params.resetvalue + 0 + + + embeddedsw.dts.vendor + altr + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + false + true + true + + + java.lang.String + Output + false + true + true + true + + + java.lang.String + RISING + false + false + true + true + + + boolean + false + false + false + true + true + + + java.lang.String + LEVEL + false + false + true + true + + + long + 0 + false + true + true + true + + + boolean + false + false + false + true + true + + + long + 0 + false + false + true + true + + + int + 1 + false + true + true + true + + + long + 50000000 + false + true + false + true + CLOCK_RATE + clk + + + boolean + false + true + true + false + true + + + boolean + true + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 4 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 2 + address + + + write_n + Input + 1 + write_n + + + writedata + Input + 32 + writedata + + + chipselect + Input + 1 + chipselect + + + readdata + Output + 32 + readdata + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + out_port + Output + 1 + export + + + + + + + embeddedsw.CMacro.BIT_CLEARING_EDGE_REGISTER + 0 + + + embeddedsw.CMacro.BIT_MODIFYING_OUTPUT_REGISTER + 0 + + + embeddedsw.CMacro.CAPTURE + 0 + + + embeddedsw.CMacro.DATA_WIDTH + 1 + + + embeddedsw.CMacro.DO_TEST_BENCH_WIRING + 0 + + + embeddedsw.CMacro.DRIVEN_SIM_VALUE + 0 + + + embeddedsw.CMacro.EDGE_TYPE + NONE + + + embeddedsw.CMacro.FREQ + 50000000 + + + embeddedsw.CMacro.HAS_IN + 0 + + + embeddedsw.CMacro.HAS_OUT + 1 + + + embeddedsw.CMacro.HAS_TRI + 0 + + + embeddedsw.CMacro.IRQ_TYPE + NONE + + + embeddedsw.CMacro.RESET_VALUE + 0 + + + embeddedsw.dts.compatible + altr,pio-1.0 + + + embeddedsw.dts.group + gpio + + + embeddedsw.dts.name + pio + + + embeddedsw.dts.params.altr,gpio-bank-width + 1 + + + embeddedsw.dts.params.resetvalue + 0 + + + embeddedsw.dts.vendor + altr + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + false + true + true + + + java.lang.String + Output + false + true + true + true + + + java.lang.String + RISING + false + false + true + true + + + boolean + false + false + false + true + true + + + java.lang.String + LEVEL + false + false + true + true + + + long + 0 + false + true + true + true + + + boolean + false + false + false + true + true + + + long + 0 + false + false + true + true + + + int + 1 + false + true + true + true + + + long + 50000000 + false + true + false + true + CLOCK_RATE + clk + + + boolean + false + true + true + false + true + + + boolean + true + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 4 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 2 + address + + + write_n + Input + 1 + write_n + + + writedata + Input + 32 + writedata + + + chipselect + Input + 1 + chipselect + + + readdata + Output + 32 + readdata + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + out_port + Output + 1 + export + + + + + + + debug.hostConnection + type jtag id 70:34|110:135 + + + embeddedsw.CMacro.BIG_ENDIAN + 0 + + + embeddedsw.CMacro.BREAK_ADDR + 0x00040820 + + + embeddedsw.CMacro.CPU_ARCH_NIOS2_R1 + + + + embeddedsw.CMacro.CPU_FREQ + 50000000u + + + embeddedsw.CMacro.CPU_ID_SIZE + 1 + + + embeddedsw.CMacro.CPU_ID_VALUE + 0x00000000 + + + embeddedsw.CMacro.CPU_IMPLEMENTATION + "fast" + + + embeddedsw.CMacro.DATA_ADDR_WIDTH + 19 + + + embeddedsw.CMacro.DCACHE_BYPASS_MASK + 0x80000000 + + + embeddedsw.CMacro.DCACHE_LINE_SIZE + 32 + + + embeddedsw.CMacro.DCACHE_LINE_SIZE_LOG2 + 5 + + + embeddedsw.CMacro.DCACHE_SIZE + 2048 + + + embeddedsw.CMacro.EXCEPTION_ADDR + 0x00020020 + + + embeddedsw.CMacro.FLASH_ACCELERATOR_LINES + 0 + + + embeddedsw.CMacro.FLASH_ACCELERATOR_LINE_SIZE + 0 + + + embeddedsw.CMacro.FLUSHDA_SUPPORTED + + + + embeddedsw.CMacro.HARDWARE_DIVIDE_PRESENT + 0 + + + embeddedsw.CMacro.HARDWARE_MULTIPLY_PRESENT + 1 + + + embeddedsw.CMacro.HARDWARE_MULX_PRESENT + 0 + + + embeddedsw.CMacro.HAS_DEBUG_CORE + 1 + + + embeddedsw.CMacro.HAS_DEBUG_STUB + + + + embeddedsw.CMacro.HAS_EXTRA_EXCEPTION_INFO + + + + embeddedsw.CMacro.HAS_ILLEGAL_INSTRUCTION_EXCEPTION + + + + embeddedsw.CMacro.HAS_JMPI_INSTRUCTION + + + + embeddedsw.CMacro.ICACHE_LINE_SIZE + 32 + + + embeddedsw.CMacro.ICACHE_LINE_SIZE_LOG2 + 5 + + + embeddedsw.CMacro.ICACHE_SIZE + 4096 + + + embeddedsw.CMacro.INITDA_SUPPORTED + + + + embeddedsw.CMacro.INST_ADDR_WIDTH + 19 + + + embeddedsw.CMacro.NUM_OF_SHADOW_REG_SETS + 0 + + + embeddedsw.CMacro.OCI_VERSION + 1 + + + embeddedsw.CMacro.RESET_ADDR + 0x00020000 + + + embeddedsw.configuration.DataCacheVictimBufImpl + ram + + + embeddedsw.configuration.HDLSimCachesCleared + 1 + + + embeddedsw.configuration.breakOffset + 32 + + + embeddedsw.configuration.breakSlave + nios2_gen2.debug_mem_slave + + + embeddedsw.configuration.cpuArchitecture + Nios II + + + embeddedsw.configuration.exceptionOffset + 32 + + + embeddedsw.configuration.exceptionSlave + onchip_memory2_0.s1 + + + embeddedsw.configuration.resetOffset + 0 + + + embeddedsw.configuration.resetSlave + onchip_memory2_0.s1 + + + embeddedsw.dts.compatible + altr,nios2-1.1 + + + embeddedsw.dts.group + cpu + + + embeddedsw.dts.name + nios2 + + + embeddedsw.dts.params.altr,exception-addr + 0x00020020 + + + embeddedsw.dts.params.altr,has-initda + 1 + + + embeddedsw.dts.params.altr,has-mul + 1 + + + embeddedsw.dts.params.altr,implementation + "fast" + + + embeddedsw.dts.params.altr,reset-addr + 0x00020000 + + + embeddedsw.dts.params.clock-frequency + 50000000u + + + embeddedsw.dts.params.dcache-line-size + 32 + + + embeddedsw.dts.params.dcache-size + 2048 + + + embeddedsw.dts.params.icache-line-size + 32 + + + embeddedsw.dts.params.icache-size + 4096 + + + embeddedsw.dts.vendor + altr + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + false + true + + + int + 0 + false + false + true + true + + + int + 0 + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 8 + false + false + true + true + + + int + 8 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + true + true + true + + + int + 32 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 32 + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + onchip_memory2_0.s1 + false + true + true + true + + + java.lang.String + None + false + false + true + true + + + java.lang.String + onchip_memory2_0.s1 + false + true + true + true + + + java.lang.String + None + false + true + false + true + + + java.lang.String + Internal + false + true + true + true + + + java.lang.String + Dynamic + false + true + true + true + + + int + 8 + false + true + true + true + + + int + 1 + false + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + fast_le_shift + true + true + false + true + + + java.lang.String + mul_fast32 + true + true + false + true + + + int + 0 + false + true + true + true + + + int + 2 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + false + true + true + + + java.lang.String + no_div + false + true + true + true + + + int + 12 + false + false + true + true + + + int + 12 + false + false + true + true + + + int + 4 + false + false + true + true + + + int + 6 + false + false + true + true + + + int + 7 + false + false + true + true + + + int + 16 + false + false + true + true + + + int + 8 + false + false + true + true + + + java.lang.String + Fast + false + true + true + true + + + int + 4096 + false + true + true + true + + + int + 2 + false + false + true + true + + + int + 0 + false + true + true + true + + + java.lang.String + Automatic + false + true + false + true + + + java.lang.String + Automatic + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + None + false + true + true + true + + + java.lang.String + false + false + true + true + true + + + java.lang.String + ram + false + true + true + true + + + int + 2048 + false + true + true + true + + + java.lang.String + Automatic + false + true + false + true + + + java.lang.String + Automatic + false + true + false + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + true + false + true + false + true + + + java.lang.String + Automatic + false + true + false + true + + + java.lang.String + Automatic + false + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + Automatic + false + true + false + true + + + java.lang.String + Automatic + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + true + true + + + boolean + true + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + java.lang.String + _128 + false + false + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + java.lang.String + none + false + true + true + true + + + java.lang.String + onchip_trace + false + false + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + long + 0 + false + true + false + true + + + int + 131072 + true + true + true + true + + + int + 131104 + true + true + true + true + + + int + 264224 + true + true + false + true + + + int + 0 + true + true + true + true + + + java.lang.String + false + true + true + false + true + + + int + 2048 + true + true + false + true + + + java.lang.String + nios2_gen2.debug_mem_slave + true + true + false + true + + + int + 32 + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + true + true + true + false + true + + + java.lang.String + "synthesis translate_on" + true + true + false + true + + + java.lang.String + "synthesis translate_off" + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + int + 19 + false + true + false + true + ADDRESS_WIDTH + instruction_master + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + flash_instruction_master + + + int + 19 + false + true + false + true + ADDRESS_WIDTH + data_master + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + tightly_coupled_data_master_0 + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + tightly_coupled_data_master_1 + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + tightly_coupled_data_master_2 + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + tightly_coupled_data_master_3 + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + tightly_coupled_instruction_master_0 + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + tightly_coupled_instruction_master_1 + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + tightly_coupled_instruction_master_2 + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + tightly_coupled_instruction_master_3 + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + data_master_high_performance + + + int + 1 + false + true + false + true + ADDRESS_WIDTH + instruction_master_high_performance + + + java.lang.String + ]]> + false + true + false + true + ADDRESS_MAP + instruction_master + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + flash_instruction_master + + + java.lang.String + ]]> + false + true + false + true + ADDRESS_MAP + data_master + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + tightly_coupled_data_master_0 + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + tightly_coupled_data_master_1 + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + tightly_coupled_data_master_2 + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + tightly_coupled_data_master_3 + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + tightly_coupled_instruction_master_0 + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + tightly_coupled_instruction_master_1 + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + tightly_coupled_instruction_master_2 + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + tightly_coupled_instruction_master_3 + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + data_master_high_performance + + + java.lang.String + + false + true + false + true + ADDRESS_MAP + instruction_master_high_performance + + + long + 50000000 + false + true + false + true + CLOCK_RATE + clk + + + java.lang.String + MAX10FPGA + false + true + false + true + DEVICE_FAMILY + + + long + 15 + false + true + false + true + INTERRUPTS_USED + irq + + + java.lang.String + ]]> + false + true + false + true + CUSTOM_INSTRUCTION_SLAVES + custom_instruction_master + + + java.lang.String + ]]> + false + true + false + true + CUSTOM_INSTRUCTION_SLAVES + custom_instruction_master_a + + + java.lang.String + ]]> + false + true + false + true + CUSTOM_INSTRUCTION_SLAVES + custom_instruction_master_b + + + java.lang.String + ]]> + false + true + false + true + CUSTOM_INSTRUCTION_SLAVES + custom_instruction_master_c + + + java.lang.String + ADDRESS_STALL 1 ADVANCED_INFO 0 ALLOWS_COMPILING_OTHER_FAMILY_IP 1 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 1 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 0 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 FPP_COMPLETELY_PLACES_AND_ROUTES_PERIPHERY 0 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 0 HARDCOPY 0 HAS_18_BIT_MULTS 0 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 0 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 0 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 0 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 1 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 0 HAS_BSDL_FILE_GENERATION 0 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 0 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 0 HAS_DDB_FDI_SUPPORT 0 HAS_DESIGN_ANALYZER_SUPPORT 0 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 0 HAS_ERROR_DETECTION_SUPPORT 0 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 0 HAS_FPGA_XCHANGE_SUPPORT 0 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 0 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 0 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 0 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_IDB_SUPPORT 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 0 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_PLACEMENT_USING_GEOMETRY_RULE 0 HAS_IO_PLACEMENT_USING_PHYSIC_RULE 0 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NADDER_STYLE_CLOCKING 0 HAS_NADDER_STYLE_FF 0 HAS_NADDER_STYLE_LCELL_COMB 0 HAS_NEW_CDB_NAME_FOR_M20K_SCLR 0 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 1 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 0 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PDN_MODEL_STATUS 1 HAS_PHYSICAL_DESIGN_PLANNER_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 0 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 0 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 0 HAS_PVA_SUPPORT 1 HAS_QUARTUS_HIERARCHICAL_DESIGN_SUPPORT 0 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 1 HAS_SYNTHESIS_ON_ATOMS 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 0 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 1 HAS_VCCPD_POWER_RAIL 0 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO2_WRITER_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 0 IFP_USE_LEGACY_IO_CHECKER 0 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 1 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_BARE_DIE 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_FOR_INTERNAL_TESTING_ONLY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 IS_SMI_PART 0 LOAD_BLK_TYPE_DATA_FROM_ATOM_WYS_INFO 0 LVDS_IO 0 M10K_MEMORY 0 M144K_MEMORY 0 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 1 MLAB_MEMORY 0 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 0 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 0 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 0 PROGRAMMER_ONLY 0 PROGRAMMER_SUPPORT 1 PVA_SUPPORTS_ONLY_SUBSET_OF_ATOMS 0 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 REQUIRE_QUARTUS_HIERARCHICAL_DESIGN 0 REQUIRE_SPECIAL_HANDLING_FOR_LOCAL_LABLINE 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RESTRICT_PARTIAL_RECONFIG 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 0 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 0 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 0 SUPPORTS_HIPI_RETIMING 0 SUPPORTS_LICENSE_FREE_PARTIAL_RECONFIG 0 SUPPORTS_MAC_CHAIN_OUT_ADDER 0 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 SUPPORTS_VID 0 TMV_RUN_CUSTOMIZABLE_VIEWER 0 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 0 TRANSCEIVER_6G_BLOCK 0 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_NETWORK_ROUTING_POWER_CALCULATOR 0 USES_PART_INFO_FOR_DISPLAYING_CORE_VOLTAGE_VALUE 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_PVAFAM2 0 USES_SECOND_GENERATION_PART_INFO 0 USES_SECOND_GENERATION_POWER_ANALYZER 0 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USES_XML_FORMAT_FOR_EMIF_PIN_MAP_FILE 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 1 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 0 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 0 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1 + false + true + false + true + DEVICE_FEATURES + + + java.lang.String + 10M50DAF484C7G + false + true + false + true + DEVICE + + + java.lang.String + 7 + false + true + false + true + DEVICE_SPEEDGRADE + + + java.lang.Integer + 1 + false + true + false + true + CLOCK_DOMAIN + clk + + + java.lang.Integer + 1 + false + true + false + true + RESET_DOMAIN + clk + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + reset_req + Input + 1 + reset_req + + + + + + debug.providesServices + master + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + int + 1 + false + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + SYMBOLS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + boolean + true + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 32 + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + true + + d_address + Output + 19 + address + + + d_byteenable + Output + 4 + byteenable + + + d_read + Output + 1 + read + + + d_readdata + Input + 32 + readdata + + + d_waitrequest + Input + 1 + waitrequest + + + d_write + Output + 1 + write + + + d_writedata + Output + 32 + writedata + + + d_readdatavalid + Input + 1 + readdatavalid + + + debug_mem_slave_debugaccess_to_roms + Output + 1 + debugaccess + + + false + jtag_uart + avalon_jtag_slave + jtag_uart.avalon_jtag_slave + 266472 + 8 + + + false + i2c_opencores_mipi + avalon_slave_0 + i2c_opencores_mipi.avalon_slave_0 + 266336 + 32 + + + false + i2c_opencores_camera + avalon_slave_0 + i2c_opencores_camera.avalon_slave_0 + 266304 + 32 + + + false + sysid_qsys + control_slave + sysid_qsys.control_slave + 266464 + 8 + + + false + nios2_gen2 + debug_mem_slave + nios2_gen2.debug_mem_slave + 264192 + 2048 + + + false + TERASIC_AUTO_FOCUS_0 + mm_ctrl + TERASIC_AUTO_FOCUS_0.mm_ctrl + 266272 + 32 + + + false + altpll_0 + pll_slave + altpll_0.pll_slave + 266448 + 16 + + + false + onchip_memory2_0 + s1 + onchip_memory2_0.s1 + 131072 + 100000 + + + false + timer + s1 + timer.s1 + 266240 + 32 + + + false + led + s1 + led.s1 + 266432 + 16 + + + false + sw + s1 + sw.s1 + 266416 + 16 + + + false + key + s1 + key.s1 + 266400 + 16 + + + false + mipi_reset_n + s1 + mipi_reset_n.s1 + 266384 + 16 + + + false + mipi_pwdn_n + s1 + mipi_pwdn_n.s1 + 266368 + 16 + + + false + EEE_IMGPROC_0 + s1 + EEE_IMGPROC_0.s1 + 270336 + 32 + + + + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + int + 1 + false + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + SYMBOLS + false + true + true + true + + + boolean + true + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + true + true + + + int + 32 + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + true + + i_address + Output + 19 + address + + + i_read + Output + 1 + read + + + i_readdata + Input + 32 + readdata + + + i_waitrequest + Input + 1 + waitrequest + + + i_readdatavalid + Input + 1 + readdatavalid + + + false + nios2_gen2 + debug_mem_slave + nios2_gen2.debug_mem_slave + 264192 + 2048 + + + false + onchip_memory2_0 + s1 + onchip_memory2_0.s1 + 131072 + 100000 + + + + + + com.altera.entityinterfaces.IConnectionPoint + nios2_gen2.data_master + false + true + true + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + reset + false + true + false + true + + + java.lang.String + + false + true + false + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + INDIVIDUAL_REQUESTS + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + true + + irq + Input + 32 + irq + + + false + i2c_opencores_mipi + interrupt_sender + i2c_opencores_mipi.interrupt_sender + 0 + + + false + i2c_opencores_camera + interrupt_sender + i2c_opencores_camera.interrupt_sender + 1 + + + false + jtag_uart + irq + jtag_uart.irq + 2 + + + false + timer + irq + timer.irq + 3 + + + + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + + false + true + true + true + + + [Ljava.lang.String; + none + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + true + + debug_reset_request + Output + 1 + reset + + + + + + embeddedsw.configuration.hideDevice + 1 + + + qsys.ui.connect + instruction_master,data_master + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 2048 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + 0 + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + false + true + true + + + boolean + true + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + false + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + false + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + debug_mem_slave_address + Input + 9 + address + + + debug_mem_slave_byteenable + Input + 4 + byteenable + + + debug_mem_slave_debugaccess + Input + 1 + debugaccess + + + debug_mem_slave_read + Input + 1 + read + + + debug_mem_slave_readdata + Output + 32 + readdata + + + debug_mem_slave_waitrequest + Output + 1 + waitrequest + + + debug_mem_slave_write + Input + 1 + write + + + debug_mem_slave_writedata + Input + 32 + writedata + + + + + + java.lang.String + + true + true + false + true + + + int + 8 + false + true + false + true + + + int + 0 + false + false + true + true + + + boolean + false + false + true + false + true + + + int + 8 + false + true + false + true + + + int + 0 + true + true + false + true + + + boolean + false + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios_custom_instruction + true + + dummy_ci_port + Output + 1 + readra + + + + + + + embeddedsw.CMacro.ALLOW_IN_SYSTEM_MEMORY_CONTENT_EDITOR + 0 + + + embeddedsw.CMacro.ALLOW_MRAM_SIM_CONTENTS_ONLY_FILE + 0 + + + embeddedsw.CMacro.CONTENTS_INFO + "" + + + embeddedsw.CMacro.DUAL_PORT + 0 + + + embeddedsw.CMacro.GUI_RAM_BLOCK_TYPE + AUTO + + + embeddedsw.CMacro.INIT_CONTENTS_FILE + Qsys_onchip_memory2_0 + + + embeddedsw.CMacro.INIT_MEM_CONTENT + 0 + + + embeddedsw.CMacro.INSTANCE_ID + NONE + + + embeddedsw.CMacro.NON_DEFAULT_INIT_FILE_ENABLED + 0 + + + embeddedsw.CMacro.RAM_BLOCK_TYPE + AUTO + + + embeddedsw.CMacro.READ_DURING_WRITE_MODE + DONT_CARE + + + embeddedsw.CMacro.SINGLE_CLOCK_OP + 0 + + + embeddedsw.CMacro.SIZE_MULTIPLE + 1 + + + embeddedsw.CMacro.SIZE_VALUE + 100000 + + + embeddedsw.CMacro.WRITABLE + 1 + + + embeddedsw.memoryInfo.DAT_SYM_INSTALL_DIR + SIM_DIR + + + embeddedsw.memoryInfo.GENERATE_DAT_SYM + 1 + + + embeddedsw.memoryInfo.GENERATE_HEX + 1 + + + embeddedsw.memoryInfo.HAS_BYTE_LANE + 0 + + + embeddedsw.memoryInfo.HEX_INSTALL_DIR + QPF_DIR + + + embeddedsw.memoryInfo.MEM_INIT_DATA_WIDTH + 32 + + + embeddedsw.memoryInfo.MEM_INIT_FILENAME + Qsys_onchip_memory2_0 + + + postgeneration.simulation.init_file.param_name + INIT_FILE + + + postgeneration.simulation.init_file.type + MEM_INIT + + + boolean + false + false + true + true + true + + + java.lang.String + AUTO + false + true + true + true + + + int + 32 + false + true + true + true + + + int + 32 + false + true + false + true + + + boolean + false + false + true + true + true + + + boolean + false + false + false + true + true + + + boolean + false + true + true + false + true + + + boolean + false + false + true + true + true + + + java.lang.String + onchip_mem.hex + false + false + true + true + + + boolean + false + false + false + true + true + + + java.lang.String + NONE + false + false + true + true + + + long + 100000 + false + true + true + true + + + java.lang.String + DONT_CARE + false + false + true + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + boolean + false + false + false + true + true + + + boolean + false + true + true + false + true + + + int + 1 + false + true + true + true + + + int + 1 + false + false + true + true + + + boolean + false + false + false + true + true + + + boolean + false + false + false + false + true + + + boolean + false + false + false + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + java.lang.String + Qsys_onchip_memory2_0 + false + true + false + true + UNIQUE_ID + + + java.lang.String + MAX10FPGA + false + true + false + true + DEVICE_FAMILY + + + java.lang.String + ADDRESS_STALL 1 ADVANCED_INFO 0 ALLOWS_COMPILING_OTHER_FAMILY_IP 1 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 1 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 0 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 FPP_COMPLETELY_PLACES_AND_ROUTES_PERIPHERY 0 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 0 HARDCOPY 0 HAS_18_BIT_MULTS 0 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 0 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 0 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 0 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 1 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 0 HAS_BSDL_FILE_GENERATION 0 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 0 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 0 HAS_DDB_FDI_SUPPORT 0 HAS_DESIGN_ANALYZER_SUPPORT 0 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 0 HAS_ERROR_DETECTION_SUPPORT 0 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 0 HAS_FPGA_XCHANGE_SUPPORT 0 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 0 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 0 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 0 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_IDB_SUPPORT 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 0 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_PLACEMENT_USING_GEOMETRY_RULE 0 HAS_IO_PLACEMENT_USING_PHYSIC_RULE 0 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NADDER_STYLE_CLOCKING 0 HAS_NADDER_STYLE_FF 0 HAS_NADDER_STYLE_LCELL_COMB 0 HAS_NEW_CDB_NAME_FOR_M20K_SCLR 0 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 1 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 0 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PDN_MODEL_STATUS 1 HAS_PHYSICAL_DESIGN_PLANNER_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 0 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 0 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 0 HAS_PVA_SUPPORT 1 HAS_QUARTUS_HIERARCHICAL_DESIGN_SUPPORT 0 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 1 HAS_SYNTHESIS_ON_ATOMS 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 0 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 1 HAS_VCCPD_POWER_RAIL 0 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO2_WRITER_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 0 IFP_USE_LEGACY_IO_CHECKER 0 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 1 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_BARE_DIE 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_FOR_INTERNAL_TESTING_ONLY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 IS_SMI_PART 0 LOAD_BLK_TYPE_DATA_FROM_ATOM_WYS_INFO 0 LVDS_IO 0 M10K_MEMORY 0 M144K_MEMORY 0 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 1 MLAB_MEMORY 0 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 0 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 0 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 0 PROGRAMMER_ONLY 0 PROGRAMMER_SUPPORT 1 PVA_SUPPORTS_ONLY_SUBSET_OF_ATOMS 0 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 REQUIRE_QUARTUS_HIERARCHICAL_DESIGN 0 REQUIRE_SPECIAL_HANDLING_FOR_LOCAL_LABLINE 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RESTRICT_PARTIAL_RECONFIG 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 0 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 0 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 0 SUPPORTS_HIPI_RETIMING 0 SUPPORTS_LICENSE_FREE_PARTIAL_RECONFIG 0 SUPPORTS_MAC_CHAIN_OUT_ADDER 0 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 SUPPORTS_VID 0 TMV_RUN_CUSTOMIZABLE_VIEWER 0 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 0 TRANSCEIVER_6G_BLOCK 0 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_NETWORK_ROUTING_POWER_CALCULATOR 0 USES_PART_INFO_FOR_DISPLAYING_CORE_VOLTAGE_VALUE 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_PVAFAM2 0 USES_SECOND_GENERATION_PART_INFO 0 USES_SECOND_GENERATION_POWER_ANALYZER 0 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USES_XML_FORMAT_FOR_EMIF_PIN_MAP_FILE 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 1 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 0 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 0 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1 + false + true + false + true + DEVICE_FEATURES + + + int + 15 + true + true + false + true + + + int + 15 + true + true + false + true + + + int + 32 + true + true + false + true + + + int + 32 + true + true + false + true + + + java.lang.String + Automatic + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + Qsys_onchip_memory2_0.hex + true + true + false + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + clk + Input + 1 + clk + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 1 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 100000 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk1 + false + true + true + true + + + java.lang.String + reset1 + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 100000 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 1 + false + true + true + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 15 + address + + + clken + Input + 1 + clken + + + chipselect + Input + 1 + chipselect + + + write + Input + 1 + write + + + readdata + Output + 32 + readdata + + + writedata + Input + 32 + writedata + + + byteenable + Input + 4 + byteenable + + + + + + java.lang.String + clk1 + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset + Input + 1 + reset + + + reset_req + Input + 1 + reset_req + + + + + + + embeddedsw.CMacro.CAS_LATENCY + 3 + + + embeddedsw.CMacro.CONTENTS_INFO + + + + embeddedsw.CMacro.INIT_NOP_DELAY + 0.0 + + + embeddedsw.CMacro.INIT_REFRESH_COMMANDS + 2 + + + embeddedsw.CMacro.IS_INITIALIZED + 1 + + + embeddedsw.CMacro.POWERUP_DELAY + 100.0 + + + embeddedsw.CMacro.REFRESH_PERIOD + 15.625 + + + embeddedsw.CMacro.REGISTER_DATA_IN + 1 + + + embeddedsw.CMacro.SDRAM_ADDR_WIDTH + 25 + + + embeddedsw.CMacro.SDRAM_BANK_WIDTH + 2 + + + embeddedsw.CMacro.SDRAM_COL_WIDTH + 10 + + + embeddedsw.CMacro.SDRAM_DATA_WIDTH + 16 + + + embeddedsw.CMacro.SDRAM_NUM_BANKS + 4 + + + embeddedsw.CMacro.SDRAM_NUM_CHIPSELECTS + 1 + + + embeddedsw.CMacro.SDRAM_ROW_WIDTH + 13 + + + embeddedsw.CMacro.SHARED_DATA + 0 + + + embeddedsw.CMacro.SIM_MODEL_BASE + 1 + + + embeddedsw.CMacro.STARVATION_INDICATOR + 0 + + + embeddedsw.CMacro.TRISTATE_BRIDGE_SLAVE + "" + + + embeddedsw.CMacro.T_AC + 5.5 + + + embeddedsw.CMacro.T_MRD + 3 + + + embeddedsw.CMacro.T_RCD + 20.0 + + + embeddedsw.CMacro.T_RFC + 70.0 + + + embeddedsw.CMacro.T_RP + 20.0 + + + embeddedsw.CMacro.T_WR + 14.0 + + + embeddedsw.memoryInfo.DAT_SYM_INSTALL_DIR + SIM_DIR + + + embeddedsw.memoryInfo.GENERATE_DAT_SYM + 1 + + + embeddedsw.memoryInfo.MEM_INIT_DATA_WIDTH + 16 + + + postgeneration.simulation.init_file.param_name + INIT_FILE + + + postgeneration.simulation.init_file.param_owner + wire + + + postgeneration.simulation.init_file.type + MEM_INIT + + + testbench.partner.map.clk + my_partner.clk + + + testbench.partner.map.wire + my_partner.conduit + + + testbench.partner.my_partner.class + altera_sdram_partner_module + + + testbench.partner.my_partner.parameter.CAS_LATENCY + 3 + + + testbench.partner.my_partner.parameter.CONTR_NAME + Qsys_sdram + + + testbench.partner.my_partner.parameter.SDRAM_BANK_WIDTH + 2 + + + testbench.partner.my_partner.parameter.SDRAM_COL_WIDTH + 10 + + + testbench.partner.my_partner.parameter.SDRAM_DATA_WIDTH + 16 + + + testbench.partner.my_partner.parameter.SDRAM_NUM_CHIPSELECTS + 1 + + + testbench.partner.my_partner.parameter.SDRAM_ROW_WIDTH + 13 + + + double + 5.5 + false + true + true + true + + + double + 20.0 + false + true + true + true + + + double + 70.0 + false + true + true + true + + + double + 20.0 + false + true + true + true + + + double + 14.0 + false + true + true + true + + + int + 3 + false + true + true + true + + + int + 10 + false + true + true + true + + + int + 16 + false + true + true + true + + + boolean + true + false + true + true + true + + + int + 2 + false + true + true + true + + + java.lang.String + single_Micron_MT48LC4M32B2_7_chip + false + true + false + true + + + int + 4 + false + true + true + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + double + 100.0 + false + true + true + true + + + double + 15.625 + false + true + true + true + + + int + 13 + false + true + true + true + + + int + 0 + false + false + false + true + + + long + 3 + false + true + false + true + + + double + 0.0 + false + true + false + true + + + boolean + true + false + true + false + true + + + long + 100000000 + false + true + false + true + CLOCK_RATE + clk + + + java.lang.String + Qsys_sdram + false + true + false + true + UNIQUE_ID + + + long + 67108864 + true + true + false + true + + + int + 25 + true + true + false + true + + + int + 2 + true + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 100000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 1 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 67108864 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + true + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 7 + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + false + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + false + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + false + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + az_addr + Input + 25 + address + + + az_be_n + Input + 2 + byteenable_n + + + az_cs + Input + 1 + chipselect + + + az_data + Input + 16 + writedata + + + az_rd_n + Input + 1 + read_n + + + az_wr_n + Input + 1 + write_n + + + za_data + Output + 16 + readdata + + + za_valid + Output + 1 + readdatavalid + + + za_waitrequest + Output + 1 + waitrequest + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + zs_addr + Output + 13 + export + + + zs_ba + Output + 2 + export + + + zs_cas_n + Output + 1 + export + + + zs_cke + Output + 1 + export + + + zs_cs_n + Output + 1 + export + + + zs_dq + Bidir + 16 + export + + + zs_dqm + Output + 2 + export + + + zs_ras_n + Output + 1 + export + + + zs_we_n + Output + 1 + export + + + + + + + embeddedsw.CMacro.BIT_CLEARING_EDGE_REGISTER + 0 + + + embeddedsw.CMacro.BIT_MODIFYING_OUTPUT_REGISTER + 0 + + + embeddedsw.CMacro.CAPTURE + 0 + + + embeddedsw.CMacro.DATA_WIDTH + 10 + + + embeddedsw.CMacro.DO_TEST_BENCH_WIRING + 0 + + + embeddedsw.CMacro.DRIVEN_SIM_VALUE + 0 + + + embeddedsw.CMacro.EDGE_TYPE + NONE + + + embeddedsw.CMacro.FREQ + 50000000 + + + embeddedsw.CMacro.HAS_IN + 1 + + + embeddedsw.CMacro.HAS_OUT + 0 + + + embeddedsw.CMacro.HAS_TRI + 0 + + + embeddedsw.CMacro.IRQ_TYPE + NONE + + + embeddedsw.CMacro.RESET_VALUE + 0 + + + embeddedsw.dts.compatible + altr,pio-1.0 + + + embeddedsw.dts.group + gpio + + + embeddedsw.dts.name + pio + + + embeddedsw.dts.params.altr,gpio-bank-width + 10 + + + embeddedsw.dts.params.resetvalue + 0 + + + embeddedsw.dts.vendor + altr + + + boolean + false + false + false + true + true + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + Input + false + true + true + true + + + java.lang.String + RISING + false + false + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + LEVEL + false + false + true + true + + + long + 0 + false + false + true + true + + + boolean + false + false + true + true + true + + + long + 0 + false + false + true + true + + + int + 10 + false + true + true + true + + + long + 50000000 + false + true + false + true + CLOCK_RATE + clk + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + true + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 4 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 2 + address + + + readdata + Output + 32 + readdata + + + + + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + in_port + Input + 10 + export + + + + + + + embeddedsw.CMacro.ID + 0 + + + embeddedsw.CMacro.TIMESTAMP + 1621008007 + + + embeddedsw.dts.compatible + altr,sysid-1.0 + + + embeddedsw.dts.group + sysid + + + embeddedsw.dts.name + sysid + + + embeddedsw.dts.params.id + 0 + + + embeddedsw.dts.params.timestamp + 1621008007 + + + embeddedsw.dts.vendor + altr + + + int + 0 + false + true + true + true + + + int + 1621008007 + true + false + false + true + GENERATION_ID + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clock + false + + clock + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isMemoryDevice + false + + + embeddedsw.configuration.isNonVolatileStorage + false + + + embeddedsw.configuration.isPrintableDevice + false + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + DYNAMIC + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 8 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + readdata + Output + 32 + readdata + + + address + Input + 1 + address + + + + + + + embeddedsw.CMacro.ALWAYS_RUN + 0 + + + embeddedsw.CMacro.COUNTER_SIZE + 32 + + + embeddedsw.CMacro.FIXED_PERIOD + 0 + + + embeddedsw.CMacro.FREQ + 50000000 + + + embeddedsw.CMacro.LOAD_VALUE + 49999 + + + embeddedsw.CMacro.MULT + 0.001 + + + embeddedsw.CMacro.PERIOD + 1 + + + embeddedsw.CMacro.PERIOD_UNITS + ms + + + embeddedsw.CMacro.RESET_OUTPUT + 0 + + + embeddedsw.CMacro.SNAPSHOT + 1 + + + embeddedsw.CMacro.TICKS_PER_SEC + 1000 + + + embeddedsw.CMacro.TIMEOUT_PULSE_OUTPUT + 0 + + + embeddedsw.dts.compatible + altr,timer-1.0 + + + embeddedsw.dts.group + timer + + + embeddedsw.dts.name + timer + + + embeddedsw.dts.params.clock-frequency + 50000000 + + + embeddedsw.dts.vendor + altr + + + boolean + false + false + true + true + true + + + int + 32 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + 1 + false + true + true + true + + + java.lang.String + MSEC + false + true + true + true + + + boolean + false + false + true + true + true + + + boolean + true + false + true + true + true + + + boolean + false + false + true + true + true + + + long + 50000000 + false + true + false + true + CLOCK_RATE + clk + + + int + 2 + false + true + false + true + + + java.lang.String + FULL_FEATURED + true + true + false + true + + + java.lang.String + ms + true + true + false + true + + + double + 0.001 + true + true + false + true + + + java.lang.String + 49999 + true + true + false + true + + + double + 0.001 + true + true + false + true + + + double + 1000.0 + true + true + false + true + + + int + 3 + true + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 50000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + embeddedsw.configuration.isTimerDevice + 1 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 8 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 3 + address + + + writedata + Input + 16 + writedata + + + readdata + Output + 16 + readdata + + + chipselect + Input + 1 + chipselect + + + write_n + Input + 1 + write_n + + + + + + com.altera.entityinterfaces.IConnectionPoint + timer.s1 + false + true + true + true + + + java.lang.String + clk + false + true + false + true + + + java.lang.String + reset + false + true + false + true + + + java.lang.Integer + + false + true + true + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + true + true + + + com.altera.sopcmodel.interrupt.InterruptConnectionPoint$EIrqScheme + NONE + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + interrupt + false + + irq + Output + 1 + irq + + + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x000410e8 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + jtag_uart + avalon_jtag_slave + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00041060 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + i2c_opencores_mipi + avalon_slave_0 + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00041040 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + i2c_opencores_camera + avalon_slave_0 + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x000410e0 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + sysid_qsys + control_slave + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00040800 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + nios2_gen2 + debug_mem_slave + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00041020 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + TERASIC_AUTO_FOCUS_0 + mm_ctrl + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x000410d0 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + altpll_0 + pll_slave + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00020000 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + onchip_memory2_0 + s1 + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00041000 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + timer + s1 + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x000410c0 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + led + s1 + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x000410b0 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + sw + s1 + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x000410a0 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + key + s1 + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00041090 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + mipi_reset_n + s1 + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00041080 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + mipi_pwdn_n + s1 + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00042000 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + data_master + EEE_IMGPROC_0 + s1 + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00040800 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + instruction_master + nios2_gen2 + debug_mem_slave + + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00020000 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + instruction_master + onchip_memory2_0 + s1 + + + + int + 50 + false + true + true + true + + + java.math.BigInteger + 0x04000000 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + alt_vip_vfb_0 + read_master + sdram + s1 + + + + int + 30 + false + true + true + true + + + java.math.BigInteger + 0x04000000 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + alt_vip_vfb_0 + write_master + sdram + s1 + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + TERASIC_CAMERA_0 + avalon_streaming_source + alt_vip_vfb_0 + din + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + EEE_IMGPROC_0 + avalon_streaming_source + alt_vip_itc_0 + din + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + TERASIC_AUTO_FOCUS_0 + dout + EEE_IMGPROC_0 + avalon_streaming_sink + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + alt_vip_vfb_0 + dout + TERASIC_AUTO_FOCUS_0 + din + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + altpll_0 + c2 + sdram + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + altpll_0 + c2 + TERASIC_AUTO_FOCUS_0 + clock + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + altpll_0 + c2 + alt_vip_vfb_0 + clock + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + altpll_0 + c2 + EEE_IMGPROC_0 + clock + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + altpll_0 + c2 + TERASIC_CAMERA_0 + clock_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + altpll_0 + c2 + alt_vip_itc_0 + is_clk_rst + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + jtag_uart + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + sysid_qsys + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + timer + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + led + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + sw + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + key + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + mipi_reset_n + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + mipi_pwdn_n + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + nios2_gen2 + clk + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + onchip_memory2_0 + clk1 + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + i2c_opencores_mipi + clock + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + i2c_opencores_camera + clock + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk + altpll_0 + inclk_interface + + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + irq + i2c_opencores_mipi + interrupt_sender + + + + int + 1 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + irq + i2c_opencores_camera + interrupt_sender + + + + int + 2 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + irq + jtag_uart + irq + + + + int + 3 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + irq + timer + irq + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + i2c_opencores_mipi + clock_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + i2c_opencores_camera + clock_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + TERASIC_CAMERA_0 + clock_reset_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + altpll_0 + inclk_interface_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + alt_vip_itc_0 + is_clk_rst_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + sdram + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + nios2_gen2 + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + alt_vip_vfb_0 + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + jtag_uart + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + key + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + led + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + mipi_pwdn_n + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + mipi_reset_n + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + sw + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + sysid_qsys + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + timer + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + TERASIC_AUTO_FOCUS_0 + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + EEE_IMGPROC_0 + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_50 + clk_reset + onchip_memory2_0 + reset1 + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + i2c_opencores_mipi + clock_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + i2c_opencores_camera + clock_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + TERASIC_CAMERA_0 + clock_reset_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + alt_vip_itc_0 + is_clk_rst_reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + jtag_uart + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + sysid_qsys + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + timer + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + led + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + sw + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + key + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + mipi_reset_n + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + mipi_pwdn_n + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + nios2_gen2 + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + sdram + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + alt_vip_vfb_0 + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + TERASIC_AUTO_FOCUS_0 + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + EEE_IMGPROC_0 + reset + + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_gen2 + debug_reset_request + onchip_memory2_0 + reset1 + + + 1 + EEE_IMGPROC + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + EEE_IMGPROC + 1.0 + + + 19 + clock_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Input + 16.1 + + + 19 + reset_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Reset Input + 16.1 + + + 4 + avalon_streaming_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Streaming Sink + 16.1 + + + 4 + avalon_streaming_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Streaming Source + 16.1 + + + 16 + avalon_slave + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Memory Mapped Slave + 16.1 + + + 14 + conduit_end + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Conduit + 16.1 + + + 1 + TERASIC_AUTO_FOCUS + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + TERASIC_AUTO_FOCUS + 1.0 + + + 1 + TERASIC_CAMERA + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + TERASIC_CAMERA + 1.0 + + + 1 + alt_vip_itc + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Clocked Video Output + 14.0 + + + 1 + alt_vip_vfb + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Frame Buffer + 13.1 + + + 4 + avalon_master + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Avalon Memory Mapped Master + 16.1 + + + 1 + altpll + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Avalon ALTPLL + 16.1 + + + 5 + clock_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Output + 16.1 + + + 1 + clock_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Clock Source + 16.1 + + + 1 + clock_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Input + 16.1 + + + 1 + reset_sink + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Reset Input + 16.1 + + + 1 + clock_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Clock Output + 16.1 + + + 1 + reset_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Reset Output + 16.1 + + + 2 + i2c_opencores + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + I2C Master (opencores.org) + 12.0 + + + 4 + interrupt_sender + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Interrupt Sender + 16.1 + + + 1 + altera_avalon_jtag_uart + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + JTAG UART + 16.1 + + + 5 + altera_avalon_pio + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + PIO (Parallel I/O) + 16.1 + + + 1 + altera_nios2_gen2 + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Nios II Processor + 16.1 + + + 1 + interrupt_receiver + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Interrupt Receiver + 16.1 + + + 1 + reset_source + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Reset Output + 16.1 + + + 1 + nios_custom_instruction_master + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IMutableConnectionPoint + Custom Instruction Master + 16.1 + + + 1 + altera_avalon_onchip_memory2 + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + On-Chip Memory (RAM or ROM) + 16.1 + + + 1 + altera_avalon_new_sdram_controller + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + SDRAM Controller + 16.1 + + + 1 + altera_avalon_sysid_qsys + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + System ID Peripheral + 16.1 + + + 1 + altera_avalon_timer + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IModule + Interval Timer + 16.1 + + + 19 + avalon + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Avalon Memory Mapped Connection + 16.1 + + + 4 + avalon_streaming + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Avalon Streaming Connection + 16.1 + + + 19 + clock + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Clock Connection + 16.1 + + + 4 + interrupt + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Interrupt Connection + 16.1 + + + 37 + reset + com.altera.entityinterfaces.IElementClass + com.altera.entityinterfaces.IConnection + Reset Connection + 16.1 + + 16.1 196 + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.bsf b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.bsf new file mode 100644 index 0000000..9a0cbd5 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.bsf @@ -0,0 +1,431 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2016 Altera Corporation. All rights reserved. +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, the Altera Quartus Prime License Agreement, +the Altera MegaCore Function License Agreement, or other +applicable license agreement, including, without limitation, +that your use is for the sole purpose of programming logic +devices manufactured by Altera and sold by Altera or its +authorized distributors. Please refer to the applicable +agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 0 0 576 1072) + (text "Qsys" (rect 273 -1 295 11)(font "Arial" (font_size 10))) + (text "inst" (rect 8 1056 20 1068)(font "Arial" )) + (port + (pt 0 72) + (input) + (text "alt_vip_itc_0_clocked_video_vid_clk" (rect 0 0 147 12)(font "Arial" (font_size 8))) + (text "alt_vip_itc_0_clocked_video_vid_clk" (rect 4 61 214 72)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 240 72)(line_width 1)) + ) + (port + (pt 0 240) + (input) + (text "altpll_0_areset_conduit_export" (rect 0 0 120 12)(font "Arial" (font_size 8))) + (text "altpll_0_areset_conduit_export" (rect 4 229 184 240)(font "Arial" (font_size 8))) + (line (pt 0 240)(pt 240 240)(line_width 1)) + ) + (port + (pt 0 320) + (input) + (text "clk_clk" (rect 0 0 27 12)(font "Arial" (font_size 8))) + (text "clk_clk" (rect 4 309 46 320)(font "Arial" (font_size 8))) + (line (pt 0 320)(pt 240 320)(line_width 1)) + ) + (port + (pt 0 360) + (input) + (text "eee_imgproc_0_conduit_mode_new_signal" (rect 0 0 172 12)(font "Arial" (font_size 8))) + (text "eee_imgproc_0_conduit_mode_new_signal" (rect 4 349 226 360)(font "Arial" (font_size 8))) + (line (pt 0 360)(pt 240 360)(line_width 1)) + ) + (port + (pt 0 512) + (input) + (text "key_external_connection_export[1..0]" (rect 0 0 148 12)(font "Arial" (font_size 8))) + (text "key_external_connection_export[1..0]" (rect 4 501 220 512)(font "Arial" (font_size 8))) + (line (pt 0 512)(pt 240 512)(line_width 3)) + ) + (port + (pt 0 672) + (input) + (text "reset_reset_n" (rect 0 0 56 12)(font "Arial" (font_size 8))) + (text "reset_reset_n" (rect 4 661 82 672)(font "Arial" (font_size 8))) + (line (pt 0 672)(pt 240 672)(line_width 1)) + ) + (port + (pt 0 880) + (input) + (text "sw_external_connection_export[9..0]" (rect 0 0 145 12)(font "Arial" (font_size 8))) + (text "sw_external_connection_export[9..0]" (rect 4 869 214 880)(font "Arial" (font_size 8))) + (line (pt 0 880)(pt 240 880)(line_width 3)) + ) + (port + (pt 0 936) + (input) + (text "terasic_auto_focus_0_conduit_clk50" (rect 0 0 146 12)(font "Arial" (font_size 8))) + (text "terasic_auto_focus_0_conduit_clk50" (rect 4 925 208 936)(font "Arial" (font_size 8))) + (line (pt 0 936)(pt 240 936)(line_width 1)) + ) + (port + (pt 0 992) + (input) + (text "terasic_camera_0_conduit_end_D[11..0]" (rect 0 0 161 12)(font "Arial" (font_size 8))) + (text "terasic_camera_0_conduit_end_D[11..0]" (rect 4 981 226 992)(font "Arial" (font_size 8))) + (line (pt 0 992)(pt 240 992)(line_width 3)) + ) + (port + (pt 0 1008) + (input) + (text "terasic_camera_0_conduit_end_FVAL" (rect 0 0 160 12)(font "Arial" (font_size 8))) + (text "terasic_camera_0_conduit_end_FVAL" (rect 4 997 202 1008)(font "Arial" (font_size 8))) + (line (pt 0 1008)(pt 240 1008)(line_width 1)) + ) + (port + (pt 0 1024) + (input) + (text "terasic_camera_0_conduit_end_LVAL" (rect 0 0 160 12)(font "Arial" (font_size 8))) + (text "terasic_camera_0_conduit_end_LVAL" (rect 4 1013 202 1024)(font "Arial" (font_size 8))) + (line (pt 0 1024)(pt 240 1024)(line_width 1)) + ) + (port + (pt 0 1040) + (input) + (text "terasic_camera_0_conduit_end_PIXCLK" (rect 0 0 166 12)(font "Arial" (font_size 8))) + (text "terasic_camera_0_conduit_end_PIXCLK" (rect 4 1029 214 1040)(font "Arial" (font_size 8))) + (line (pt 0 1040)(pt 240 1040)(line_width 1)) + ) + (port + (pt 0 88) + (output) + (text "alt_vip_itc_0_clocked_video_vid_data[23..0]" (rect 0 0 178 12)(font "Arial" (font_size 8))) + (text "alt_vip_itc_0_clocked_video_vid_data[23..0]" (rect 4 77 262 88)(font "Arial" (font_size 8))) + (line (pt 0 88)(pt 240 88)(line_width 3)) + ) + (port + (pt 0 104) + (output) + (text "alt_vip_itc_0_clocked_video_underflow" (rect 0 0 156 12)(font "Arial" (font_size 8))) + (text "alt_vip_itc_0_clocked_video_underflow" (rect 4 93 226 104)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 240 104)(line_width 1)) + ) + (port + (pt 0 120) + (output) + (text "alt_vip_itc_0_clocked_video_vid_datavalid" (rect 0 0 171 12)(font "Arial" (font_size 8))) + (text "alt_vip_itc_0_clocked_video_vid_datavalid" (rect 4 109 250 120)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 240 120)(line_width 1)) + ) + (port + (pt 0 136) + (output) + (text "alt_vip_itc_0_clocked_video_vid_v_sync" (rect 0 0 168 12)(font "Arial" (font_size 8))) + (text "alt_vip_itc_0_clocked_video_vid_v_sync" (rect 4 125 232 136)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 240 136)(line_width 1)) + ) + (port + (pt 0 152) + (output) + (text "alt_vip_itc_0_clocked_video_vid_h_sync" (rect 0 0 167 12)(font "Arial" (font_size 8))) + (text "alt_vip_itc_0_clocked_video_vid_h_sync" (rect 4 141 232 152)(font "Arial" (font_size 8))) + (line (pt 0 152)(pt 240 152)(line_width 1)) + ) + (port + (pt 0 168) + (output) + (text "alt_vip_itc_0_clocked_video_vid_f" (rect 0 0 140 12)(font "Arial" (font_size 8))) + (text "alt_vip_itc_0_clocked_video_vid_f" (rect 4 157 202 168)(font "Arial" (font_size 8))) + (line (pt 0 168)(pt 240 168)(line_width 1)) + ) + (port + (pt 0 184) + (output) + (text "alt_vip_itc_0_clocked_video_vid_h" (rect 0 0 141 12)(font "Arial" (font_size 8))) + (text "alt_vip_itc_0_clocked_video_vid_h" (rect 4 173 202 184)(font "Arial" (font_size 8))) + (line (pt 0 184)(pt 240 184)(line_width 1)) + ) + (port + (pt 0 200) + (output) + (text "alt_vip_itc_0_clocked_video_vid_v" (rect 0 0 142 12)(font "Arial" (font_size 8))) + (text "alt_vip_itc_0_clocked_video_vid_v" (rect 4 189 202 200)(font "Arial" (font_size 8))) + (line (pt 0 200)(pt 240 200)(line_width 1)) + ) + (port + (pt 0 280) + (output) + (text "altpll_0_locked_conduit_export" (rect 0 0 120 12)(font "Arial" (font_size 8))) + (text "altpll_0_locked_conduit_export" (rect 4 269 184 280)(font "Arial" (font_size 8))) + (line (pt 0 280)(pt 240 280)(line_width 1)) + ) + (port + (pt 576 72) + (output) + (text "clk_sdram_clk" (rect 0 0 59 12)(font "Arial" (font_size 8))) + (text "clk_sdram_clk" (rect 504 61 582 72)(font "Arial" (font_size 8))) + (line (pt 576 72)(pt 336 72)(line_width 1)) + ) + (port + (pt 576 112) + (output) + (text "clk_vga_clk" (rect 0 0 48 12)(font "Arial" (font_size 8))) + (text "clk_vga_clk" (rect 516 101 582 112)(font "Arial" (font_size 8))) + (line (pt 576 112)(pt 336 112)(line_width 1)) + ) + (port + (pt 576 152) + (output) + (text "d8m_xclkin_clk" (rect 0 0 61 12)(font "Arial" (font_size 8))) + (text "d8m_xclkin_clk" (rect 500 141 584 152)(font "Arial" (font_size 8))) + (line (pt 576 152)(pt 336 152)(line_width 1)) + ) + (port + (pt 0 552) + (output) + (text "led_external_connection_export[9..0]" (rect 0 0 145 12)(font "Arial" (font_size 8))) + (text "led_external_connection_export[9..0]" (rect 4 541 220 552)(font "Arial" (font_size 8))) + (line (pt 0 552)(pt 240 552)(line_width 3)) + ) + (port + (pt 0 592) + (output) + (text "mipi_pwdn_n_external_connection_export" (rect 0 0 166 12)(font "Arial" (font_size 8))) + (text "mipi_pwdn_n_external_connection_export" (rect 4 581 232 592)(font "Arial" (font_size 8))) + (line (pt 0 592)(pt 240 592)(line_width 1)) + ) + (port + (pt 0 632) + (output) + (text "mipi_reset_n_external_connection_export" (rect 0 0 166 12)(font "Arial" (font_size 8))) + (text "mipi_reset_n_external_connection_export" (rect 4 621 238 632)(font "Arial" (font_size 8))) + (line (pt 0 632)(pt 240 632)(line_width 1)) + ) + (port + (pt 0 712) + (output) + (text "sdram_wire_addr[12..0]" (rect 0 0 94 12)(font "Arial" (font_size 8))) + (text "sdram_wire_addr[12..0]" (rect 4 701 136 712)(font "Arial" (font_size 8))) + (line (pt 0 712)(pt 240 712)(line_width 3)) + ) + (port + (pt 0 728) + (output) + (text "sdram_wire_ba[1..0]" (rect 0 0 81 12)(font "Arial" (font_size 8))) + (text "sdram_wire_ba[1..0]" (rect 4 717 118 728)(font "Arial" (font_size 8))) + (line (pt 0 728)(pt 240 728)(line_width 3)) + ) + (port + (pt 0 744) + (output) + (text "sdram_wire_cas_n" (rect 0 0 77 12)(font "Arial" (font_size 8))) + (text "sdram_wire_cas_n" (rect 4 733 100 744)(font "Arial" (font_size 8))) + (line (pt 0 744)(pt 240 744)(line_width 1)) + ) + (port + (pt 0 760) + (output) + (text "sdram_wire_cke" (rect 0 0 67 12)(font "Arial" (font_size 8))) + (text "sdram_wire_cke" (rect 4 749 88 760)(font "Arial" (font_size 8))) + (line (pt 0 760)(pt 240 760)(line_width 1)) + ) + (port + (pt 0 776) + (output) + (text "sdram_wire_cs_n" (rect 0 0 73 12)(font "Arial" (font_size 8))) + (text "sdram_wire_cs_n" (rect 4 765 94 776)(font "Arial" (font_size 8))) + (line (pt 0 776)(pt 240 776)(line_width 1)) + ) + (port + (pt 0 808) + (output) + (text "sdram_wire_dqm[1..0]" (rect 0 0 89 12)(font "Arial" (font_size 8))) + (text "sdram_wire_dqm[1..0]" (rect 4 797 124 808)(font "Arial" (font_size 8))) + (line (pt 0 808)(pt 240 808)(line_width 3)) + ) + (port + (pt 0 824) + (output) + (text "sdram_wire_ras_n" (rect 0 0 76 12)(font "Arial" (font_size 8))) + (text "sdram_wire_ras_n" (rect 4 813 100 824)(font "Arial" (font_size 8))) + (line (pt 0 824)(pt 240 824)(line_width 1)) + ) + (port + (pt 0 840) + (output) + (text "sdram_wire_we_n" (rect 0 0 74 12)(font "Arial" (font_size 8))) + (text "sdram_wire_we_n" (rect 4 829 94 840)(font "Arial" (font_size 8))) + (line (pt 0 840)(pt 240 840)(line_width 1)) + ) + (port + (pt 0 400) + (bidir) + (text "i2c_opencores_camera_export_scl_pad_io" (rect 0 0 173 12)(font "Arial" (font_size 8))) + (text "i2c_opencores_camera_export_scl_pad_io" (rect 4 389 232 400)(font "Arial" (font_size 8))) + (line (pt 0 400)(pt 240 400)(line_width 1)) + ) + (port + (pt 0 416) + (bidir) + (text "i2c_opencores_camera_export_sda_pad_io" (rect 0 0 177 12)(font "Arial" (font_size 8))) + (text "i2c_opencores_camera_export_sda_pad_io" (rect 4 405 232 416)(font "Arial" (font_size 8))) + (line (pt 0 416)(pt 240 416)(line_width 1)) + ) + (port + (pt 0 456) + (bidir) + (text "i2c_opencores_mipi_export_scl_pad_io" (rect 0 0 158 12)(font "Arial" (font_size 8))) + (text "i2c_opencores_mipi_export_scl_pad_io" (rect 4 445 220 456)(font "Arial" (font_size 8))) + (line (pt 0 456)(pt 240 456)(line_width 1)) + ) + (port + (pt 0 472) + (bidir) + (text "i2c_opencores_mipi_export_sda_pad_io" (rect 0 0 161 12)(font "Arial" (font_size 8))) + (text "i2c_opencores_mipi_export_sda_pad_io" (rect 4 461 220 472)(font "Arial" (font_size 8))) + (line (pt 0 472)(pt 240 472)(line_width 1)) + ) + (port + (pt 0 792) + (bidir) + (text "sdram_wire_dq[15..0]" (rect 0 0 86 12)(font "Arial" (font_size 8))) + (text "sdram_wire_dq[15..0]" (rect 4 781 124 792)(font "Arial" (font_size 8))) + (line (pt 0 792)(pt 240 792)(line_width 3)) + ) + (port + (pt 0 920) + (bidir) + (text "terasic_auto_focus_0_conduit_vcm_i2c_sda" (rect 0 0 181 12)(font "Arial" (font_size 8))) + (text "terasic_auto_focus_0_conduit_vcm_i2c_sda" (rect 4 909 244 920)(font "Arial" (font_size 8))) + (line (pt 0 920)(pt 240 920)(line_width 1)) + ) + (port + (pt 0 952) + (bidir) + (text "terasic_auto_focus_0_conduit_vcm_i2c_scl" (rect 0 0 178 12)(font "Arial" (font_size 8))) + (text "terasic_auto_focus_0_conduit_vcm_i2c_scl" (rect 4 941 244 952)(font "Arial" (font_size 8))) + (line (pt 0 952)(pt 240 952)(line_width 1)) + ) + (drawing + (text "alt_vip_itc_0_clocked_video" (rect 78 43 318 99)(font "Arial" (color 128 0 0)(font_size 9))) + (text "vid_clk" (rect 245 67 532 144)(font "Arial" (color 0 0 0))) + (text "vid_data" (rect 245 83 538 176)(font "Arial" (color 0 0 0))) + (text "underflow" (rect 245 99 544 208)(font "Arial" (color 0 0 0))) + (text "vid_datavalid" (rect 245 115 568 240)(font "Arial" (color 0 0 0))) + (text "vid_v_sync" (rect 245 131 550 272)(font "Arial" (color 0 0 0))) + (text "vid_h_sync" (rect 245 147 550 304)(font "Arial" (color 0 0 0))) + (text "vid_f" (rect 245 163 520 336)(font "Arial" (color 0 0 0))) + (text "vid_h" (rect 245 179 520 368)(font "Arial" (color 0 0 0))) + (text "vid_v" (rect 245 195 520 400)(font "Arial" (color 0 0 0))) + (text "altpll_0_areset_conduit" (rect 105 211 348 435)(font "Arial" (color 128 0 0)(font_size 9))) + (text "export" (rect 245 235 526 480)(font "Arial" (color 0 0 0))) + (text "altpll_0_locked_conduit" (rect 105 251 348 515)(font "Arial" (color 128 0 0)(font_size 9))) + (text "export" (rect 245 275 526 560)(font "Arial" (color 0 0 0))) + (text "clk" (rect 225 291 468 595)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 245 315 508 640)(font "Arial" (color 0 0 0))) + (text "clk_sdram" (rect 337 43 728 99)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 321 67 660 144)(font "Arial" (color 0 0 0))) + (text "clk_vga" (rect 337 83 716 179)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 321 107 660 224)(font "Arial" (color 0 0 0))) + (text "d8m_xclkin" (rect 337 123 734 259)(font "Arial" (color 128 0 0)(font_size 9))) + (text "clk" (rect 321 147 660 304)(font "Arial" (color 0 0 0))) + (text "eee_imgproc_0_conduit_mode" (rect 62 331 280 675)(font "Arial" (color 128 0 0)(font_size 9))) + (text "new_signal" (rect 245 355 550 720)(font "Arial" (color 0 0 0))) + (text "i2c_opencores_camera_export" (rect 62 371 286 755)(font "Arial" (color 128 0 0)(font_size 9))) + (text "scl_pad_io" (rect 245 395 550 800)(font "Arial" (color 0 0 0))) + (text "sda_pad_io" (rect 245 411 550 832)(font "Arial" (color 0 0 0))) + (text "i2c_opencores_mipi_export" (rect 81 427 312 867)(font "Arial" (color 128 0 0)(font_size 9))) + (text "scl_pad_io" (rect 245 451 550 912)(font "Arial" (color 0 0 0))) + (text "sda_pad_io" (rect 245 467 550 944)(font "Arial" (color 0 0 0))) + (text "key_external_connection" (rect 98 483 334 979)(font "Arial" (color 128 0 0)(font_size 9))) + (text "export" (rect 245 507 526 1024)(font "Arial" (color 0 0 0))) + (text "led_external_connection" (rect 101 523 340 1059)(font "Arial" (color 128 0 0)(font_size 9))) + (text "export" (rect 245 547 526 1104)(font "Arial" (color 0 0 0))) + (text "mipi_pwdn_n_external_connection" (rect 40 563 266 1139)(font "Arial" (color 128 0 0)(font_size 9))) + (text "export" (rect 245 587 526 1184)(font "Arial" (color 0 0 0))) + (text "mipi_reset_n_external_connection" (rect 41 603 274 1219)(font "Arial" (color 128 0 0)(font_size 9))) + (text "export" (rect 245 627 526 1264)(font "Arial" (color 0 0 0))) + (text "reset" (rect 211 643 452 1299)(font "Arial" (color 128 0 0)(font_size 9))) + (text "reset_n" (rect 245 667 532 1344)(font "Arial" (color 0 0 0))) + (text "sdram_wire" (rect 171 683 402 1379)(font "Arial" (color 128 0 0)(font_size 9))) + (text "addr" (rect 245 707 514 1424)(font "Arial" (color 0 0 0))) + (text "ba" (rect 245 723 502 1456)(font "Arial" (color 0 0 0))) + (text "cas_n" (rect 245 739 520 1488)(font "Arial" (color 0 0 0))) + (text "cke" (rect 245 755 508 1520)(font "Arial" (color 0 0 0))) + (text "cs_n" (rect 245 771 514 1552)(font "Arial" (color 0 0 0))) + (text "dq" (rect 245 787 502 1584)(font "Arial" (color 0 0 0))) + (text "dqm" (rect 245 803 508 1616)(font "Arial" (color 0 0 0))) + (text "ras_n" (rect 245 819 520 1648)(font "Arial" (color 0 0 0))) + (text "we_n" (rect 245 835 514 1680)(font "Arial" (color 0 0 0))) + (text "sw_external_connection" (rect 101 851 334 1715)(font "Arial" (color 128 0 0)(font_size 9))) + (text "export" (rect 245 875 526 1760)(font "Arial" (color 0 0 0))) + (text "terasic_auto_focus_0_conduit" (rect 65 891 298 1795)(font "Arial" (color 128 0 0)(font_size 9))) + (text "vcm_i2c_sda" (rect 245 915 556 1840)(font "Arial" (color 0 0 0))) + (text "clk50" (rect 245 931 520 1872)(font "Arial" (color 0 0 0))) + (text "vcm_i2c_scl" (rect 245 947 556 1904)(font "Arial" (color 0 0 0))) + (text "terasic_camera_0_conduit_end" (rect 58 963 284 1939)(font "Arial" (color 128 0 0)(font_size 9))) + (text "D" (rect 245 987 496 1984)(font "Arial" (color 0 0 0))) + (text "FVAL" (rect 245 1003 514 2016)(font "Arial" (color 0 0 0))) + (text "LVAL" (rect 245 1019 514 2048)(font "Arial" (color 0 0 0))) + (text "PIXCLK" (rect 245 1035 526 2080)(font "Arial" (color 0 0 0))) + (text " system " (rect 541 1056 1130 2122)(font "Arial" )) + (line (pt 240 32)(pt 336 32)(line_width 1)) + (line (pt 336 32)(pt 336 1056)(line_width 1)) + (line (pt 240 1056)(pt 336 1056)(line_width 1)) + (line (pt 240 32)(pt 240 1056)(line_width 1)) + (line (pt 241 52)(pt 241 204)(line_width 1)) + (line (pt 242 52)(pt 242 204)(line_width 1)) + (line (pt 241 220)(pt 241 244)(line_width 1)) + (line (pt 242 220)(pt 242 244)(line_width 1)) + (line (pt 241 260)(pt 241 284)(line_width 1)) + (line (pt 242 260)(pt 242 284)(line_width 1)) + (line (pt 241 300)(pt 241 324)(line_width 1)) + (line (pt 242 300)(pt 242 324)(line_width 1)) + (line (pt 335 52)(pt 335 76)(line_width 1)) + (line (pt 334 52)(pt 334 76)(line_width 1)) + (line (pt 335 92)(pt 335 116)(line_width 1)) + (line (pt 334 92)(pt 334 116)(line_width 1)) + (line (pt 335 132)(pt 335 156)(line_width 1)) + (line (pt 334 132)(pt 334 156)(line_width 1)) + (line (pt 241 340)(pt 241 364)(line_width 1)) + (line (pt 242 340)(pt 242 364)(line_width 1)) + (line (pt 241 380)(pt 241 420)(line_width 1)) + (line (pt 242 380)(pt 242 420)(line_width 1)) + (line (pt 241 436)(pt 241 476)(line_width 1)) + (line (pt 242 436)(pt 242 476)(line_width 1)) + (line (pt 241 492)(pt 241 516)(line_width 1)) + (line (pt 242 492)(pt 242 516)(line_width 1)) + (line (pt 241 532)(pt 241 556)(line_width 1)) + (line (pt 242 532)(pt 242 556)(line_width 1)) + (line (pt 241 572)(pt 241 596)(line_width 1)) + (line (pt 242 572)(pt 242 596)(line_width 1)) + (line (pt 241 612)(pt 241 636)(line_width 1)) + (line (pt 242 612)(pt 242 636)(line_width 1)) + (line (pt 241 652)(pt 241 676)(line_width 1)) + (line (pt 242 652)(pt 242 676)(line_width 1)) + (line (pt 241 692)(pt 241 844)(line_width 1)) + (line (pt 242 692)(pt 242 844)(line_width 1)) + (line (pt 241 860)(pt 241 884)(line_width 1)) + (line (pt 242 860)(pt 242 884)(line_width 1)) + (line (pt 241 900)(pt 241 956)(line_width 1)) + (line (pt 242 900)(pt 242 956)(line_width 1)) + (line (pt 241 972)(pt 241 1044)(line_width 1)) + (line (pt 242 972)(pt 242 1044)(line_width 1)) + (line (pt 0 0)(pt 576 0)(line_width 1)) + (line (pt 576 0)(pt 576 1072)(line_width 1)) + (line (pt 0 1072)(pt 576 1072)(line_width 1)) + (line (pt 0 0)(pt 0 1072)(line_width 1)) + ) +) diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.cmp b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.cmp new file mode 100644 index 0000000..6375a52 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.cmp @@ -0,0 +1,47 @@ + component Qsys is + port ( + alt_vip_itc_0_clocked_video_vid_clk : in std_logic := 'X'; -- vid_clk + alt_vip_itc_0_clocked_video_vid_data : out std_logic_vector(23 downto 0); -- vid_data + alt_vip_itc_0_clocked_video_underflow : out std_logic; -- underflow + alt_vip_itc_0_clocked_video_vid_datavalid : out std_logic; -- vid_datavalid + alt_vip_itc_0_clocked_video_vid_v_sync : out std_logic; -- vid_v_sync + alt_vip_itc_0_clocked_video_vid_h_sync : out std_logic; -- vid_h_sync + alt_vip_itc_0_clocked_video_vid_f : out std_logic; -- vid_f + alt_vip_itc_0_clocked_video_vid_h : out std_logic; -- vid_h + alt_vip_itc_0_clocked_video_vid_v : out std_logic; -- vid_v + altpll_0_areset_conduit_export : in std_logic := 'X'; -- export + altpll_0_locked_conduit_export : out std_logic; -- export + clk_clk : in std_logic := 'X'; -- clk + clk_sdram_clk : out std_logic; -- clk + clk_vga_clk : out std_logic; -- clk + d8m_xclkin_clk : out std_logic; -- clk + eee_imgproc_0_conduit_mode_new_signal : in std_logic := 'X'; -- new_signal + i2c_opencores_camera_export_scl_pad_io : inout std_logic := 'X'; -- scl_pad_io + i2c_opencores_camera_export_sda_pad_io : inout std_logic := 'X'; -- sda_pad_io + i2c_opencores_mipi_export_scl_pad_io : inout std_logic := 'X'; -- scl_pad_io + i2c_opencores_mipi_export_sda_pad_io : inout std_logic := 'X'; -- sda_pad_io + key_external_connection_export : in std_logic_vector(1 downto 0) := (others => 'X'); -- export + led_external_connection_export : out std_logic_vector(9 downto 0); -- export + mipi_pwdn_n_external_connection_export : out std_logic; -- export + mipi_reset_n_external_connection_export : out std_logic; -- export + reset_reset_n : in std_logic := 'X'; -- reset_n + sdram_wire_addr : out std_logic_vector(12 downto 0); -- addr + sdram_wire_ba : out std_logic_vector(1 downto 0); -- ba + sdram_wire_cas_n : out std_logic; -- cas_n + sdram_wire_cke : out std_logic; -- cke + sdram_wire_cs_n : out std_logic; -- cs_n + sdram_wire_dq : inout std_logic_vector(15 downto 0) := (others => 'X'); -- dq + sdram_wire_dqm : out std_logic_vector(1 downto 0); -- dqm + sdram_wire_ras_n : out std_logic; -- ras_n + sdram_wire_we_n : out std_logic; -- we_n + sw_external_connection_export : in std_logic_vector(9 downto 0) := (others => 'X'); -- export + terasic_auto_focus_0_conduit_vcm_i2c_sda : inout std_logic := 'X'; -- vcm_i2c_sda + terasic_auto_focus_0_conduit_clk50 : in std_logic := 'X'; -- clk50 + terasic_auto_focus_0_conduit_vcm_i2c_scl : inout std_logic := 'X'; -- vcm_i2c_scl + terasic_camera_0_conduit_end_D : in std_logic_vector(11 downto 0) := (others => 'X'); -- D + terasic_camera_0_conduit_end_FVAL : in std_logic := 'X'; -- FVAL + terasic_camera_0_conduit_end_LVAL : in std_logic := 'X'; -- LVAL + terasic_camera_0_conduit_end_PIXCLK : in std_logic := 'X' -- PIXCLK + ); + end component Qsys; + diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.html b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.html new file mode 100644 index 0000000..d039e8c --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.html @@ -0,0 +1,5416 @@ + + + + + datasheet for Qsys + + + + + + + + +
Qsys +
+
+
+ + + + + +
2021.03.30.09:18:34Datasheet
+
+
Overview
+
+
+ + + + + + + + +
  clk_50 Qsys
+
+
Processor +
   + nios2_gen2 + Nios II 16.0 +
All Components +
   + TERASIC_AUTO_FOCUS_0 + TERASIC_AUTO_FOCUS 1.0 +
   + altpll_0 + altpll 16.0 +
   + i2c_opencores_camera + i2c_opencores 12.0 +
   + i2c_opencores_mipi + i2c_opencores 12.0 +
   + jtag_uart + altera_avalon_jtag_uart 16.0 +
   + key + altera_avalon_pio 16.0 +
   + led + altera_avalon_pio 16.0 +
   + mipi_pwdn_n + altera_avalon_pio 16.0 +
   + mipi_reset_n + altera_avalon_pio 16.0 +
   + nios2_gen2 + altera_nios2_gen2 16.0 +
   + onchip_memory2_0 + altera_avalon_onchip_memory2 16.0 +
   + sdram + altera_avalon_new_sdram_controller 16.0 +
   + sw + altera_avalon_pio 16.0 +
   + sysid_qsys + altera_avalon_sysid_qsys 16.0 +
   + timer + altera_avalon_timer 16.0
+
+
+
+
Memory Map
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ alt_vip_vfb_0 + + + nios2_gen2 + +
 read_master write_master data_master instruction_master
  + TERASIC_AUTO_FOCUS_0 + +
mm_ctrl 0x00041020
  + altpll_0 + +
pll_slave 0x000410d0
  + i2c_opencores_camera + +
avalon_slave_0 0x00041040
  + i2c_opencores_mipi + +
avalon_slave_0 0x00041060
  + jtag_uart + +
avalon_jtag_slave 0x000410e8
  + key + +
s1 0x000410a0
  + led + +
s1 0x000410c0
  + mipi_pwdn_n + +
s1 0x00041080
  + mipi_reset_n + +
s1 0x00041090
  + nios2_gen2 + +
debug_mem_slave 0x000408000x00040800
  + onchip_memory2_0 + +
s1 0x000200000x00020000
  + sdram + +
s1 0x040000000x04000000
  + sw + +
s1 0x000410b0
  + sysid_qsys + +
control_slave 0x000410e0
  + timer + +
s1 0x00041000
+ +
+
+

TERASIC_AUTO_FOCUS_0

TERASIC_AUTO_FOCUS v1.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  TERASIC_AUTO_FOCUS_0
  mm_ctrl
debug_reset_request  
  reset
+ alt_vip_vfb_0 + dout  
  din
+ altpll_0 + c2  
  clock
+ clk_50 + clk_reset  
  reset
dout   + alt_vip_itc_0 +
  din
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + +
VIDEO_W640
VIDEO_H480
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

(none)
+
+ +
+
+

TERASIC_CAMERA_0

TERASIC_CAMERA v1.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ altpll_0 + c2  TERASIC_CAMERA_0
  clock_reset
+ clk_50 + clk_reset  
  clock_reset_reset
+ nios2_gen2 + debug_reset_request  
  clock_reset_reset
avalon_streaming_source   + alt_vip_vfb_0 +
  din
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + +
VIDEO_W640
VIDEO_H480
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

(none)
+
+ +
+
+

alt_vip_itc_0

alt_vip_itc v14.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ TERASIC_AUTO_FOCUS_0 + dout  alt_vip_itc_0
  din
+ altpll_0 + c2  
  is_clk_rst
+ clk_50 + clk_reset  
  is_clk_rst_reset
+ nios2_gen2 + debug_reset_request  
  is_clk_rst_reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FAMILYMAX10FPGA
NUMBER_OF_COLOUR_PLANES3
COLOUR_PLANES_ARE_IN_PARALLEL1
BPS8
INTERLACED0
H_ACTIVE_PIXELS640
V_ACTIVE_LINES480
ACCEPT_COLOURS_IN_SEQ0
FIFO_DEPTH640
CLOCKS_ARE_SAME0
USE_CONTROL0
NO_OF_MODES1
THRESHOLD639
STD_WIDTH1
GENERATE_SYNC0
USE_EMBEDDED_SYNCS0
AP_LINE0
V_BLANK0
H_BLANK0
H_SYNC_LENGTH96
H_FRONT_PORCH16
H_BACK_PORCH48
V_SYNC_LENGTH2
V_FRONT_PORCH10
V_BACK_PORCH33
F_RISING_EDGE0
F_FALLING_EDGE0
FIELD0_V_RISING_EDGE0
FIELD0_V_BLANK0
FIELD0_V_SYNC_LENGTH0
FIELD0_V_FRONT_PORCH0
FIELD0_V_BACK_PORCH0
ANC_LINE0
FIELD0_ANC_LINE0
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

(none)
+
+ +
+
+

alt_vip_vfb_0

alt_vip_vfb v13.1 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ TERASIC_CAMERA_0 + avalon_streaming_source  alt_vip_vfb_0
  din
+ altpll_0 + c2  
  clock
+ clk_50 + clk_reset  
  reset
+ nios2_gen2 + debug_reset_request  
  reset
read_master   + sdram +
  s1
write_master  
  s1
dout   + TERASIC_AUTO_FOCUS_0 +
  din
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AUTO_WRITE_MASTER_CLOCKS_SAME0
AUTO_WRITE_MASTER_INTERRUPT_USED_MASK0
AUTO_READ_MASTER_MAX_READ_LATENCY2
AUTO_READ_MASTER_CLOCKS_SAME0
AUTO_WRITE_MASTER_MAX_READ_LATENCY2
AUTO_DEVICE_FAMILYMAX10FPGA
AUTO_WRITER_CONTROL_CLOCKS_SAME0
AUTO_READ_MASTER_INTERRUPT_USED_MASK0
AUTO_READER_CONTROL_CLOCKS_SAME0
AUTO_READ_MASTER_NEED_ADDR_WIDTH27
AUTO_WRITE_MASTER_NEED_ADDR_WIDTH27
PARAMETERISATION<frameBufferParams><VFB_NAME>MyFrameBuffer</VFB_NAME><VFB_MAX_WIDTH>640</VFB_MAX_WIDTH><VFB_MAX_HEIGHT>480</VFB_MAX_HEIGHT><VFB_BPS>8</VFB_BPS><VFB_CHANNELS_IN_SEQ>1</VFB_CHANNELS_IN_SEQ><VFB_CHANNELS_IN_PAR>3</VFB_CHANNELS_IN_PAR><VFB_WRITER_RUNTIME_CONTROL>false</VFB_WRITER_RUNTIME_CONTROL><VFB_DROP_FRAMES>true</VFB_DROP_FRAMES><VFB_READER_RUNTIME_CONTROL>0</VFB_READER_RUNTIME_CONTROL><VFB_REPEAT_FRAMES>true</VFB_REPEAT_FRAMES><VFB_FRAMEBUFFERS_ADDR>00000000</VFB_FRAMEBUFFERS_ADDR><VFB_MEM_PORT_WIDTH>32</VFB_MEM_PORT_WIDTH><VFB_MEM_MASTERS_USE_SEPARATE_CLOCK>false</VFB_MEM_MASTERS_USE_SEPARATE_CLOCK><VFB_RDATA_FIFO_DEPTH>1024</VFB_RDATA_FIFO_DEPTH><VFB_RDATA_BURST_TARGET>4</VFB_RDATA_BURST_TARGET><VFB_WDATA_FIFO_DEPTH>1024</VFB_WDATA_FIFO_DEPTH><VFB_WDATA_BURST_TARGET>4</VFB_WDATA_BURST_TARGET><VFB_MAX_NUMBER_PACKETS>1</VFB_MAX_NUMBER_PACKETS><VFB_MAX_SYMBOLS_IN_PACKET>10</VFB_MAX_SYMBOLS_IN_PACKET><VFB_INTERLACED_SUPPORT>0</VFB_INTERLACED_SUPPORT><VFB_CONTROLLED_DROP_REPEAT>0</VFB_CONTROLLED_DROP_REPEAT><VFB_BURST_ALIGNMENT>0</VFB_BURST_ALIGNMENT><VFB_DROP_INVALID_FIELDS>false</VFB_DROP_INVALID_FIELDS></frameBufferParams>
deviceFamilyMAX 10
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

(none)
+
+ +
+
+

altpll_0

altpll v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  altpll_0
  pll_slave
+ clk_50 + clk  
  inclk_interface
clk_reset  
  inclk_interface_reset
c2   + sdram +
  clk
c2   + TERASIC_AUTO_FOCUS_0 +
  clock
c2   + alt_vip_vfb_0 +
  clock
c2   + TERASIC_CAMERA_0 +
  clock_reset
c2   + alt_vip_itc_0 +
  is_clk_rst
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HIDDEN_CUSTOM_ELABORATIONaltpll_avalon_elaboration
HIDDEN_CUSTOM_POST_EDITaltpll_avalon_post_edit
INTENDED_DEVICE_FAMILYMAX 10
WIDTH_CLOCK5
WIDTH_PHASECOUNTERSELECT
PRIMARY_CLOCK
INCLK0_INPUT_FREQUENCY20000
INCLK1_INPUT_FREQUENCY
OPERATION_MODENORMAL
PLL_TYPEAUTO
QUALIFY_CONF_DONE
COMPENSATE_CLOCKCLK0
SCAN_CHAIN
GATE_LOCK_SIGNAL
GATE_LOCK_COUNTER
LOCK_HIGH
LOCK_LOW
VALID_LOCK_MULTIPLIER
INVALID_LOCK_MULTIPLIER
SWITCH_OVER_ON_LOSSCLK
SWITCH_OVER_ON_GATED_LOCK
ENABLE_SWITCH_OVER_COUNTER
SKIP_VCO
SWITCH_OVER_COUNTER
SWITCH_OVER_TYPE
FEEDBACK_SOURCE
BANDWIDTH
BANDWIDTH_TYPEAUTO
SPREAD_FREQUENCY
DOWN_SPREAD
SELF_RESET_ON_GATED_LOSS_LOCK
SELF_RESET_ON_LOSS_LOCK
CLK0_MULTIPLY_BY2
CLK1_MULTIPLY_BY2
CLK2_MULTIPLY_BY2
CLK3_MULTIPLY_BY1
CLK4_MULTIPLY_BY2
CLK5_MULTIPLY_BY
CLK6_MULTIPLY_BY
CLK7_MULTIPLY_BY
CLK8_MULTIPLY_BY
CLK9_MULTIPLY_BY
EXTCLK0_MULTIPLY_BY
EXTCLK1_MULTIPLY_BY
EXTCLK2_MULTIPLY_BY
EXTCLK3_MULTIPLY_BY
CLK0_DIVIDE_BY1
CLK1_DIVIDE_BY1
CLK2_DIVIDE_BY1
CLK3_DIVIDE_BY2
CLK4_DIVIDE_BY5
CLK5_DIVIDE_BY
CLK6_DIVIDE_BY
CLK7_DIVIDE_BY
CLK8_DIVIDE_BY
CLK9_DIVIDE_BY
EXTCLK0_DIVIDE_BY
EXTCLK1_DIVIDE_BY
EXTCLK2_DIVIDE_BY
EXTCLK3_DIVIDE_BY
CLK0_PHASE_SHIFT0
CLK1_PHASE_SHIFT7500
CLK2_PHASE_SHIFT0
CLK3_PHASE_SHIFT0
CLK4_PHASE_SHIFT0
CLK5_PHASE_SHIFT
CLK6_PHASE_SHIFT
CLK7_PHASE_SHIFT
CLK8_PHASE_SHIFT
CLK9_PHASE_SHIFT
EXTCLK0_PHASE_SHIFT
EXTCLK1_PHASE_SHIFT
EXTCLK2_PHASE_SHIFT
EXTCLK3_PHASE_SHIFT
CLK0_DUTY_CYCLE50
CLK1_DUTY_CYCLE50
CLK2_DUTY_CYCLE50
CLK3_DUTY_CYCLE50
CLK4_DUTY_CYCLE50
CLK5_DUTY_CYCLE
CLK6_DUTY_CYCLE
CLK7_DUTY_CYCLE
CLK8_DUTY_CYCLE
CLK9_DUTY_CYCLE
EXTCLK0_DUTY_CYCLE
EXTCLK1_DUTY_CYCLE
EXTCLK2_DUTY_CYCLE
EXTCLK3_DUTY_CYCLE
PORT_clkena0PORT_UNUSED
PORT_clkena1PORT_UNUSED
PORT_clkena2PORT_UNUSED
PORT_clkena3PORT_UNUSED
PORT_clkena4PORT_UNUSED
PORT_clkena5PORT_UNUSED
PORT_extclkena0
PORT_extclkena1
PORT_extclkena2
PORT_extclkena3
PORT_extclk0PORT_UNUSED
PORT_extclk1PORT_UNUSED
PORT_extclk2PORT_UNUSED
PORT_extclk3PORT_UNUSED
PORT_CLKBAD0PORT_UNUSED
PORT_CLKBAD1PORT_UNUSED
PORT_clk0PORT_USED
PORT_clk1PORT_USED
PORT_clk2PORT_USED
PORT_clk3PORT_USED
PORT_clk4PORT_USED
PORT_clk5PORT_UNUSED
PORT_clk6
PORT_clk7
PORT_clk8
PORT_clk9
PORT_SCANDATAPORT_UNUSED
PORT_SCANDATAOUTPORT_UNUSED
PORT_SCANDONEPORT_UNUSED
PORT_SCLKOUT1
PORT_SCLKOUT0
PORT_ACTIVECLOCKPORT_UNUSED
PORT_CLKLOSSPORT_UNUSED
PORT_INCLK1PORT_UNUSED
PORT_INCLK0PORT_USED
PORT_FBINPORT_UNUSED
PORT_PLLENAPORT_UNUSED
PORT_CLKSWITCHPORT_UNUSED
PORT_ARESETPORT_USED
PORT_PFDENAPORT_UNUSED
PORT_SCANCLKPORT_UNUSED
PORT_SCANACLRPORT_UNUSED
PORT_SCANREADPORT_UNUSED
PORT_SCANWRITEPORT_UNUSED
PORT_ENABLE0
PORT_ENABLE1
PORT_LOCKEDPORT_USED
PORT_CONFIGUPDATEPORT_UNUSED
PORT_FBOUT
PORT_PHASEDONEPORT_UNUSED
PORT_PHASESTEPPORT_UNUSED
PORT_PHASEUPDOWNPORT_UNUSED
PORT_SCANCLKENAPORT_UNUSED
PORT_PHASECOUNTERSELECTPORT_UNUSED
PORT_VCOOVERRANGE
PORT_VCOUNDERRANGE
DPA_MULTIPLY_BY
DPA_DIVIDE_BY
DPA_DIVIDER
VCO_MULTIPLY_BY
VCO_DIVIDE_BY
SCLKOUT0_PHASE_SHIFT
SCLKOUT1_PHASE_SHIFT
VCO_FREQUENCY_CONTROL
VCO_PHASE_SHIFT_STEP
USING_FBMIMICBIDIR_PORT
SCAN_CHAIN_MIF_FILE
AVALON_USE_SEPARATE_SYSCLKNO
HIDDEN_CONSTANTSCT#CLK2_DIVIDE_BY 1 CT#PORT_clk5 PORT_UNUSED CT#PORT_clk4 PORT_USED CT#PORT_clk3 PORT_USED CT#PORT_clk2 PORT_USED CT#PORT_clk1 PORT_USED CT#PORT_clk0 PORT_USED CT#CLK0_MULTIPLY_BY 2 CT#PORT_SCANWRITE PORT_UNUSED CT#PORT_SCANACLR PORT_UNUSED CT#PORT_PFDENA PORT_UNUSED CT#CLK3_DUTY_CYCLE 50 CT#CLK3_DIVIDE_BY 2 CT#PORT_PLLENA PORT_UNUSED CT#PORT_SCANDATA PORT_UNUSED CT#CLK3_PHASE_SHIFT 0 CT#PORT_SCANCLKENA PORT_UNUSED CT#CLK4_DIVIDE_BY 5 CT#WIDTH_CLOCK 5 CT#PORT_SCANDATAOUT PORT_UNUSED CT#CLK4_MULTIPLY_BY 2 CT#LPM_TYPE altpll CT#PLL_TYPE AUTO CT#CLK0_PHASE_SHIFT 0 CT#CLK1_DUTY_CYCLE 50 CT#PORT_PHASEDONE PORT_UNUSED CT#OPERATION_MODE NORMAL CT#PORT_CONFIGUPDATE PORT_UNUSED CT#CLK1_MULTIPLY_BY 2 CT#COMPENSATE_CLOCK CLK0 CT#PORT_CLKSWITCH PORT_UNUSED CT#CLK4_PHASE_SHIFT 0 CT#INCLK0_INPUT_FREQUENCY 20000 CT#CLK4_DUTY_CYCLE 50 CT#PORT_SCANDONE PORT_UNUSED CT#PORT_CLKLOSS PORT_UNUSED CT#PORT_INCLK1 PORT_UNUSED CT#AVALON_USE_SEPARATE_SYSCLK NO CT#PORT_INCLK0 PORT_USED CT#PORT_clkena5 PORT_UNUSED CT#PORT_clkena4 PORT_UNUSED CT#PORT_clkena3 PORT_UNUSED CT#PORT_clkena2 PORT_UNUSED CT#PORT_clkena1 PORT_UNUSED CT#PORT_clkena0 PORT_UNUSED CT#CLK1_PHASE_SHIFT 7500 CT#PORT_ARESET PORT_USED CT#BANDWIDTH_TYPE AUTO CT#CLK2_MULTIPLY_BY 2 CT#INTENDED_DEVICE_FAMILY {MAX 10} CT#PORT_SCANREAD PORT_UNUSED CT#CLK2_DUTY_CYCLE 50 CT#PORT_PHASESTEP PORT_UNUSED CT#PORT_SCANCLK PORT_UNUSED CT#PORT_CLKBAD1 PORT_UNUSED CT#PORT_CLKBAD0 PORT_UNUSED CT#PORT_FBIN PORT_UNUSED CT#PORT_PHASEUPDOWN PORT_UNUSED CT#PORT_extclk3 PORT_UNUSED CT#PORT_extclk2 PORT_UNUSED CT#PORT_extclk1 PORT_UNUSED CT#PORT_PHASECOUNTERSELECT PORT_UNUSED CT#PORT_extclk0 PORT_UNUSED CT#PORT_ACTIVECLOCK PORT_UNUSED CT#CLK2_PHASE_SHIFT 0 CT#CLK0_DUTY_CYCLE 50 CT#CLK0_DIVIDE_BY 1 CT#CLK1_DIVIDE_BY 1 CT#CLK3_MULTIPLY_BY 1 CT#PORT_LOCKED PORT_USED
HIDDEN_PRIVATESPT#GLOCKED_FEATURE_ENABLED 0 PT#SPREAD_FEATURE_ENABLED 0 PT#BANDWIDTH_FREQ_UNIT MHz PT#CUR_DEDICATED_CLK c0 PT#INCLK0_FREQ_EDIT 50.000 PT#BANDWIDTH_PRESET Low PT#PLL_LVDS_PLL_CHECK 0 PT#BANDWIDTH_USE_PRESET 0 PT#AVALON_USE_SEPARATE_SYSCLK NO PT#OUTPUT_FREQ_UNIT4 MHz PT#OUTPUT_FREQ_UNIT3 MHz PT#PLL_ENHPLL_CHECK 0 PT#OUTPUT_FREQ_UNIT2 MHz PT#OUTPUT_FREQ_UNIT1 MHz PT#OUTPUT_FREQ_UNIT0 MHz PT#PHASE_RECONFIG_FEATURE_ENABLED 1 PT#CREATE_CLKBAD_CHECK 0 PT#CLKSWITCH_CHECK 0 PT#INCLK1_FREQ_EDIT 100.000 PT#NORMAL_MODE_RADIO 1 PT#SRC_SYNCH_COMP_RADIO 0 PT#PLL_ARESET_CHECK 1 PT#LONG_SCAN_RADIO 1 PT#SCAN_FEATURE_ENABLED 1 PT#USE_CLK4 1 PT#USE_CLK3 1 PT#USE_CLK2 1 PT#PHASE_RECONFIG_INPUTS_CHECK 0 PT#USE_CLK1 1 PT#USE_CLK0 1 PT#PRIMARY_CLK_COMBO inclk0 PT#BANDWIDTH 1.000 PT#GLOCKED_COUNTER_EDIT_CHANGED 1 PT#PLL_FASTPLL_CHECK 0 PT#SPREAD_FREQ_UNIT KHz PT#LVDS_PHASE_SHIFT_UNIT4 deg PT#LVDS_PHASE_SHIFT_UNIT3 deg PT#PLL_AUTOPLL_CHECK 1 PT#OUTPUT_FREQ_MODE4 1 PT#LVDS_PHASE_SHIFT_UNIT2 deg PT#OUTPUT_FREQ_MODE3 1 PT#LVDS_PHASE_SHIFT_UNIT1 deg PT#OUTPUT_FREQ_MODE2 1 PT#LVDS_PHASE_SHIFT_UNIT0 deg PT#OUTPUT_FREQ_MODE1 1 PT#SWITCHOVER_FEATURE_ENABLED 0 PT#MIG_DEVICE_SPEED_GRADE Any PT#OUTPUT_FREQ_MODE0 1 PT#BANDWIDTH_FEATURE_ENABLED 1 PT#INCLK0_FREQ_UNIT_COMBO MHz PT#ZERO_DELAY_RADIO 0 PT#OUTPUT_FREQ4 20.00000000 PT#OUTPUT_FREQ3 25.00000000 PT#OUTPUT_FREQ2 100.00000000 PT#OUTPUT_FREQ1 100.00000000 PT#OUTPUT_FREQ0 100.00000000 PT#SHORT_SCAN_RADIO 0 PT#LVDS_MODE_DATA_RATE_DIRTY 0 PT#CUR_FBIN_CLK c0 PT#PLL_ADVANCED_PARAM_CHECK 0 PT#CLKBAD_SWITCHOVER_CHECK 0 PT#PHASE_SHIFT_STEP_ENABLED_CHECK 0 PT#DEVICE_SPEED_GRADE 6 PT#PLL_FBMIMIC_CHECK 0 PT#LVDS_MODE_DATA_RATE {Not Available} PT#PHASE_SHIFT4 0.00000000 PT#LOCKED_OUTPUT_CHECK 1 PT#SPREAD_PERCENT 0.500 PT#PHASE_SHIFT3 0.00000000 PT#DIV_FACTOR4 1 PT#PHASE_SHIFT2 0.00000000 PT#DIV_FACTOR3 1 PT#PHASE_SHIFT1 270.00000000 PT#DIV_FACTOR2 1 PT#PHASE_SHIFT0 0.00000000 PT#DIV_FACTOR1 1 PT#DIV_FACTOR0 1 PT#CNX_NO_COMPENSATE_RADIO 0 PT#USE_CLKENA4 0 PT#USE_CLKENA3 0 PT#USE_CLKENA2 0 PT#USE_CLKENA1 0 PT#USE_CLKENA0 0 PT#CREATE_INCLK1_CHECK 0 PT#GLOCK_COUNTER_EDIT 1048575 PT#INCLK1_FREQ_UNIT_COMBO MHz PT#EFF_OUTPUT_FREQ_VALUE4 20.000000 PT#EFF_OUTPUT_FREQ_VALUE3 25.000000 PT#EFF_OUTPUT_FREQ_VALUE2 100.000000 PT#EFF_OUTPUT_FREQ_VALUE1 100.000000 PT#EFF_OUTPUT_FREQ_VALUE0 100.000000 PT#SPREAD_FREQ 50.000 PT#USE_MIL_SPEED_GRADE 0 PT#EXPLICIT_SWITCHOVER_COUNTER 0 PT#STICKY_CLK4 1 PT#STICKY_CLK3 1 PT#STICKY_CLK2 1 PT#STICKY_CLK1 1 PT#STICKY_CLK0 1 PT#MIRROR_CLK4 0 PT#EXT_FEEDBACK_RADIO 0 PT#MIRROR_CLK3 0 PT#MIRROR_CLK2 0 PT#MIRROR_CLK1 0 PT#SWITCHOVER_COUNT_EDIT 1 PT#MIRROR_CLK0 0 PT#SELF_RESET_LOCK_LOSS 0 PT#PLL_PFDENA_CHECK 0 PT#INT_FEEDBACK__MODE_RADIO 1 PT#INCLK1_FREQ_EDIT_CHANGED 1 PT#SYNTH_WRAPPER_GEN_POSTFIX 0 PT#CLKLOSS_CHECK 0 PT#PHASE_SHIFT_UNIT4 deg PT#PHASE_SHIFT_UNIT3 deg PT#PHASE_SHIFT_UNIT2 deg PT#PHASE_SHIFT_UNIT1 deg PT#PHASE_SHIFT_UNIT0 deg PT#BANDWIDTH_USE_AUTO 1 PT#HAS_MANUAL_SWITCHOVER 1 PT#MULT_FACTOR4 1 PT#MULT_FACTOR3 1 PT#MULT_FACTOR2 1 PT#MULT_FACTOR1 1 PT#MULT_FACTOR0 1 PT#SPREAD_USE 0 PT#GLOCKED_MODE_CHECK 0 PT#DUTY_CYCLE4 50.00000000 PT#DUTY_CYCLE3 50.00000000 PT#DUTY_CYCLE2 50.00000000 PT#SACN_INPUTS_CHECK 0 PT#DUTY_CYCLE1 50.00000000 PT#INTENDED_DEVICE_FAMILY {MAX 10} PT#DUTY_CYCLE0 50.00000000 PT#PLL_TARGET_HARCOPY_CHECK 0 PT#INCLK1_FREQ_UNIT_CHANGED 1 PT#RECONFIG_FILE ALTPLL1472001986172141.mif PT#ACTIVECLK_CHECK 0
HIDDEN_USED_PORTSUP#locked used UP#c4 used UP#c3 used UP#c2 used UP#c1 used UP#c0 used UP#areset used UP#inclk0 used
HIDDEN_IS_NUMERICIN#WIDTH_CLOCK 1 IN#CLK0_DUTY_CYCLE 1 IN#CLK2_DIVIDE_BY 1 IN#PLL_TARGET_HARCOPY_CHECK 1 IN#CLK3_DIVIDE_BY 1 IN#CLK4_MULTIPLY_BY 1 IN#CLK1_MULTIPLY_BY 1 IN#CLK3_DUTY_CYCLE 1 IN#CLK4_DIVIDE_BY 1 IN#SWITCHOVER_COUNT_EDIT 1 IN#INCLK0_INPUT_FREQUENCY 1 IN#PLL_LVDS_PLL_CHECK 1 IN#PLL_AUTOPLL_CHECK 1 IN#PLL_FASTPLL_CHECK 1 IN#CLK1_DUTY_CYCLE 1 IN#PLL_ENHPLL_CHECK 1 IN#CLK2_MULTIPLY_BY 1 IN#DIV_FACTOR4 1 IN#DIV_FACTOR3 1 IN#DIV_FACTOR2 1 IN#DIV_FACTOR1 1 IN#DIV_FACTOR0 1 IN#LVDS_MODE_DATA_RATE_DIRTY 1 IN#CLK4_DUTY_CYCLE 1 IN#GLOCK_COUNTER_EDIT 1 IN#CLK2_DUTY_CYCLE 1 IN#CLK0_DIVIDE_BY 1 IN#CLK3_MULTIPLY_BY 1 IN#MULT_FACTOR4 1 IN#MULT_FACTOR3 1 IN#MULT_FACTOR2 1 IN#MULT_FACTOR1 1 IN#MULT_FACTOR0 1 IN#CLK0_MULTIPLY_BY 1 IN#USE_MIL_SPEED_GRADE 1 IN#CLK1_DIVIDE_BY 1
HIDDEN_MF_PORTSMF#areset 1 MF#clk 1 MF#locked 1 MF#inclk 1
HIDDEN_IF_PORTSIF#phasecounterselect {input 3} IF#locked {output 0} IF#reset {input 0} IF#clk {input 0} IF#phaseupdown {input 0} IF#scandone {output 0} IF#readdata {output 32} IF#write {input 0} IF#scanclk {input 0} IF#phasedone {output 0} IF#c4 {output 0} IF#c3 {output 0} IF#address {input 2} IF#c2 {output 0} IF#c1 {output 0} IF#c0 {output 0} IF#writedata {input 32} IF#read {input 0} IF#areset {input 0} IF#scanclkena {input 0} IF#scandataout {output 0} IF#configupdate {input 0} IF#phasestep {input 0} IF#scandata {input 0}
HIDDEN_IS_FIRST_EDIT0
AUTO_DEVICE_FAMILYMAX10FPGA
AUTO_INCLK_INTERFACE_CLOCK_RATE50000000
deviceFamilyMAX 10
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

(none)
+
+ +
+
+

clk_50

clock_source v16.0 +
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + +
clockFrequency50000000
clockFrequencyKnowntrue
inputClockFrequency0
resetSynchronousEdgesNONE
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

(none)
+
+ +
+
+

i2c_opencores_camera

i2c_opencores v12.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  i2c_opencores_camera
  avalon_slave_0
irq  
  interrupt_sender
debug_reset_request  
  clock_reset
+ clk_50 + clk  
  clock
clk_reset  
  clock_reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + +
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

(none)
+
+ +
+
+

i2c_opencores_mipi

i2c_opencores v12.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  i2c_opencores_mipi
  avalon_slave_0
irq  
  interrupt_sender
debug_reset_request  
  clock_reset
+ clk_50 + clk  
  clock
clk_reset  
  clock_reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + +
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

(none)
+
+ +
+
+

jtag_uart

altera_avalon_jtag_uart v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  jtag_uart
  avalon_jtag_slave
irq  
  irq
debug_reset_request  
  reset
+ clk_50 + clk  
  clk
clk_reset  
  reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allowMultipleConnectionsfalse
hubInstanceID0
readBufferDepth64
readIRQThreshold8
simInputCharacterStream
simInteractiveOptionsNO_INTERACTIVE_WINDOWS
useRegistersForReadBufferfalse
useRegistersForWriteBufferfalse
useRelativePathForSimFilefalse
writeBufferDepth64
writeIRQThreshold8
clkFreq50000000
avalonSpec2.0
legacySignalAllowfalse
enableInteractiveInputfalse
enableInteractiveOutputfalse
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + + + + + + + + + +
READ_DEPTH64
READ_THRESHOLD8
WRITE_DEPTH64
WRITE_THRESHOLD8
+
+
+ +
+
+

key

altera_avalon_pio v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  key
  s1
debug_reset_request  
  reset
+ clk_50 + clk  
  clk
clk_reset  
  reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bitClearingEdgeCapRegfalse
bitModifyingOutRegfalse
captureEdgefalse
directionInput
edgeTypeRISING
generateIRQfalse
irqTypeLEVEL
resetValue0
simDoTestBenchWiringfalse
simDrivenValue0
width2
clockRate50000000
derived_has_trifalse
derived_has_outfalse
derived_has_intrue
derived_do_test_bench_wiringfalse
derived_capturefalse
derived_edge_typeNONE
derived_irq_typeNONE
derived_has_irqfalse
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BIT_CLEARING_EDGE_REGISTER0
BIT_MODIFYING_OUTPUT_REGISTER0
CAPTURE0
DATA_WIDTH2
DO_TEST_BENCH_WIRING0
DRIVEN_SIM_VALUE0
EDGE_TYPENONE
FREQ50000000
HAS_IN1
HAS_OUT0
HAS_TRI0
IRQ_TYPENONE
RESET_VALUE0
+
+
+ +
+
+

led

altera_avalon_pio v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  led
  s1
debug_reset_request  
  reset
+ clk_50 + clk  
  clk
clk_reset  
  reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bitClearingEdgeCapRegfalse
bitModifyingOutRegfalse
captureEdgefalse
directionOutput
edgeTypeRISING
generateIRQfalse
irqTypeLEVEL
resetValue0
simDoTestBenchWiringfalse
simDrivenValue0
width10
clockRate50000000
derived_has_trifalse
derived_has_outtrue
derived_has_infalse
derived_do_test_bench_wiringfalse
derived_capturefalse
derived_edge_typeNONE
derived_irq_typeNONE
derived_has_irqfalse
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BIT_CLEARING_EDGE_REGISTER0
BIT_MODIFYING_OUTPUT_REGISTER0
CAPTURE0
DATA_WIDTH10
DO_TEST_BENCH_WIRING0
DRIVEN_SIM_VALUE0
EDGE_TYPENONE
FREQ50000000
HAS_IN0
HAS_OUT1
HAS_TRI0
IRQ_TYPENONE
RESET_VALUE0
+
+
+ +
+
+

mipi_pwdn_n

altera_avalon_pio v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  mipi_pwdn_n
  s1
debug_reset_request  
  reset
+ clk_50 + clk  
  clk
clk_reset  
  reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bitClearingEdgeCapRegfalse
bitModifyingOutRegfalse
captureEdgefalse
directionOutput
edgeTypeRISING
generateIRQfalse
irqTypeLEVEL
resetValue0
simDoTestBenchWiringfalse
simDrivenValue0
width1
clockRate50000000
derived_has_trifalse
derived_has_outtrue
derived_has_infalse
derived_do_test_bench_wiringfalse
derived_capturefalse
derived_edge_typeNONE
derived_irq_typeNONE
derived_has_irqfalse
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BIT_CLEARING_EDGE_REGISTER0
BIT_MODIFYING_OUTPUT_REGISTER0
CAPTURE0
DATA_WIDTH1
DO_TEST_BENCH_WIRING0
DRIVEN_SIM_VALUE0
EDGE_TYPENONE
FREQ50000000
HAS_IN0
HAS_OUT1
HAS_TRI0
IRQ_TYPENONE
RESET_VALUE0
+
+
+ +
+
+

mipi_reset_n

altera_avalon_pio v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  mipi_reset_n
  s1
debug_reset_request  
  reset
+ clk_50 + clk  
  clk
clk_reset  
  reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bitClearingEdgeCapRegfalse
bitModifyingOutRegfalse
captureEdgefalse
directionOutput
edgeTypeRISING
generateIRQfalse
irqTypeLEVEL
resetValue0
simDoTestBenchWiringfalse
simDrivenValue0
width1
clockRate50000000
derived_has_trifalse
derived_has_outtrue
derived_has_infalse
derived_do_test_bench_wiringfalse
derived_capturefalse
derived_edge_typeNONE
derived_irq_typeNONE
derived_has_irqfalse
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BIT_CLEARING_EDGE_REGISTER0
BIT_MODIFYING_OUTPUT_REGISTER0
CAPTURE0
DATA_WIDTH1
DO_TEST_BENCH_WIRING0
DRIVEN_SIM_VALUE0
EDGE_TYPENONE
FREQ50000000
HAS_IN0
HAS_OUT1
HAS_TRI0
IRQ_TYPENONE
RESET_VALUE0
+
+
+ +
+
+

nios2_gen2

altera_nios2_gen2 v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ clk_50 + clk  nios2_gen2
  clk
clk_reset  
  reset
data_master   + jtag_uart +
  avalon_jtag_slave
irq  
  irq
debug_reset_request  
  reset
data_master   + i2c_opencores_mipi +
  avalon_slave_0
irq  
  interrupt_sender
debug_reset_request  
  clock_reset
data_master   + i2c_opencores_camera +
  avalon_slave_0
irq  
  interrupt_sender
debug_reset_request  
  clock_reset
data_master   + sysid_qsys +
  control_slave
debug_reset_request  
  reset
data_master   + TERASIC_AUTO_FOCUS_0 +
  mm_ctrl
debug_reset_request  
  reset
data_master   + altpll_0 +
  pll_slave
data_master   + onchip_memory2_0 +
  s1
instruction_master  
  s1
debug_reset_request  
  reset1
data_master   + timer +
  s1
irq  
  irq
debug_reset_request  
  reset
data_master   + led +
  s1
debug_reset_request  
  reset
data_master   + sw +
  s1
debug_reset_request  
  reset
data_master   + key +
  s1
debug_reset_request  
  reset
data_master   + mipi_reset_n +
  s1
debug_reset_request  
  reset
data_master   + mipi_pwdn_n +
  s1
debug_reset_request  
  reset
debug_reset_request   + TERASIC_CAMERA_0 +
  clock_reset_reset
debug_reset_request   + alt_vip_itc_0 +
  is_clk_rst_reset
debug_reset_request   + sdram +
  reset
debug_reset_request   + alt_vip_vfb_0 +
  reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tmr_enabledfalse
setting_disable_tmr_injfalse
setting_showUnpublishedSettingsfalse
setting_showInternalSettingsfalse
setting_preciseIllegalMemAccessExceptionfalse
setting_exportPCBfalse
setting_exportdebuginfofalse
setting_clearXBitsLDNonBypasstrue
setting_bigEndianfalse
setting_export_large_RAMsfalse
setting_asic_enabledfalse
setting_asic_synopsys_translate_on_offfalse
setting_asic_third_party_synthesisfalse
setting_asic_add_scan_mode_inputfalse
setting_oci_version1
setting_fast_register_readfalse
setting_exportHostDebugPortfalse
setting_oci_export_jtag_signalsfalse
setting_avalonDebugPortPresentfalse
setting_alwaysEncrypttrue
io_regionbase0
io_regionsize0
setting_support31bitdcachebypasstrue
setting_activateTracefalse
setting_allow_break_instfalse
setting_activateTestEndCheckerfalse
setting_ecc_sim_test_portsfalse
setting_disableocitracefalse
setting_activateMonitorstrue
setting_HDLSimCachesClearedtrue
setting_HBreakTestfalse
setting_breakslaveoveridefalse
mpu_useLimitfalse
mpu_enabledfalse
mmu_enabledfalse
mmu_autoAssignTlbPtrSztrue
cpuResetfalse
resetrequest_enabledtrue
setting_removeRAMinitfalse
setting_tmr_output_disablefalse
setting_shadowRegisterSets0
mpu_numOfInstRegion8
mpu_numOfDataRegion8
mmu_TLBMissExcOffset0
resetOffset0
exceptionOffset32
cpuID0
breakOffset32
userDefinedSettings
tracefilename
resetSlaveonchip_memory2_0.s1
mmu_TLBMissExcSlaveNone
exceptionSlaveonchip_memory2_0.s1
breakSlaveNone
setting_interruptControllerTypeInternal
setting_branchpredictiontypeDynamic
setting_bhtPtrSz8
cpuArchRev1
stratix_dspblock_shift_mulfalse
shifterTypefast_le_shift
multiplierTypemul_fast32
mul_shift_choice0
mul_32_impl2
mul_64_impl0
shift_rot_impl1
dividerTypeno_div
mpu_minInstRegionSize12
mpu_minDataRegionSize12
mmu_uitlbNumEntries4
mmu_udtlbNumEntries6
mmu_tlbPtrSz7
mmu_tlbNumWays16
mmu_processIDNumBits8
implFast
icache_size4096
fa_cache_line2
fa_cache_linesize0
icache_tagramBlockTypeAutomatic
icache_ramBlockTypeAutomatic
icache_numTCIM0
icache_burstTypeNone
dcache_burstsfalse
dcache_victim_buf_implram
dcache_size2048
dcache_tagramBlockTypeAutomatic
dcache_ramBlockTypeAutomatic
dcache_numTCDM0
setting_exportvectorsfalse
setting_usedesignwarefalse
setting_ecc_presentfalse
setting_ic_ecc_presenttrue
setting_rf_ecc_presenttrue
setting_mmu_ecc_presenttrue
setting_dc_ecc_presenttrue
setting_itcm_ecc_presenttrue
setting_dtcm_ecc_presenttrue
regfile_ramBlockTypeAutomatic
ocimem_ramBlockTypeAutomatic
ocimem_ramInitfalse
mmu_ramBlockTypeAutomatic
bht_ramBlockTypeAutomatic
cdx_enabledfalse
mpx_enabledfalse
debug_enabledtrue
debug_triggerArmingtrue
debug_debugReqSignalsfalse
debug_assignJtagInstanceIDfalse
debug_jtagInstanceID0
debug_OCIOnchipTrace_128
debug_hwbreakpoint0
debug_datatrigger0
debug_traceTypenone
debug_traceStorageonchip_trace
master_addr_mapfalse
instruction_master_paddr_base0
instruction_master_paddr_size0
flash_instruction_master_paddr_base0
flash_instruction_master_paddr_size0
data_master_paddr_base0
data_master_paddr_size0
tightly_coupled_instruction_master_0_paddr_base0
tightly_coupled_instruction_master_0_paddr_size0
tightly_coupled_instruction_master_1_paddr_base0
tightly_coupled_instruction_master_1_paddr_size0
tightly_coupled_instruction_master_2_paddr_base0
tightly_coupled_instruction_master_2_paddr_size0
tightly_coupled_instruction_master_3_paddr_base0
tightly_coupled_instruction_master_3_paddr_size0
tightly_coupled_data_master_0_paddr_base0
tightly_coupled_data_master_0_paddr_size0
tightly_coupled_data_master_1_paddr_base0
tightly_coupled_data_master_1_paddr_size0
tightly_coupled_data_master_2_paddr_base0
tightly_coupled_data_master_2_paddr_size0
tightly_coupled_data_master_3_paddr_base0
tightly_coupled_data_master_3_paddr_size0
instruction_master_high_performance_paddr_base0
instruction_master_high_performance_paddr_size0
data_master_high_performance_paddr_base0
data_master_high_performance_paddr_size0
resetAbsoluteAddr131072
exceptionAbsoluteAddr131104
breakAbsoluteAddr264224
mmu_TLBMissExcAbsAddr0
dcache_bursts_derivedfalse
dcache_size_derived2048
breakSlave_derivednios2_gen2.debug_mem_slave
dcache_lineSize_derived32
setting_ioregionBypassDCachefalse
setting_bit31BypassDCachetrue
translate_on "synthesis translate_on"
translate_off "synthesis translate_off"
debug_onchiptracefalse
debug_offchiptracefalse
debug_insttracefalse
debug_datatracefalse
instAddrWidth19
faAddrWidth1
dataAddrWidth19
tightlyCoupledDataMaster0AddrWidth1
tightlyCoupledDataMaster1AddrWidth1
tightlyCoupledDataMaster2AddrWidth1
tightlyCoupledDataMaster3AddrWidth1
tightlyCoupledInstructionMaster0AddrWidth1
tightlyCoupledInstructionMaster1AddrWidth1
tightlyCoupledInstructionMaster2AddrWidth1
tightlyCoupledInstructionMaster3AddrWidth1
dataMasterHighPerformanceAddrWidth1
instructionMasterHighPerformanceAddrWidth1
instSlaveMapParam<address-map><slave name='onchip_memory2_0.s1' start='0x20000' end='0x386A0' type='altera_avalon_onchip_memory2.s1' /><slave name='nios2_gen2.debug_mem_slave' start='0x40800' end='0x41000' type='altera_nios2_gen2.debug_mem_slave' /></address-map>
faSlaveMapParam
dataSlaveMapParam<address-map><slave name='onchip_memory2_0.s1' start='0x20000' end='0x386A0' type='altera_avalon_onchip_memory2.s1' /><slave name='nios2_gen2.debug_mem_slave' start='0x40800' end='0x41000' type='altera_nios2_gen2.debug_mem_slave' /><slave name='timer.s1' start='0x41000' end='0x41020' type='altera_avalon_timer.s1' /><slave name='TERASIC_AUTO_FOCUS_0.mm_ctrl' start='0x41020' end='0x41040' type='TERASIC_AUTO_FOCUS.mm_ctrl' /><slave name='i2c_opencores_camera.avalon_slave_0' start='0x41040' end='0x41060' type='i2c_opencores.avalon_slave_0' /><slave name='i2c_opencores_mipi.avalon_slave_0' start='0x41060' end='0x41080' type='i2c_opencores.avalon_slave_0' /><slave name='mipi_pwdn_n.s1' start='0x41080' end='0x41090' type='altera_avalon_pio.s1' /><slave name='mipi_reset_n.s1' start='0x41090' end='0x410A0' type='altera_avalon_pio.s1' /><slave name='key.s1' start='0x410A0' end='0x410B0' type='altera_avalon_pio.s1' /><slave name='sw.s1' start='0x410B0' end='0x410C0' type='altera_avalon_pio.s1' /><slave name='led.s1' start='0x410C0' end='0x410D0' type='altera_avalon_pio.s1' /><slave name='altpll_0.pll_slave' start='0x410D0' end='0x410E0' type='altpll.pll_slave' /><slave name='sysid_qsys.control_slave' start='0x410E0' end='0x410E8' type='altera_avalon_sysid_qsys.control_slave' /><slave name='jtag_uart.avalon_jtag_slave' start='0x410E8' end='0x410F0' type='altera_avalon_jtag_uart.avalon_jtag_slave' /></address-map>
tightlyCoupledDataMaster0MapParam
tightlyCoupledDataMaster1MapParam
tightlyCoupledDataMaster2MapParam
tightlyCoupledDataMaster3MapParam
tightlyCoupledInstructionMaster0MapParam
tightlyCoupledInstructionMaster1MapParam
tightlyCoupledInstructionMaster2MapParam
tightlyCoupledInstructionMaster3MapParam
dataMasterHighPerformanceMapParam
instructionMasterHighPerformanceMapParam
clockFrequency50000000
deviceFamilyNameMAX10FPGA
internalIrqMaskSystemInfo15
customInstSlavesSystemInfo<info/>
customInstSlavesSystemInfo_nios_a<info/>
customInstSlavesSystemInfo_nios_b<info/>
customInstSlavesSystemInfo_nios_c<info/>
deviceFeaturesSystemInfoADDRESS_STALL 1 ADVANCED_INFO 0 ALLOWS_COMPILING_OTHER_FAMILY_IP 1 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 1 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 0 ENABLE_PHYSICAL_DESIGN_PLANNER 0 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 FPP_COMPLETELY_PLACES_AND_ROUTES_PERIPHERY 0 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 0 HARDCOPY 0 HAS_18_BIT_MULTS 0 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 0 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 0 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 0 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 1 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 0 HAS_BSDL_FILE_GENERATION 0 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 0 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 0 HAS_DDB_FDI_SUPPORT 0 HAS_DESIGN_ANALYZER_SUPPORT 0 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 0 HAS_ERROR_DETECTION_SUPPORT 0 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 0 HAS_FPGA_XCHANGE_SUPPORT 0 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 0 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 0 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 0 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_IDB_SUPPORT 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 0 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_PLACEMENT_USING_GEOMETRY_RULE 0 HAS_IO_PLACEMENT_USING_PHYSIC_RULE 0 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NADDER_STYLE_CLOCKING 0 HAS_NADDER_STYLE_FF 0 HAS_NADDER_STYLE_LCELL_COMB 0 HAS_NEW_CDB_NAME_FOR_M20K_SCLR 0 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 1 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 0 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PHYSICAL_DESIGN_PLANNER_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 0 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 0 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 0 HAS_PVA_SUPPORT 1 HAS_QUARTUS_HIERARCHICAL_DESIGN_SUPPORT 0 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 1 HAS_SYNTHESIS_ON_ATOMS 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 0 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 1 HAS_VCCPD_POWER_RAIL 0 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO2_WRITER_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 0 IFP_USE_LEGACY_IO_CHECKER 0 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 1 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_FOR_INTERNAL_TESTING_ONLY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 IS_SMI_PART 0 LOAD_BLK_TYPE_DATA_FROM_ATOM_WYS_INFO 0 LVDS_IO 0 M10K_MEMORY 0 M144K_MEMORY 0 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 1 MLAB_MEMORY 0 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 0 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 0 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 0 PROGRAMMER_ONLY 0 PROGRAMMER_SUPPORT 1 PVA_SUPPORTS_ONLY_SUBSET_OF_ATOMS 0 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 REQUIRE_QUARTUS_HIERARCHICAL_DESIGN 0 REQUIRE_SPECIAL_HANDLING_FOR_LOCAL_LABLINE 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RESTRICT_PARTIAL_RECONFIG 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 0 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 0 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 0 SUPPORTS_HIPI_RETIMING 0 SUPPORTS_MAC_CHAIN_OUT_ADDER 0 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 SUPPORTS_VID 0 TMV_RUN_CUSTOMIZABLE_VIEWER 0 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 0 TRANSCEIVER_6G_BLOCK 0 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_NETWORK_ROUTING_POWER_CALCULATOR 0 USES_PART_INFO_FOR_DISPLAYING_CORE_VOLTAGE_VALUE 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_PVAFAM2 0 USES_SECOND_GENERATION_PART_INFO 0 USES_SECOND_GENERATION_POWER_ANALYZER 0 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USES_XML_FORMAT_FOR_EMIF_PIN_MAP_FILE 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 1 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 0 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 0 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1
AUTO_DEVICE10M50DAF484C7G
AUTO_DEVICE_SPEEDGRADE7
AUTO_CLK_CLOCK_DOMAIN1
AUTO_CLK_RESET_DOMAIN1
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BIG_ENDIAN0
BREAK_ADDR0x00040820
CPU_ARCH_NIOS2_R1
CPU_FREQ50000000u
CPU_ID_SIZE1
CPU_ID_VALUE0x00000000
CPU_IMPLEMENTATION"fast"
DATA_ADDR_WIDTH19
DCACHE_BYPASS_MASK0x80000000
DCACHE_LINE_SIZE32
DCACHE_LINE_SIZE_LOG25
DCACHE_SIZE2048
EXCEPTION_ADDR0x00020020
FLASH_ACCELERATOR_LINES0
FLASH_ACCELERATOR_LINE_SIZE0
FLUSHDA_SUPPORTED
HARDWARE_DIVIDE_PRESENT0
HARDWARE_MULTIPLY_PRESENT1
HARDWARE_MULX_PRESENT0
HAS_DEBUG_CORE1
HAS_DEBUG_STUB
HAS_EXTRA_EXCEPTION_INFO
HAS_ILLEGAL_INSTRUCTION_EXCEPTION
HAS_JMPI_INSTRUCTION
ICACHE_LINE_SIZE32
ICACHE_LINE_SIZE_LOG25
ICACHE_SIZE4096
INITDA_SUPPORTED
INST_ADDR_WIDTH19
NUM_OF_SHADOW_REG_SETS0
OCI_VERSION1
RESET_ADDR0x00020000
+
+
+ +
+
+

onchip_memory2_0

altera_avalon_onchip_memory2 v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  onchip_memory2_0
  s1
instruction_master  
  s1
debug_reset_request  
  reset1
+ clk_50 + clk  
  clk1
clk_reset  
  reset1
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allowInSystemMemoryContentEditorfalse
blockTypeAUTO
dataWidth32
dataWidth232
dualPortfalse
enableDiffWidthfalse
initMemContentfalse
initializationFileNameonchip_mem.hex
instanceIDNONE
memorySize100000
readDuringWriteModeDONT_CARE
simAllowMRAMContentsFilefalse
simMemInitOnlyFilename0
singleClockOperationfalse
slave1Latency1
slave2Latency1
useNonDefaultInitFilefalse
copyInitFilefalse
useShallowMemBlocksfalse
writabletrue
ecc_enabledfalse
resetrequest_enabledtrue
autoInitializationFileNameQsys_onchip_memory2_0
deviceFamilyMAX10FPGA
deviceFeaturesADDRESS_STALL 1 ADVANCED_INFO 0 ALLOWS_COMPILING_OTHER_FAMILY_IP 1 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 1 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 0 ENABLE_PHYSICAL_DESIGN_PLANNER 0 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 FPP_COMPLETELY_PLACES_AND_ROUTES_PERIPHERY 0 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 0 HARDCOPY 0 HAS_18_BIT_MULTS 0 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 0 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 0 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 0 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 1 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 0 HAS_BSDL_FILE_GENERATION 0 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 0 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 0 HAS_DDB_FDI_SUPPORT 0 HAS_DESIGN_ANALYZER_SUPPORT 0 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 0 HAS_ERROR_DETECTION_SUPPORT 0 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 0 HAS_FPGA_XCHANGE_SUPPORT 0 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 0 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 0 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 0 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_IDB_SUPPORT 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 0 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_PLACEMENT_USING_GEOMETRY_RULE 0 HAS_IO_PLACEMENT_USING_PHYSIC_RULE 0 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NADDER_STYLE_CLOCKING 0 HAS_NADDER_STYLE_FF 0 HAS_NADDER_STYLE_LCELL_COMB 0 HAS_NEW_CDB_NAME_FOR_M20K_SCLR 0 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 1 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 0 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PHYSICAL_DESIGN_PLANNER_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 0 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 0 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 0 HAS_PVA_SUPPORT 1 HAS_QUARTUS_HIERARCHICAL_DESIGN_SUPPORT 0 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 1 HAS_SYNTHESIS_ON_ATOMS 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 0 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 1 HAS_VCCPD_POWER_RAIL 0 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO2_WRITER_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 0 IFP_USE_LEGACY_IO_CHECKER 0 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 1 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_FOR_INTERNAL_TESTING_ONLY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 IS_SMI_PART 0 LOAD_BLK_TYPE_DATA_FROM_ATOM_WYS_INFO 0 LVDS_IO 0 M10K_MEMORY 0 M144K_MEMORY 0 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 1 MLAB_MEMORY 0 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 0 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 0 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 0 PROGRAMMER_ONLY 0 PROGRAMMER_SUPPORT 1 PVA_SUPPORTS_ONLY_SUBSET_OF_ATOMS 0 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 REQUIRE_QUARTUS_HIERARCHICAL_DESIGN 0 REQUIRE_SPECIAL_HANDLING_FOR_LOCAL_LABLINE 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RESTRICT_PARTIAL_RECONFIG 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 0 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 0 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 0 SUPPORTS_HIPI_RETIMING 0 SUPPORTS_MAC_CHAIN_OUT_ADDER 0 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 SUPPORTS_VID 0 TMV_RUN_CUSTOMIZABLE_VIEWER 0 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 0 TRANSCEIVER_6G_BLOCK 0 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_NETWORK_ROUTING_POWER_CALCULATOR 0 USES_PART_INFO_FOR_DISPLAYING_CORE_VOLTAGE_VALUE 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_PVAFAM2 0 USES_SECOND_GENERATION_PART_INFO 0 USES_SECOND_GENERATION_POWER_ANALYZER 0 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USES_XML_FORMAT_FOR_EMIF_PIN_MAP_FILE 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 1 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 0 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 0 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1
derived_set_addr_width15
derived_set_addr_width215
derived_set_data_width32
derived_set_data_width232
derived_gui_ram_block_typeAutomatic
derived_is_hardcopyfalse
derived_init_file_nameQsys_onchip_memory2_0.hex
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ALLOW_IN_SYSTEM_MEMORY_CONTENT_EDITOR0
ALLOW_MRAM_SIM_CONTENTS_ONLY_FILE0
CONTENTS_INFO""
DUAL_PORT0
GUI_RAM_BLOCK_TYPEAUTO
INIT_CONTENTS_FILEQsys_onchip_memory2_0
INIT_MEM_CONTENT0
INSTANCE_IDNONE
NON_DEFAULT_INIT_FILE_ENABLED0
RAM_BLOCK_TYPEAUTO
READ_DURING_WRITE_MODEDONT_CARE
SINGLE_CLOCK_OP0
SIZE_MULTIPLE1
SIZE_VALUE100000
WRITABLE1
+
+
+ +
+
+

sdram

altera_avalon_new_sdram_controller v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ alt_vip_vfb_0 + read_master  sdram
  s1
write_master  
  s1
+ altpll_0 + c2  
  clk
+ clk_50 + clk_reset  
  reset
+ nios2_gen2 + debug_reset_request  
  reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TAC5.5
TRCD20.0
TRFC70.0
TRP20.0
TWR14.0
casLatency3
columnWidth10
dataWidth16
generateSimulationModeltrue
initRefreshCommands2
modelsingle_Micron_MT48LC4M32B2_7_chip
numberOfBanks4
numberOfChipSelects1
pinsSharedViaTriStatefalse
powerUpDelay100.0
refreshPeriod15.625
rowWidth13
masteredTristateBridgeSlave0
TMRD3
initNOPDelay0.0
registerDataIntrue
clockRate100000000
componentNameQsys_sdram
size67108864
addressWidth25
bankWidth2
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CAS_LATENCY3
CONTENTS_INFO
INIT_NOP_DELAY0.0
INIT_REFRESH_COMMANDS2
IS_INITIALIZED1
POWERUP_DELAY100.0
REFRESH_PERIOD15.625
REGISTER_DATA_IN1
SDRAM_ADDR_WIDTH25
SDRAM_BANK_WIDTH2
SDRAM_COL_WIDTH10
SDRAM_DATA_WIDTH16
SDRAM_NUM_BANKS4
SDRAM_NUM_CHIPSELECTS1
SDRAM_ROW_WIDTH13
SHARED_DATA0
SIM_MODEL_BASE1
STARVATION_INDICATOR0
TRISTATE_BRIDGE_SLAVE""
T_AC5.5
T_MRD3
T_RCD20.0
T_RFC70.0
T_RP20.0
T_WR14.0
+
+
+ +
+
+

sw

altera_avalon_pio v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  sw
  s1
debug_reset_request  
  reset
+ clk_50 + clk  
  clk
clk_reset  
  reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bitClearingEdgeCapRegfalse
bitModifyingOutRegfalse
captureEdgefalse
directionInput
edgeTypeRISING
generateIRQfalse
irqTypeLEVEL
resetValue0
simDoTestBenchWiringfalse
simDrivenValue0
width10
clockRate50000000
derived_has_trifalse
derived_has_outfalse
derived_has_intrue
derived_do_test_bench_wiringfalse
derived_capturefalse
derived_edge_typeNONE
derived_irq_typeNONE
derived_has_irqfalse
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BIT_CLEARING_EDGE_REGISTER0
BIT_MODIFYING_OUTPUT_REGISTER0
CAPTURE0
DATA_WIDTH10
DO_TEST_BENCH_WIRING0
DRIVEN_SIM_VALUE0
EDGE_TYPENONE
FREQ50000000
HAS_IN1
HAS_OUT0
HAS_TRI0
IRQ_TYPENONE
RESET_VALUE0
+
+
+ +
+
+

sysid_qsys

altera_avalon_sysid_qsys v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  sysid_qsys
  control_slave
debug_reset_request  
  reset
+ clk_50 + clk  
  clk
clk_reset  
  reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + +
id0
timestamp1617092314
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + +
ID0
TIMESTAMP1617092314
+
+
+ +
+
+

timer

altera_avalon_timer v16.0 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ nios2_gen2 + data_master  timer
  s1
irq  
  irq
debug_reset_request  
  reset
+ clk_50 + clk  
  clk
clk_reset  
  reset
+
+
+
+ + + + +
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
alwaysRunfalse
counterSize32
fixedPeriodfalse
period1
periodUnitsMSEC
resetOutputfalse
snapshottrue
timeoutPulseOutputfalse
systemFrequency50000000
watchdogPulse2
timerPresetFULL_FEATURED
periodUnitsStringms
valueInSecond0.001
loadValue49999
mult0.001
ticksPerSec1000.0
slave_address_width3
deviceFamilyUNKNOWN
generateLegacySimfalse
+
   + + + + +
+

Software Assignments

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ALWAYS_RUN0
COUNTER_SIZE32
FIXED_PERIOD0
FREQ50000000
LOAD_VALUE49999
MULT0.001
PERIOD1
PERIOD_UNITSms
RESET_OUTPUT0
SNAPSHOT1
TICKS_PER_SEC1000
TIMEOUT_PULSE_OUTPUT0
+
+
+ + + + + +
generation took 0.00 secondsrendering took 0.04 seconds
+ + diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.xml b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.xml new file mode 100644 index 0000000..b2467f4 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys.xml @@ -0,0 +1,5410 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + queue size: 0 starting:Qsys "Qsys" + + + + Transform: CustomInstructionTransform + No custom instruction connections, skipping transform + 19 modules, 78 connections]]> + Transform: MMTransform + Transform: InitialInterconnectTransform + 15 modules, 57 connections]]> + Transform: TerminalIdAssignmentUpdateTransform + Transform: DefaultSlaveTransform + Transform: TranslatorTransform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 31 modules, 120 connections]]> + Transform: IDPadTransform + Transform: DomainTransform + Transform merlin_domain_transform not run on matched interfaces nios2_gen2.data_master and nios2_gen2_data_master_translator.avalon_anti_master_0 + Transform merlin_domain_transform not run on matched interfaces nios2_gen2.instruction_master and nios2_gen2_instruction_master_translator.avalon_anti_master_0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Transform merlin_domain_transform not run on matched interfaces jtag_uart_avalon_jtag_slave_translator.avalon_anti_slave_0 and jtag_uart.avalon_jtag_slave + Transform merlin_domain_transform not run on matched interfaces i2c_opencores_mipi_avalon_slave_0_translator.avalon_anti_slave_0 and i2c_opencores_mipi.avalon_slave_0 + Transform merlin_domain_transform not run on matched interfaces i2c_opencores_camera_avalon_slave_0_translator.avalon_anti_slave_0 and i2c_opencores_camera.avalon_slave_0 + Transform merlin_domain_transform not run on matched interfaces sysid_qsys_control_slave_translator.avalon_anti_slave_0 and sysid_qsys.control_slave + Transform merlin_domain_transform not run on matched interfaces nios2_gen2_debug_mem_slave_translator.avalon_anti_slave_0 and nios2_gen2.debug_mem_slave + Transform merlin_domain_transform not run on matched interfaces TERASIC_AUTO_FOCUS_0_mm_ctrl_translator.avalon_anti_slave_0 and TERASIC_AUTO_FOCUS_0.mm_ctrl + Transform merlin_domain_transform not run on matched interfaces altpll_0_pll_slave_translator.avalon_anti_slave_0 and altpll_0.pll_slave + Transform merlin_domain_transform not run on matched interfaces onchip_memory2_0_s1_translator.avalon_anti_slave_0 and onchip_memory2_0.s1 + Transform merlin_domain_transform not run on matched interfaces timer_s1_translator.avalon_anti_slave_0 and timer.s1 + Transform merlin_domain_transform not run on matched interfaces led_s1_translator.avalon_anti_slave_0 and led.s1 + Transform merlin_domain_transform not run on matched interfaces sw_s1_translator.avalon_anti_slave_0 and sw.s1 + Transform merlin_domain_transform not run on matched interfaces key_s1_translator.avalon_anti_slave_0 and key.s1 + Transform merlin_domain_transform not run on matched interfaces mipi_reset_n_s1_translator.avalon_anti_slave_0 and mipi_reset_n.s1 + Transform merlin_domain_transform not run on matched interfaces mipi_pwdn_n_s1_translator.avalon_anti_slave_0 and mipi_pwdn_n.s1 + 63 modules, 333 connections]]> + Transform: RouterTransform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 79 modules, 396 connections]]> + Transform: TrafficLimiterTransform + + + + + + + 81 modules, 406 connections]]> + Transform: BurstTransform + Transform: TreeTransform + Transform: NetworkToSwitchTransform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 112 modules, 485 connections]]> + Transform: WidthTransform + Transform: RouterTableTransform + Transform: ThreadIDMappingTableTransform + Transform: ClockCrossingTransform + Inserting clock-crossing logic between cmd_demux.src5 and cmd_mux_005.sink0 + + + + Inserting clock-crossing logic between rsp_demux_005.src0 and rsp_mux.sink5 + + + + 114 modules, 499 connections]]> + Transform: PipelineTransform + Transform: SpotPipelineTransform + Transform: PerformanceMonitorTransform + Transform: TrafficLimiterUpdateTransform + 114 modules, 501 connections]]> + Transform: InsertClockAndResetBridgesTransform + + + + + + + + + + + + + + + + 119 modules, 621 connections]]> + Transform: InterconnectConnectionsTagger + Transform: HierarchyTransform + + + + 20 modules, 85 connections]]> + Transform: InitialInterconnectTransform + 5 modules, 8 connections]]> + Transform: TerminalIdAssignmentUpdateTransform + Transform: DefaultSlaveTransform + Transform: TranslatorTransform + + + + + + + + + + 8 modules, 20 connections]]> + Transform: IDPadTransform + Transform: DomainTransform + Transform merlin_domain_transform not run on matched interfaces alt_vip_vfb_0.read_master and alt_vip_vfb_0_read_master_translator.avalon_anti_master_0 + Transform merlin_domain_transform not run on matched interfaces alt_vip_vfb_0.write_master and alt_vip_vfb_0_write_master_translator.avalon_anti_master_0 + + + + + + + + + + + + + + + + Transform merlin_domain_transform not run on matched interfaces sdram_s1_translator.avalon_anti_slave_0 and sdram.s1 + 14 modules, 55 connections]]> + Transform: RouterTransform + + + + + + + + + + 17 modules, 67 connections]]> + Transform: TrafficLimiterTransform + Transform: BurstTransform + + + + 18 modules, 71 connections]]> + Transform: TreeTransform + Transform: NetworkToSwitchTransform + + + + + + + + + + + + + + + + + + + 23 modules, 84 connections]]> + Transform: WidthTransform + + + + + + + 25 modules, 92 connections]]> + Transform: RouterTableTransform + Transform: ThreadIDMappingTableTransform + Transform: ClockCrossingTransform + Transform: PipelineTransform + Transform: SpotPipelineTransform + Transform: PerformanceMonitorTransform + Transform: TrafficLimiterUpdateTransform + Transform: InsertClockAndResetBridgesTransform + + + + + + + 27 modules, 116 connections]]> + Transform: InterconnectConnectionsTagger + Transform: HierarchyTransform + + + + 21 modules, 89 connections]]> + 21 modules, 89 connections]]> + Transform: InterruptMapperTransform + + + + 22 modules, 93 connections]]> + Transform: InterruptSyncTransform + Transform: InterruptFanoutTransform + Transform: AvalonStreamingTransform + Transform: ResetAdaptation + + + + + + + + + + + + + 26 modules, 93 connections]]> + Qsys" reuses TERASIC_AUTO_FOCUS "submodules/TERASIC_AUTO_FOCUS"]]> + Qsys" reuses TERASIC_CAMERA "submodules/TERASIC_CAMERA"]]> + Qsys" reuses alt_vip_itc "submodules/alt_vipitc131_IS2Vid"]]> + Qsys" reuses alt_vip_vfb "submodules/Qsys_alt_vip_vfb_0"]]> + Qsys" reuses altpll "submodules/Qsys_altpll_0"]]> + Qsys" reuses i2c_opencores "submodules/i2c_opencores"]]> + Qsys" reuses i2c_opencores "submodules/i2c_opencores"]]> + Qsys" reuses altera_avalon_jtag_uart "submodules/Qsys_jtag_uart"]]> + Qsys" reuses altera_avalon_pio "submodules/Qsys_key"]]> + Qsys" reuses altera_avalon_pio "submodules/Qsys_led"]]> + Qsys" reuses altera_avalon_pio "submodules/Qsys_mipi_pwdn_n"]]> + Qsys" reuses altera_avalon_pio "submodules/Qsys_mipi_pwdn_n"]]> + Qsys" reuses altera_nios2_gen2 "submodules/Qsys_nios2_gen2"]]> + Qsys" reuses altera_avalon_onchip_memory2 "submodules/Qsys_onchip_memory2_0"]]> + Qsys" reuses altera_avalon_new_sdram_controller "submodules/Qsys_sdram"]]> + Qsys" reuses altera_avalon_pio "submodules/Qsys_sw"]]> + Qsys" reuses altera_avalon_sysid_qsys "submodules/Qsys_sysid_qsys"]]> + Qsys" reuses altera_avalon_timer "submodules/Qsys_timer"]]> + Qsys" reuses altera_mm_interconnect "submodules/Qsys_mm_interconnect_0"]]> + Qsys" reuses altera_mm_interconnect "submodules/Qsys_mm_interconnect_1"]]> + Qsys" reuses altera_irq_mapper "submodules/Qsys_irq_mapper"]]> + Qsys" reuses altera_reset_controller "submodules/altera_reset_controller"]]> + Qsys" reuses altera_reset_controller "submodules/altera_reset_controller"]]> + Qsys" reuses altera_reset_controller "submodules/altera_reset_controller"]]> + queue size: 23 starting:TERASIC_AUTO_FOCUS "submodules/TERASIC_AUTO_FOCUS" + Qsys" instantiated TERASIC_AUTO_FOCUS "TERASIC_AUTO_FOCUS_0"]]> + queue size: 22 starting:TERASIC_CAMERA "submodules/TERASIC_CAMERA" + set ALTERA_HW_TCL_KEEP_TEMP_FILES=1 to retain temp files + Command: /home/ed/altera_lite/16.0/quartus/linux64/quartus_sh -t /tmp/alt8716_2763057626446894966.dir/0009_sopcqmap/not_a_project_setup.tcl + Command: /home/ed/altera_lite/16.0/quartus/linux64/quartus_map not_a_project --generate_hdl_interface=/home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/TERASIC_CAMERA.v --set=HDL_INTERFACE_OUTPUT_PATH=/tmp/alt8716_2763057626446894966.dir/0009_sopcqmap/ --ini=disable_check_quartus_compatibility_qsys_only=on + Command took 0.601s + Command took 0.919s + Qsys" instantiated TERASIC_CAMERA "TERASIC_CAMERA_0"]]> + queue size: 21 starting:alt_vip_itc "submodules/alt_vipitc131_IS2Vid" + set ALTERA_HW_TCL_KEEP_TEMP_FILES=1 to retain temp files + Command: /home/ed/altera_lite/16.0/quartus/linux64/quartus_sh -t /tmp/alt8716_2763057626446894966.dir/0012_sopcqmap/not_a_project_setup.tcl + Command: /home/ed/altera_lite/16.0/quartus/linux64/quartus_map not_a_project --generate_hdl_interface=/home/ed/altera_lite/16.0/ip/altera/clocked_video_output/src_hdl/alt_vipitc131_IS2Vid.sv --set=HDL_INTERFACE_OUTPUT_PATH=/tmp/alt8716_2763057626446894966.dir/0012_sopcqmap/ --ini=disable_check_quartus_compatibility_qsys_only=on + Command took 0.544s + Command took 0.880s + Qsys" instantiated alt_vip_itc "alt_vip_itc_0"]]> + queue size: 20 starting:alt_vip_vfb "submodules/Qsys_alt_vip_vfb_0" + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_avalon_st_input "submodules/alt_cusp160_avalon_st_input"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_avalon_st_output "submodules/alt_cusp160_avalon_st_output"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_avalon_mm_bursting_master_fifo "submodules/alt_cusp160_avalon_mm_bursting_master_fifo"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_pulling_width_adapter "submodules/alt_cusp160_pulling_width_adapter"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_avalon_mm_bursting_master_fifo "submodules/alt_cusp160_avalon_mm_bursting_master_fifo"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_pushing_width_adapter "submodules/alt_cusp160_pushing_width_adapter"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_pc "submodules/alt_cusp160_pc"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_pc "submodules/alt_cusp160_pc"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + dut" reuses alt_cusp_testbench_clock "submodules/alt_cusp160_clock_reset"]]> + dut" reuses alt_vip_vfb "submodules/Qsys_alt_vip_vfb_0"]]> + Qsys" instantiated alt_vip_vfb "alt_vip_vfb_0"]]> + queue size: 218 starting:altpll "submodules/Qsys_altpll_0" + + + set ALTERA_HW_TCL_KEEP_TEMP_FILES=1 to retain temp files + Command: /home/ed/altera_lite/16.0/quartus/linux64/quartus_map not_a_project --generate_hdl_interface=/tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v --source=/tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v --set=HDL_INTERFACE_OUTPUT_PATH=/tmp/alt8716_2763057626446894966.dir/0018_sopcqmap/ --ini=disable_check_quartus_compatibility_qsys_only=on + Can't continue processing -- expected file /tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v is missing + Quartus Prime Generate HDL Interface was unsuccessful. 1 error, 0 warnings + Peak virtual memory: 1399 megabytes + Processing ended: Tue Mar 30 09:18:43 2021 + Elapsed time: 00:00:01 + Total CPU time (on all processors): 00:00:00 + Command took 0.958s + Analyser output file not present: Qsys_altpll_0.v.xml + /tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v written by generation callback did not contain a module called Qsys_altpll_0]]> + /tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v (No such file or directory) + Qsys" instantiated altpll "altpll_0"]]> + + + + + + + + + + + + + + + + + + + + queue size: 23 starting:TERASIC_AUTO_FOCUS "submodules/TERASIC_AUTO_FOCUS" + Qsys" instantiated TERASIC_AUTO_FOCUS "TERASIC_AUTO_FOCUS_0"]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + queue size: 22 starting:TERASIC_CAMERA "submodules/TERASIC_CAMERA" + set ALTERA_HW_TCL_KEEP_TEMP_FILES=1 to retain temp files + Command: /home/ed/altera_lite/16.0/quartus/linux64/quartus_sh -t /tmp/alt8716_2763057626446894966.dir/0009_sopcqmap/not_a_project_setup.tcl + Command: /home/ed/altera_lite/16.0/quartus/linux64/quartus_map not_a_project --generate_hdl_interface=/home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/TERASIC_CAMERA.v --set=HDL_INTERFACE_OUTPUT_PATH=/tmp/alt8716_2763057626446894966.dir/0009_sopcqmap/ --ini=disable_check_quartus_compatibility_qsys_only=on + Command took 0.601s + Command took 0.919s + Qsys" instantiated TERASIC_CAMERA "TERASIC_CAMERA_0"]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + queue size: 21 starting:alt_vip_itc "submodules/alt_vipitc131_IS2Vid" + set ALTERA_HW_TCL_KEEP_TEMP_FILES=1 to retain temp files + Command: /home/ed/altera_lite/16.0/quartus/linux64/quartus_sh -t /tmp/alt8716_2763057626446894966.dir/0012_sopcqmap/not_a_project_setup.tcl + Command: /home/ed/altera_lite/16.0/quartus/linux64/quartus_map not_a_project --generate_hdl_interface=/home/ed/altera_lite/16.0/ip/altera/clocked_video_output/src_hdl/alt_vipitc131_IS2Vid.sv --set=HDL_INTERFACE_OUTPUT_PATH=/tmp/alt8716_2763057626446894966.dir/0012_sopcqmap/ --ini=disable_check_quartus_compatibility_qsys_only=on + Command took 0.544s + Command took 0.880s + Qsys" instantiated alt_vip_itc "alt_vip_itc_0"]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + queue size: 20 starting:alt_vip_vfb "submodules/Qsys_alt_vip_vfb_0" + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_avalon_st_input "submodules/alt_cusp160_avalon_st_input"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_avalon_st_output "submodules/alt_cusp160_avalon_st_output"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_avalon_mm_bursting_master_fifo "submodules/alt_cusp160_avalon_mm_bursting_master_fifo"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_pulling_width_adapter "submodules/alt_cusp160_pulling_width_adapter"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_avalon_mm_bursting_master_fifo "submodules/alt_cusp160_avalon_mm_bursting_master_fifo"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_pushing_width_adapter "submodules/alt_cusp160_pushing_width_adapter"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_pc "submodules/alt_cusp160_pc"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_cusp_muxhot16 "submodules/alt_cusp160_muxhot16"]]> + alt_vip_vfb_0" reuses alt_pc "submodules/alt_cusp160_pc"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cusp_muxbin2 "submodules/alt_cusp160_muxbin2"]]> + alt_vip_vfb_0" reuses alt_au "submodules/alt_cusp160_au"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_cmp "submodules/alt_cusp160_cmp"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + alt_vip_vfb_0" reuses alt_reg "submodules/alt_cusp160_reg"]]> + dut" reuses alt_cusp_testbench_clock "submodules/alt_cusp160_clock_reset"]]> + dut" reuses alt_vip_vfb "submodules/Qsys_alt_vip_vfb_0"]]> + Qsys" instantiated alt_vip_vfb "alt_vip_vfb_0"]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + queue size: 218 starting:altpll "submodules/Qsys_altpll_0" + + + set ALTERA_HW_TCL_KEEP_TEMP_FILES=1 to retain temp files + Command: /home/ed/altera_lite/16.0/quartus/linux64/quartus_map not_a_project --generate_hdl_interface=/tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v --source=/tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v --set=HDL_INTERFACE_OUTPUT_PATH=/tmp/alt8716_2763057626446894966.dir/0018_sopcqmap/ --ini=disable_check_quartus_compatibility_qsys_only=on + Can't continue processing -- expected file /tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v is missing + Quartus Prime Generate HDL Interface was unsuccessful. 1 error, 0 warnings + Peak virtual memory: 1399 megabytes + Processing ended: Tue Mar 30 09:18:43 2021 + Elapsed time: 00:00:01 + Total CPU time (on all processors): 00:00:00 + Command took 0.958s + Analyser output file not present: Qsys_altpll_0.v.xml + /tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v written by generation callback did not contain a module called Qsys_altpll_0]]> + /tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v (No such file or directory) + Qsys" instantiated altpll "altpll_0"]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_bb.v b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_bb.v new file mode 100644 index 0000000..d41fc44 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_bb.v @@ -0,0 +1,88 @@ + +module Qsys ( + alt_vip_itc_0_clocked_video_vid_clk, + alt_vip_itc_0_clocked_video_vid_data, + alt_vip_itc_0_clocked_video_underflow, + alt_vip_itc_0_clocked_video_vid_datavalid, + alt_vip_itc_0_clocked_video_vid_v_sync, + alt_vip_itc_0_clocked_video_vid_h_sync, + alt_vip_itc_0_clocked_video_vid_f, + alt_vip_itc_0_clocked_video_vid_h, + alt_vip_itc_0_clocked_video_vid_v, + altpll_0_areset_conduit_export, + altpll_0_locked_conduit_export, + clk_clk, + clk_sdram_clk, + clk_vga_clk, + d8m_xclkin_clk, + eee_imgproc_0_conduit_mode_new_signal, + i2c_opencores_camera_export_scl_pad_io, + i2c_opencores_camera_export_sda_pad_io, + i2c_opencores_mipi_export_scl_pad_io, + i2c_opencores_mipi_export_sda_pad_io, + key_external_connection_export, + led_external_connection_export, + mipi_pwdn_n_external_connection_export, + mipi_reset_n_external_connection_export, + reset_reset_n, + sdram_wire_addr, + sdram_wire_ba, + sdram_wire_cas_n, + sdram_wire_cke, + sdram_wire_cs_n, + sdram_wire_dq, + sdram_wire_dqm, + sdram_wire_ras_n, + sdram_wire_we_n, + sw_external_connection_export, + terasic_auto_focus_0_conduit_vcm_i2c_sda, + terasic_auto_focus_0_conduit_clk50, + terasic_auto_focus_0_conduit_vcm_i2c_scl, + terasic_camera_0_conduit_end_D, + terasic_camera_0_conduit_end_FVAL, + terasic_camera_0_conduit_end_LVAL, + terasic_camera_0_conduit_end_PIXCLK); + + input alt_vip_itc_0_clocked_video_vid_clk; + output [23:0] alt_vip_itc_0_clocked_video_vid_data; + output alt_vip_itc_0_clocked_video_underflow; + output alt_vip_itc_0_clocked_video_vid_datavalid; + output alt_vip_itc_0_clocked_video_vid_v_sync; + output alt_vip_itc_0_clocked_video_vid_h_sync; + output alt_vip_itc_0_clocked_video_vid_f; + output alt_vip_itc_0_clocked_video_vid_h; + output alt_vip_itc_0_clocked_video_vid_v; + input altpll_0_areset_conduit_export; + output altpll_0_locked_conduit_export; + input clk_clk; + output clk_sdram_clk; + output clk_vga_clk; + output d8m_xclkin_clk; + input eee_imgproc_0_conduit_mode_new_signal; + inout i2c_opencores_camera_export_scl_pad_io; + inout i2c_opencores_camera_export_sda_pad_io; + inout i2c_opencores_mipi_export_scl_pad_io; + inout i2c_opencores_mipi_export_sda_pad_io; + input [1:0] key_external_connection_export; + output [9:0] led_external_connection_export; + output mipi_pwdn_n_external_connection_export; + output mipi_reset_n_external_connection_export; + input reset_reset_n; + output [12:0] sdram_wire_addr; + output [1:0] sdram_wire_ba; + output sdram_wire_cas_n; + output sdram_wire_cke; + output sdram_wire_cs_n; + inout [15:0] sdram_wire_dq; + output [1:0] sdram_wire_dqm; + output sdram_wire_ras_n; + output sdram_wire_we_n; + input [9:0] sw_external_connection_export; + inout terasic_auto_focus_0_conduit_vcm_i2c_sda; + input terasic_auto_focus_0_conduit_clk50; + inout terasic_auto_focus_0_conduit_vcm_i2c_scl; + input [11:0] terasic_camera_0_conduit_end_D; + input terasic_camera_0_conduit_end_FVAL; + input terasic_camera_0_conduit_end_LVAL; + input terasic_camera_0_conduit_end_PIXCLK; +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_generation.rpt b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_generation.rpt new file mode 100644 index 0000000..6db46bd --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_generation.rpt @@ -0,0 +1,129 @@ +Info: Starting: Create block symbol file (.bsf) +Info: qsys-generate /home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/Qsys.qsys --block-symbol-file --output-directory=/home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/Qsys --family="MAX 10" --part=10M50DAF484C7G +Progress: Loading DE10_LITE_D8M_VIP_16/Qsys.qsys +Progress: Reading input file +Progress: Adding TERASIC_AUTO_FOCUS_0 [TERASIC_AUTO_FOCUS 1.0] +Progress: Parameterizing module TERASIC_AUTO_FOCUS_0 +Progress: Adding TERASIC_CAMERA_0 [TERASIC_CAMERA 1.0] +Progress: Parameterizing module TERASIC_CAMERA_0 +Progress: Adding alt_vip_itc_0 [alt_vip_itc 14.0] +Progress: Parameterizing module alt_vip_itc_0 +Progress: Adding alt_vip_vfb_0 [alt_vip_vfb 13.1] +Progress: Parameterizing module alt_vip_vfb_0 +Progress: Adding altpll_0 [altpll 16.0] +Progress: Parameterizing module altpll_0 +Progress: Adding clk_50 [clock_source 16.0] +Progress: Parameterizing module clk_50 +Progress: Adding i2c_opencores_camera [i2c_opencores 12.0] +Progress: Parameterizing module i2c_opencores_camera +Progress: Adding i2c_opencores_mipi [i2c_opencores 12.0] +Progress: Parameterizing module i2c_opencores_mipi +Progress: Adding jtag_uart [altera_avalon_jtag_uart 16.0] +Progress: Parameterizing module jtag_uart +Progress: Adding key [altera_avalon_pio 16.0] +Progress: Parameterizing module key +Progress: Adding led [altera_avalon_pio 16.0] +Progress: Parameterizing module led +Progress: Adding mipi_pwdn_n [altera_avalon_pio 16.0] +Progress: Parameterizing module mipi_pwdn_n +Progress: Adding mipi_reset_n [altera_avalon_pio 16.0] +Progress: Parameterizing module mipi_reset_n +Progress: Adding nios2_gen2 [altera_nios2_gen2 16.0] +Progress: Parameterizing module nios2_gen2 +Progress: Adding onchip_memory2_0 [altera_avalon_onchip_memory2 16.0] +Progress: Parameterizing module onchip_memory2_0 +Progress: Adding sdram [altera_avalon_new_sdram_controller 16.0] +Progress: Parameterizing module sdram +Progress: Adding sw [altera_avalon_pio 16.0] +Progress: Parameterizing module sw +Progress: Adding sysid_qsys [altera_avalon_sysid_qsys 16.0] +Progress: Parameterizing module sysid_qsys +Progress: Adding timer [altera_avalon_timer 16.0] +Progress: Parameterizing module timer +Progress: Building connections +Progress: Parameterizing connections +Progress: Validating +Progress: Done reading input file +Info: Qsys.alt_vip_vfb_0: The Frame Buffer will no longer be available after 16.1, please upgrade to Frame Buffer II. +Info: Qsys.jtag_uart: JTAG UART IP input clock need to be at least double (2x) the operating frequency of JTAG TCK on board +Info: Qsys.key: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation. +Info: Qsys.sw: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation. +Info: Qsys.sysid_qsys: System ID is not assigned automatically. Edit the System ID parameter to provide a unique ID +Info: Qsys.sysid_qsys: Time stamp will be automatically updated when this component is generated. +Info: qsys-generate succeeded. +Info: Finished: Create block symbol file (.bsf) +Info: +Info: Starting: Create HDL design files for synthesis +Info: qsys-generate /home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/Qsys.qsys --synthesis=VERILOG --output-directory=/home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/Qsys/synthesis --family="MAX 10" --part=10M50DAF484C7G +Progress: Loading DE10_LITE_D8M_VIP_16/Qsys.qsys +Progress: Reading input file +Progress: Adding TERASIC_AUTO_FOCUS_0 [TERASIC_AUTO_FOCUS 1.0] +Progress: Parameterizing module TERASIC_AUTO_FOCUS_0 +Progress: Adding TERASIC_CAMERA_0 [TERASIC_CAMERA 1.0] +Progress: Parameterizing module TERASIC_CAMERA_0 +Progress: Adding alt_vip_itc_0 [alt_vip_itc 14.0] +Progress: Parameterizing module alt_vip_itc_0 +Progress: Adding alt_vip_vfb_0 [alt_vip_vfb 13.1] +Progress: Parameterizing module alt_vip_vfb_0 +Progress: Adding altpll_0 [altpll 16.0] +Progress: Parameterizing module altpll_0 +Progress: Adding clk_50 [clock_source 16.0] +Progress: Parameterizing module clk_50 +Progress: Adding i2c_opencores_camera [i2c_opencores 12.0] +Progress: Parameterizing module i2c_opencores_camera +Progress: Adding i2c_opencores_mipi [i2c_opencores 12.0] +Progress: Parameterizing module i2c_opencores_mipi +Progress: Adding jtag_uart [altera_avalon_jtag_uart 16.0] +Progress: Parameterizing module jtag_uart +Progress: Adding key [altera_avalon_pio 16.0] +Progress: Parameterizing module key +Progress: Adding led [altera_avalon_pio 16.0] +Progress: Parameterizing module led +Progress: Adding mipi_pwdn_n [altera_avalon_pio 16.0] +Progress: Parameterizing module mipi_pwdn_n +Progress: Adding mipi_reset_n [altera_avalon_pio 16.0] +Progress: Parameterizing module mipi_reset_n +Progress: Adding nios2_gen2 [altera_nios2_gen2 16.0] +Progress: Parameterizing module nios2_gen2 +Progress: Adding onchip_memory2_0 [altera_avalon_onchip_memory2 16.0] +Progress: Parameterizing module onchip_memory2_0 +Progress: Adding sdram [altera_avalon_new_sdram_controller 16.0] +Progress: Parameterizing module sdram +Progress: Adding sw [altera_avalon_pio 16.0] +Progress: Parameterizing module sw +Progress: Adding sysid_qsys [altera_avalon_sysid_qsys 16.0] +Progress: Parameterizing module sysid_qsys +Progress: Adding timer [altera_avalon_timer 16.0] +Progress: Parameterizing module timer +Progress: Building connections +Progress: Parameterizing connections +Progress: Validating +Progress: Done reading input file +Info: Qsys.alt_vip_vfb_0: The Frame Buffer will no longer be available after 16.1, please upgrade to Frame Buffer II. +Info: Qsys.jtag_uart: JTAG UART IP input clock need to be at least double (2x) the operating frequency of JTAG TCK on board +Info: Qsys.key: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation. +Info: Qsys.sw: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation. +Info: Qsys.sysid_qsys: System ID is not assigned automatically. Edit the System ID parameter to provide a unique ID +Info: Qsys.sysid_qsys: Time stamp will be automatically updated when this component is generated. +Info: Qsys: Generating Qsys "Qsys" for QUARTUS_SYNTH +Info: Inserting clock-crossing logic between cmd_demux.src5 and cmd_mux_005.sink0 +Info: Inserting clock-crossing logic between rsp_demux_005.src0 and rsp_mux.sink5 +Info: TERASIC_AUTO_FOCUS_0: "Qsys" instantiated TERASIC_AUTO_FOCUS "TERASIC_AUTO_FOCUS_0" +Info: TERASIC_CAMERA_0: "Qsys" instantiated TERASIC_CAMERA "TERASIC_CAMERA_0" +Info: alt_vip_itc_0: "Qsys" instantiated alt_vip_itc "alt_vip_itc_0" +Info: alt_vip_vfb_0: "Qsys" instantiated alt_vip_vfb "alt_vip_vfb_0" +Info: altpll_0: Error while generating Qsys_altpll_0.v : 1 : Illegal port or parameter name scandone Illegal port or parameter name scanclkena Illegal port or parameter name scandataout Illegal port or parameter name configupdate Illegal port or parameter name scandata child process exited abnormally +Info: altpll_0: Illegal port or parameter name scandone Illegal port or parameter name scanclkena Illegal port or parameter name scandataout Illegal port or parameter name configupdate Illegal port or parameter name scandata child process exited abnormally while executing "exec /home/ed/altera_lite/16.0/quartus/linux64/clearbox altpll_avalon device_family=MAX10 CBX_FILE=Qsys_altpll_0.v -f cbxcmdln_1617092322619640" ("eval" body line 1) invoked from within "eval exec $cbx_cmd " +Error: Can't continue processing -- expected file /tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v is missing +Warning: Quartus Prime Generate HDL Interface was unsuccessful. 1 error, 0 warnings +Error: Peak virtual memory: 1399 megabytes +Error: Processing ended: Tue Mar 30 09:18:43 2021 +Error: Elapsed time: 00:00:01 +Error: Total CPU time (on all processors): 00:00:00 +Error: altpll_0: File /tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v written by generation callback did not contain a module called Qsys_altpll_0 +Error: altpll_0: /tmp/alt8716_2763057626446894966.dir/0017_sopcgen/Qsys_altpll_0.v (No such file or directory) +Info: altpll_0: "Qsys" instantiated altpll "altpll_0" +Error: Generation stopped, 218 or more modules remaining +Info: Qsys: Done "Qsys" with 33 modules, 34 files +Error: qsys-generate failed with exit code 1: 8 Errors, 1 Warning +Info: Finished: Create HDL design files for synthesis diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_generation_previous.rpt b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_generation_previous.rpt new file mode 100644 index 0000000..3a37812 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_generation_previous.rpt @@ -0,0 +1,129 @@ +Info: Starting: Create block symbol file (.bsf) +Info: qsys-generate /home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/Qsys.qsys --block-symbol-file --output-directory=/home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/Qsys --family="MAX 10" --part=10M50DAF484C7G +Progress: Loading DE10_LITE_D8M_VIP_16/Qsys.qsys +Progress: Reading input file +Progress: Adding TERASIC_AUTO_FOCUS_0 [TERASIC_AUTO_FOCUS 1.0] +Progress: Parameterizing module TERASIC_AUTO_FOCUS_0 +Progress: Adding TERASIC_CAMERA_0 [TERASIC_CAMERA 1.0] +Progress: Parameterizing module TERASIC_CAMERA_0 +Progress: Adding alt_vip_itc_0 [alt_vip_itc 14.0] +Progress: Parameterizing module alt_vip_itc_0 +Progress: Adding alt_vip_vfb_0 [alt_vip_vfb 13.1] +Progress: Parameterizing module alt_vip_vfb_0 +Progress: Adding altpll_0 [altpll 16.0] +Progress: Parameterizing module altpll_0 +Progress: Adding clk_50 [clock_source 16.0] +Progress: Parameterizing module clk_50 +Progress: Adding i2c_opencores_camera [i2c_opencores 12.0] +Progress: Parameterizing module i2c_opencores_camera +Progress: Adding i2c_opencores_mipi [i2c_opencores 12.0] +Progress: Parameterizing module i2c_opencores_mipi +Progress: Adding jtag_uart [altera_avalon_jtag_uart 16.0] +Progress: Parameterizing module jtag_uart +Progress: Adding key [altera_avalon_pio 16.0] +Progress: Parameterizing module key +Progress: Adding led [altera_avalon_pio 16.0] +Progress: Parameterizing module led +Progress: Adding mipi_pwdn_n [altera_avalon_pio 16.0] +Progress: Parameterizing module mipi_pwdn_n +Progress: Adding mipi_reset_n [altera_avalon_pio 16.0] +Progress: Parameterizing module mipi_reset_n +Progress: Adding nios2_gen2 [altera_nios2_gen2 16.0] +Progress: Parameterizing module nios2_gen2 +Progress: Adding onchip_memory2_0 [altera_avalon_onchip_memory2 16.0] +Progress: Parameterizing module onchip_memory2_0 +Progress: Adding sdram [altera_avalon_new_sdram_controller 16.0] +Progress: Parameterizing module sdram +Progress: Adding sw [altera_avalon_pio 16.0] +Progress: Parameterizing module sw +Progress: Adding sysid_qsys [altera_avalon_sysid_qsys 16.0] +Progress: Parameterizing module sysid_qsys +Progress: Adding timer [altera_avalon_timer 16.0] +Progress: Parameterizing module timer +Progress: Building connections +Progress: Parameterizing connections +Progress: Validating +Progress: Done reading input file +Info: Qsys.alt_vip_vfb_0: The Frame Buffer will no longer be available after 16.1, please upgrade to Frame Buffer II. +Info: Qsys.jtag_uart: JTAG UART IP input clock need to be at least double (2x) the operating frequency of JTAG TCK on board +Info: Qsys.key: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation. +Info: Qsys.sw: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation. +Info: Qsys.sysid_qsys: System ID is not assigned automatically. Edit the System ID parameter to provide a unique ID +Info: Qsys.sysid_qsys: Time stamp will be automatically updated when this component is generated. +Info: qsys-generate succeeded. +Info: Finished: Create block symbol file (.bsf) +Info: +Info: Starting: Create HDL design files for synthesis +Info: qsys-generate /home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/Qsys.qsys --synthesis=VERILOG --output-directory=/home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/Qsys/synthesis --family="MAX 10" --part=10M50DAF484C7G +Progress: Loading DE10_LITE_D8M_VIP_16/Qsys.qsys +Progress: Reading input file +Progress: Adding TERASIC_AUTO_FOCUS_0 [TERASIC_AUTO_FOCUS 1.0] +Progress: Parameterizing module TERASIC_AUTO_FOCUS_0 +Progress: Adding TERASIC_CAMERA_0 [TERASIC_CAMERA 1.0] +Progress: Parameterizing module TERASIC_CAMERA_0 +Progress: Adding alt_vip_itc_0 [alt_vip_itc 14.0] +Progress: Parameterizing module alt_vip_itc_0 +Progress: Adding alt_vip_vfb_0 [alt_vip_vfb 13.1] +Progress: Parameterizing module alt_vip_vfb_0 +Progress: Adding altpll_0 [altpll 16.0] +Progress: Parameterizing module altpll_0 +Progress: Adding clk_50 [clock_source 16.0] +Progress: Parameterizing module clk_50 +Progress: Adding i2c_opencores_camera [i2c_opencores 12.0] +Progress: Parameterizing module i2c_opencores_camera +Progress: Adding i2c_opencores_mipi [i2c_opencores 12.0] +Progress: Parameterizing module i2c_opencores_mipi +Progress: Adding jtag_uart [altera_avalon_jtag_uart 16.0] +Progress: Parameterizing module jtag_uart +Progress: Adding key [altera_avalon_pio 16.0] +Progress: Parameterizing module key +Progress: Adding led [altera_avalon_pio 16.0] +Progress: Parameterizing module led +Progress: Adding mipi_pwdn_n [altera_avalon_pio 16.0] +Progress: Parameterizing module mipi_pwdn_n +Progress: Adding mipi_reset_n [altera_avalon_pio 16.0] +Progress: Parameterizing module mipi_reset_n +Progress: Adding nios2_gen2 [altera_nios2_gen2 16.0] +Progress: Parameterizing module nios2_gen2 +Progress: Adding onchip_memory2_0 [altera_avalon_onchip_memory2 16.0] +Progress: Parameterizing module onchip_memory2_0 +Progress: Adding sdram [altera_avalon_new_sdram_controller 16.0] +Progress: Parameterizing module sdram +Progress: Adding sw [altera_avalon_pio 16.0] +Progress: Parameterizing module sw +Progress: Adding sysid_qsys [altera_avalon_sysid_qsys 16.0] +Progress: Parameterizing module sysid_qsys +Progress: Adding timer [altera_avalon_timer 16.0] +Progress: Parameterizing module timer +Progress: Building connections +Progress: Parameterizing connections +Progress: Validating +Progress: Done reading input file +Info: Qsys.alt_vip_vfb_0: The Frame Buffer will no longer be available after 16.1, please upgrade to Frame Buffer II. +Info: Qsys.jtag_uart: JTAG UART IP input clock need to be at least double (2x) the operating frequency of JTAG TCK on board +Info: Qsys.key: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation. +Info: Qsys.sw: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation. +Info: Qsys.sysid_qsys: System ID is not assigned automatically. Edit the System ID parameter to provide a unique ID +Info: Qsys.sysid_qsys: Time stamp will be automatically updated when this component is generated. +Info: Qsys: Generating Qsys "Qsys" for QUARTUS_SYNTH +Info: Inserting clock-crossing logic between cmd_demux.src5 and cmd_mux_005.sink0 +Info: Inserting clock-crossing logic between rsp_demux_005.src0 and rsp_mux.sink5 +Info: TERASIC_AUTO_FOCUS_0: "Qsys" instantiated TERASIC_AUTO_FOCUS "TERASIC_AUTO_FOCUS_0" +Info: TERASIC_CAMERA_0: "Qsys" instantiated TERASIC_CAMERA "TERASIC_CAMERA_0" +Info: alt_vip_itc_0: "Qsys" instantiated alt_vip_itc "alt_vip_itc_0" +Info: alt_vip_vfb_0: "Qsys" instantiated alt_vip_vfb "alt_vip_vfb_0" +Info: altpll_0: Error while generating Qsys_altpll_0.v : 1 : Illegal port or parameter name scandone Illegal port or parameter name scanclkena Illegal port or parameter name scandataout Illegal port or parameter name configupdate Illegal port or parameter name scandata child process exited abnormally +Info: altpll_0: Illegal port or parameter name scandone Illegal port or parameter name scanclkena Illegal port or parameter name scandataout Illegal port or parameter name configupdate Illegal port or parameter name scandata child process exited abnormally while executing "exec /home/ed/altera_lite/16.0/quartus/linux64/clearbox altpll_avalon device_family=MAX10 CBX_FILE=Qsys_altpll_0.v -f cbxcmdln_1617092145442977" ("eval" body line 1) invoked from within "eval exec $cbx_cmd " +Error: Can't continue processing -- expected file /tmp/alt8716_2763057626446894966.dir/0014_sopcgen/Qsys_altpll_0.v is missing +Warning: Quartus Prime Generate HDL Interface was unsuccessful. 1 error, 0 warnings +Error: Peak virtual memory: 1399 megabytes +Error: Processing ended: Tue Mar 30 09:15:46 2021 +Error: Elapsed time: 00:00:00 +Error: Total CPU time (on all processors): 00:00:00 +Error: altpll_0: File /tmp/alt8716_2763057626446894966.dir/0014_sopcgen/Qsys_altpll_0.v written by generation callback did not contain a module called Qsys_altpll_0 +Error: altpll_0: /tmp/alt8716_2763057626446894966.dir/0014_sopcgen/Qsys_altpll_0.v (No such file or directory) +Info: altpll_0: "Qsys" instantiated altpll "altpll_0" +Error: Generation stopped, 218 or more modules remaining +Info: Qsys: Done "Qsys" with 33 modules, 34 files +Error: qsys-generate failed with exit code 1: 8 Errors, 1 Warning +Info: Finished: Create HDL design files for synthesis diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_inst.v b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_inst.v new file mode 100644 index 0000000..053ca64 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_inst.v @@ -0,0 +1,45 @@ + Qsys u0 ( + .alt_vip_itc_0_clocked_video_vid_clk (), // alt_vip_itc_0_clocked_video.vid_clk + .alt_vip_itc_0_clocked_video_vid_data (), // .vid_data + .alt_vip_itc_0_clocked_video_underflow (), // .underflow + .alt_vip_itc_0_clocked_video_vid_datavalid (), // .vid_datavalid + .alt_vip_itc_0_clocked_video_vid_v_sync (), // .vid_v_sync + .alt_vip_itc_0_clocked_video_vid_h_sync (), // .vid_h_sync + .alt_vip_itc_0_clocked_video_vid_f (), // .vid_f + .alt_vip_itc_0_clocked_video_vid_h (), // .vid_h + .alt_vip_itc_0_clocked_video_vid_v (), // .vid_v + .altpll_0_areset_conduit_export (), // altpll_0_areset_conduit.export + .altpll_0_locked_conduit_export (), // altpll_0_locked_conduit.export + .clk_clk (), // clk.clk + .clk_sdram_clk (), // clk_sdram.clk + .clk_vga_clk (), // clk_vga.clk + .d8m_xclkin_clk (), // d8m_xclkin.clk + .eee_imgproc_0_conduit_mode_new_signal (), // eee_imgproc_0_conduit_mode.new_signal + .i2c_opencores_camera_export_scl_pad_io (), // i2c_opencores_camera_export.scl_pad_io + .i2c_opencores_camera_export_sda_pad_io (), // .sda_pad_io + .i2c_opencores_mipi_export_scl_pad_io (), // i2c_opencores_mipi_export.scl_pad_io + .i2c_opencores_mipi_export_sda_pad_io (), // .sda_pad_io + .key_external_connection_export (), // key_external_connection.export + .led_external_connection_export (), // led_external_connection.export + .mipi_pwdn_n_external_connection_export (), // mipi_pwdn_n_external_connection.export + .mipi_reset_n_external_connection_export (), // mipi_reset_n_external_connection.export + .reset_reset_n (), // reset.reset_n + .sdram_wire_addr (), // sdram_wire.addr + .sdram_wire_ba (), // .ba + .sdram_wire_cas_n (), // .cas_n + .sdram_wire_cke (), // .cke + .sdram_wire_cs_n (), // .cs_n + .sdram_wire_dq (), // .dq + .sdram_wire_dqm (), // .dqm + .sdram_wire_ras_n (), // .ras_n + .sdram_wire_we_n (), // .we_n + .sw_external_connection_export (), // sw_external_connection.export + .terasic_auto_focus_0_conduit_vcm_i2c_sda (), // terasic_auto_focus_0_conduit.vcm_i2c_sda + .terasic_auto_focus_0_conduit_clk50 (), // .clk50 + .terasic_auto_focus_0_conduit_vcm_i2c_scl (), // .vcm_i2c_scl + .terasic_camera_0_conduit_end_D (), // terasic_camera_0_conduit_end.D + .terasic_camera_0_conduit_end_FVAL (), // .FVAL + .terasic_camera_0_conduit_end_LVAL (), // .LVAL + .terasic_camera_0_conduit_end_PIXCLK () // .PIXCLK + ); + diff --git a/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_inst.vhd b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_inst.vhd new file mode 100644 index 0000000..9a4f759 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/Qsys/Qsys_inst.vhd @@ -0,0 +1,93 @@ + component Qsys is + port ( + alt_vip_itc_0_clocked_video_vid_clk : in std_logic := 'X'; -- vid_clk + alt_vip_itc_0_clocked_video_vid_data : out std_logic_vector(23 downto 0); -- vid_data + alt_vip_itc_0_clocked_video_underflow : out std_logic; -- underflow + alt_vip_itc_0_clocked_video_vid_datavalid : out std_logic; -- vid_datavalid + alt_vip_itc_0_clocked_video_vid_v_sync : out std_logic; -- vid_v_sync + alt_vip_itc_0_clocked_video_vid_h_sync : out std_logic; -- vid_h_sync + alt_vip_itc_0_clocked_video_vid_f : out std_logic; -- vid_f + alt_vip_itc_0_clocked_video_vid_h : out std_logic; -- vid_h + alt_vip_itc_0_clocked_video_vid_v : out std_logic; -- vid_v + altpll_0_areset_conduit_export : in std_logic := 'X'; -- export + altpll_0_locked_conduit_export : out std_logic; -- export + clk_clk : in std_logic := 'X'; -- clk + clk_sdram_clk : out std_logic; -- clk + clk_vga_clk : out std_logic; -- clk + d8m_xclkin_clk : out std_logic; -- clk + eee_imgproc_0_conduit_mode_new_signal : in std_logic := 'X'; -- new_signal + i2c_opencores_camera_export_scl_pad_io : inout std_logic := 'X'; -- scl_pad_io + i2c_opencores_camera_export_sda_pad_io : inout std_logic := 'X'; -- sda_pad_io + i2c_opencores_mipi_export_scl_pad_io : inout std_logic := 'X'; -- scl_pad_io + i2c_opencores_mipi_export_sda_pad_io : inout std_logic := 'X'; -- sda_pad_io + key_external_connection_export : in std_logic_vector(1 downto 0) := (others => 'X'); -- export + led_external_connection_export : out std_logic_vector(9 downto 0); -- export + mipi_pwdn_n_external_connection_export : out std_logic; -- export + mipi_reset_n_external_connection_export : out std_logic; -- export + reset_reset_n : in std_logic := 'X'; -- reset_n + sdram_wire_addr : out std_logic_vector(12 downto 0); -- addr + sdram_wire_ba : out std_logic_vector(1 downto 0); -- ba + sdram_wire_cas_n : out std_logic; -- cas_n + sdram_wire_cke : out std_logic; -- cke + sdram_wire_cs_n : out std_logic; -- cs_n + sdram_wire_dq : inout std_logic_vector(15 downto 0) := (others => 'X'); -- dq + sdram_wire_dqm : out std_logic_vector(1 downto 0); -- dqm + sdram_wire_ras_n : out std_logic; -- ras_n + sdram_wire_we_n : out std_logic; -- we_n + sw_external_connection_export : in std_logic_vector(9 downto 0) := (others => 'X'); -- export + terasic_auto_focus_0_conduit_vcm_i2c_sda : inout std_logic := 'X'; -- vcm_i2c_sda + terasic_auto_focus_0_conduit_clk50 : in std_logic := 'X'; -- clk50 + terasic_auto_focus_0_conduit_vcm_i2c_scl : inout std_logic := 'X'; -- vcm_i2c_scl + terasic_camera_0_conduit_end_D : in std_logic_vector(11 downto 0) := (others => 'X'); -- D + terasic_camera_0_conduit_end_FVAL : in std_logic := 'X'; -- FVAL + terasic_camera_0_conduit_end_LVAL : in std_logic := 'X'; -- LVAL + terasic_camera_0_conduit_end_PIXCLK : in std_logic := 'X' -- PIXCLK + ); + end component Qsys; + + u0 : component Qsys + port map ( + alt_vip_itc_0_clocked_video_vid_clk => CONNECTED_TO_alt_vip_itc_0_clocked_video_vid_clk, -- alt_vip_itc_0_clocked_video.vid_clk + alt_vip_itc_0_clocked_video_vid_data => CONNECTED_TO_alt_vip_itc_0_clocked_video_vid_data, -- .vid_data + alt_vip_itc_0_clocked_video_underflow => CONNECTED_TO_alt_vip_itc_0_clocked_video_underflow, -- .underflow + alt_vip_itc_0_clocked_video_vid_datavalid => CONNECTED_TO_alt_vip_itc_0_clocked_video_vid_datavalid, -- .vid_datavalid + alt_vip_itc_0_clocked_video_vid_v_sync => CONNECTED_TO_alt_vip_itc_0_clocked_video_vid_v_sync, -- .vid_v_sync + alt_vip_itc_0_clocked_video_vid_h_sync => CONNECTED_TO_alt_vip_itc_0_clocked_video_vid_h_sync, -- .vid_h_sync + alt_vip_itc_0_clocked_video_vid_f => CONNECTED_TO_alt_vip_itc_0_clocked_video_vid_f, -- .vid_f + alt_vip_itc_0_clocked_video_vid_h => CONNECTED_TO_alt_vip_itc_0_clocked_video_vid_h, -- .vid_h + alt_vip_itc_0_clocked_video_vid_v => CONNECTED_TO_alt_vip_itc_0_clocked_video_vid_v, -- .vid_v + altpll_0_areset_conduit_export => CONNECTED_TO_altpll_0_areset_conduit_export, -- altpll_0_areset_conduit.export + altpll_0_locked_conduit_export => CONNECTED_TO_altpll_0_locked_conduit_export, -- altpll_0_locked_conduit.export + clk_clk => CONNECTED_TO_clk_clk, -- clk.clk + clk_sdram_clk => CONNECTED_TO_clk_sdram_clk, -- clk_sdram.clk + clk_vga_clk => CONNECTED_TO_clk_vga_clk, -- clk_vga.clk + d8m_xclkin_clk => CONNECTED_TO_d8m_xclkin_clk, -- d8m_xclkin.clk + eee_imgproc_0_conduit_mode_new_signal => CONNECTED_TO_eee_imgproc_0_conduit_mode_new_signal, -- eee_imgproc_0_conduit_mode.new_signal + i2c_opencores_camera_export_scl_pad_io => CONNECTED_TO_i2c_opencores_camera_export_scl_pad_io, -- i2c_opencores_camera_export.scl_pad_io + i2c_opencores_camera_export_sda_pad_io => CONNECTED_TO_i2c_opencores_camera_export_sda_pad_io, -- .sda_pad_io + i2c_opencores_mipi_export_scl_pad_io => CONNECTED_TO_i2c_opencores_mipi_export_scl_pad_io, -- i2c_opencores_mipi_export.scl_pad_io + i2c_opencores_mipi_export_sda_pad_io => CONNECTED_TO_i2c_opencores_mipi_export_sda_pad_io, -- .sda_pad_io + key_external_connection_export => CONNECTED_TO_key_external_connection_export, -- key_external_connection.export + led_external_connection_export => CONNECTED_TO_led_external_connection_export, -- led_external_connection.export + mipi_pwdn_n_external_connection_export => CONNECTED_TO_mipi_pwdn_n_external_connection_export, -- mipi_pwdn_n_external_connection.export + mipi_reset_n_external_connection_export => CONNECTED_TO_mipi_reset_n_external_connection_export, -- mipi_reset_n_external_connection.export + reset_reset_n => CONNECTED_TO_reset_reset_n, -- reset.reset_n + sdram_wire_addr => CONNECTED_TO_sdram_wire_addr, -- sdram_wire.addr + sdram_wire_ba => CONNECTED_TO_sdram_wire_ba, -- .ba + sdram_wire_cas_n => CONNECTED_TO_sdram_wire_cas_n, -- .cas_n + sdram_wire_cke => CONNECTED_TO_sdram_wire_cke, -- .cke + sdram_wire_cs_n => CONNECTED_TO_sdram_wire_cs_n, -- .cs_n + sdram_wire_dq => CONNECTED_TO_sdram_wire_dq, -- .dq + sdram_wire_dqm => CONNECTED_TO_sdram_wire_dqm, -- .dqm + sdram_wire_ras_n => CONNECTED_TO_sdram_wire_ras_n, -- .ras_n + sdram_wire_we_n => CONNECTED_TO_sdram_wire_we_n, -- .we_n + sw_external_connection_export => CONNECTED_TO_sw_external_connection_export, -- sw_external_connection.export + terasic_auto_focus_0_conduit_vcm_i2c_sda => CONNECTED_TO_terasic_auto_focus_0_conduit_vcm_i2c_sda, -- terasic_auto_focus_0_conduit.vcm_i2c_sda + terasic_auto_focus_0_conduit_clk50 => CONNECTED_TO_terasic_auto_focus_0_conduit_clk50, -- .clk50 + terasic_auto_focus_0_conduit_vcm_i2c_scl => CONNECTED_TO_terasic_auto_focus_0_conduit_vcm_i2c_scl, -- .vcm_i2c_scl + terasic_camera_0_conduit_end_D => CONNECTED_TO_terasic_camera_0_conduit_end_D, -- terasic_camera_0_conduit_end.D + terasic_camera_0_conduit_end_FVAL => CONNECTED_TO_terasic_camera_0_conduit_end_FVAL, -- .FVAL + terasic_camera_0_conduit_end_LVAL => CONNECTED_TO_terasic_camera_0_conduit_end_LVAL, -- .LVAL + terasic_camera_0_conduit_end_PIXCLK => CONNECTED_TO_terasic_camera_0_conduit_end_PIXCLK -- .PIXCLK + ); + diff --git a/Vision/DE10_LITE_D8M_VIP_16/demo_batch/D8M_Camera_Test.elf b/Vision/DE10_LITE_D8M_VIP_16/demo_batch/D8M_Camera_Test.elf new file mode 100644 index 0000000000000000000000000000000000000000..c1374cd09db1432fbc1e466e5a3d8cf6b3a47d6f GIT binary patch literal 1098085 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

qn#N6*i{Z{^iBUw! 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®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

)WaXJQd?)j!4XTOz46rVIpRYspN3kKs@# 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%0As+G&-5LzP_`71n|&5^BAOSR!~CId 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�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 zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkL{ngo8V`TWbxD*eto zO|xj~-KKf7z17syK7V_8T;BcTq1v+ewE4wYsh^6gd&hBgdl6Tk9A$kzwx*(HD`vd| zD^9dEk@eCKAHPx;|L^gQd-d_-=Jun<|FAhME89A|nZs%S@WZA#`Kh1p#?{n!zklQ1 zqsZ=dyUl>iYBH0)19ySQ&_h{<1^7z)?xdY<65_s=a{9} z&|^1`<3gqik)zj_S@=4|>Ad_qZO!u-jc$lh9pTZ8W%!>avC&yE}$m z6^E#`>X0>6adr1`_FwyGp2hmXI|-1xtbKY7+Xe!RGQ_V{<2TTd`+I0>xJF2Mu2 zku}lQIO@_nG#-6C2#WLQHqO2s+Pm978tpa1=({_Han>6dFwy+PAP&o#XzQ|BUup8O e$SZOAJKb8-yb=HM_V)QW(lVWN4`BZJul|1*ep!nE literal 0 HcmV?d00001 diff --git a/Vision/DE10_LITE_D8M_VIP_16/demo_batch/test.bat b/Vision/DE10_LITE_D8M_VIP_16/demo_batch/test.bat new file mode 100644 index 0000000..85106fa --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/demo_batch/test.bat @@ -0,0 +1,26 @@ + +@ REM ###################################### +@ REM # Variable to ignore in DOS +@ REM # line endings +@ set SHELLOPTS=igncr + +@ REM ###################################### +@ REM # Variable to ignore mixed paths +@ REM # i.e. G:/$SOPC_KIT_NIOS2/bin +@ set CYGWIN=nodosfilewarning + +@set QUARTUS_BIN=%QUARTUS_ROOTDIR%\\bin +@if exist %QUARTUS_BIN%\\quartus_pgm.exe (goto DownLoad) + +@set QUARTUS_BIN=%QUARTUS_ROOTDIR%\\bin64 +@if exist %QUARTUS_BIN%\\quartus_pgm.exe (goto DownLoad) + +:: Prepare for future use (if exes are in bin32) +@set QUARTUS_BIN=%QUARTUS_ROOTDIR%\\bin32 + +:DownLoad +%QUARTUS_BIN%\\quartus_pgm.exe -m jtag -c 1 -o "p;DE10_LITE_D8M_VIP.sof" +@ set SOPC_BUILDER_PATH=%SOPC_KIT_NIOS2%+%SOPC_BUILDER_PATH% +@ "%QUARTUS_BIN%\\cygwin\bin\bash.exe" --rcfile ".\test.sh" + +pause diff --git a/Vision/DE10_LITE_D8M_VIP_16/demo_batch/test.sh b/Vision/DE10_LITE_D8M_VIP_16/demo_batch/test.sh new file mode 100644 index 0000000..1d308c6 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/demo_batch/test.sh @@ -0,0 +1,6 @@ +# file: nios2_sdk_shell_bashrc + +"$SOPC_KIT_NIOS2/nios2_command_shell.sh" nios2-download D8M_Camera_Test.elf -c 1 -g +"$SOPC_KIT_NIOS2/nios2_command_shell.sh" nios2-terminal -c 1 + +# End of file diff --git a/Vision/DE10_LITE_D8M_VIP_16/greybox_tmp/cbx_args.txt b/Vision/DE10_LITE_D8M_VIP_16/greybox_tmp/cbx_args.txt new file mode 100644 index 0000000..ef64bb8 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/greybox_tmp/cbx_args.txt @@ -0,0 +1,61 @@ +BANDWIDTH_TYPE=AUTO +CLK0_DIVIDE_BY=1 +CLK0_DUTY_CYCLE=50 +CLK0_MULTIPLY_BY=1 +CLK0_PHASE_SHIFT=0 +COMPENSATE_CLOCK=CLK0 +INCLK0_INPUT_FREQUENCY=10000 +INTENDED_DEVICE_FAMILY="MAX 10" +LPM_TYPE=altpll +OPERATION_MODE=NORMAL +PLL_TYPE=AUTO +PORT_ACTIVECLOCK=PORT_UNUSED +PORT_ARESET=PORT_USED +PORT_CLKBAD0=PORT_UNUSED +PORT_CLKBAD1=PORT_UNUSED +PORT_CLKLOSS=PORT_UNUSED +PORT_CLKSWITCH=PORT_UNUSED +PORT_CONFIGUPDATE=PORT_UNUSED +PORT_FBIN=PORT_UNUSED +PORT_INCLK0=PORT_USED +PORT_INCLK1=PORT_UNUSED +PORT_LOCKED=PORT_USED +PORT_PFDENA=PORT_UNUSED +PORT_PHASECOUNTERSELECT=PORT_UNUSED +PORT_PHASEDONE=PORT_UNUSED +PORT_PHASESTEP=PORT_UNUSED +PORT_PHASEUPDOWN=PORT_UNUSED +PORT_PLLENA=PORT_UNUSED +PORT_SCANACLR=PORT_UNUSED +PORT_SCANCLK=PORT_UNUSED +PORT_SCANCLKENA=PORT_UNUSED +PORT_SCANDATA=PORT_UNUSED +PORT_SCANDATAOUT=PORT_UNUSED +PORT_SCANDONE=PORT_UNUSED +PORT_SCANREAD=PORT_UNUSED +PORT_SCANWRITE=PORT_UNUSED +PORT_clk0=PORT_USED +PORT_clk1=PORT_UNUSED +PORT_clk2=PORT_UNUSED +PORT_clk3=PORT_UNUSED +PORT_clk4=PORT_UNUSED +PORT_clk5=PORT_UNUSED +PORT_clkena0=PORT_UNUSED +PORT_clkena1=PORT_UNUSED +PORT_clkena2=PORT_UNUSED +PORT_clkena3=PORT_UNUSED +PORT_clkena4=PORT_UNUSED +PORT_clkena5=PORT_UNUSED +PORT_extclk0=PORT_UNUSED +PORT_extclk1=PORT_UNUSED +PORT_extclk2=PORT_UNUSED +PORT_extclk3=PORT_UNUSED +SELF_RESET_ON_LOSS_LOCK=OFF +WIDTH_CLOCK=5 +DEVICE_FAMILY="MAX 10" +CBX_AUTO_BLACKBOX=ALL +areset +inclk +inclk +clk +locked diff --git a/Vision/DE10_LITE_D8M_VIP_16/hs_err_pid13062.log b/Vision/DE10_LITE_D8M_VIP_16/hs_err_pid13062.log new file mode 100644 index 0000000..8e856c3 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/hs_err_pid13062.log @@ -0,0 +1,1085 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGSEGV (0xb) at pc=0x00007f111e087f05, pid=13062, tid=139713050569728 +# +# JRE version: Java(TM) SE Runtime Environment (8.0_05-b13) (build 1.8.0_05-b13) +# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.5-b02 mixed mode linux-amd64 compressed oops) +# Problematic frame: +# C [libcusp160_parser.so+0xa8f05] jni_ParserLink_c::logMessage(int, char const*)+0x25 +# +# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again +# +# If you would like to submit a bug report, please visit: +# http://bugreport.sun.com/bugreport/crash.jsp +# + +--------------- T H R E A D --------------- + +Current thread is native thread + +siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000538 + +Registers: +RAX=0x00007f111e57e481, RBX=0x00007f111e57e8f0, RCX=0x00007f117b019cd7, RDX=0x00007f111e57e480 +RSP=0x00007ffca4b53b50, RBP=0x00007ffca4b54240, RSI=0x00007f111e57e480, RDI=0x000000000172c9e0 +R8 =0x0000000000000000, R9 =0x00007f1179788700, R10=0x0000000000000000, R11=0x0000000000000246 +R12=0x00007f111900e270, R13=0x0000000000000000, R14=0x00007f117adfefa0, R15=0x00007f1179788700 +RIP=0x00007f111e087f05, EFLAGS=0x0000000000010202, CSGSFS=0x002b000000000033, ERR=0x0000000000000004 + TRAPNO=0x000000000000000e + +Top of Stack: (sp=0x00007ffca4b53b50) +0x00007ffca4b53b50: 00007f117b011440 00007f111e57e480 +0x00007ffca4b53b60: 00007ffca4b54240 00007f111e57e480 +0x00007ffca4b53b70: 00007f11797889d0 00007f111e07af2f +0x00007ffca4b53b80: 000000000000000a 00007ffca4b54240 +0x00007ffca4b53b90: 0000000000003308 00007f111e07b0c9 +0x00007ffca4b53ba0: 00000000000000ca 00007f111e11aa58 +0x00007ffca4b53bb0: 0000000000000001 00007f117ac46210 +0x00007ffca4b53bc0: 0000000000000007 0000000000000000 +0x00007ffca4b53bd0: 0000000000000000 00007f1100000002 +0x00007ffca4b53be0: 0000000000000000 0000000000000000 +0x00007ffca4b53bf0: 00007f1179788700 0000000000000000 +0x00007ffca4b53c00: 0000000000000246 0000000000003308 +0x00007ffca4b53c10: 00007f11797889d0 00007f117adfefa0 +0x00007ffca4b53c20: 00007f1179788700 00007f11797889d0 +0x00007ffca4b53c30: 0000000000000000 00007ffca4b54240 +0x00007ffca4b53c40: 00000000000000ca 0000000000003308 +0x00007ffca4b53c50: 00000000000000ca 00007f117b019cd7 +0x00007ffca4b53c60: 00007ffca4b54160 00007f117b019cd5 +0x00007ffca4b53c70: 0000000000000246 002b000000000033 +0x00007ffca4b53c80: 0000000000000000 0000000000000000 +0x00007ffca4b53c90: 0000000000000000 0000000000000000 +0x00007ffca4b53ca0: 00007ffca4b53d80 000000000117d770 +0x00007ffca4b53cb0: 000000000000000f 00007ffca4b53d04 +0x00007ffca4b53cc0: 0000000000000000 0000000000000000 +0x00007ffca4b53cd0: 00007f117992e080 0000000005d4073c +0x00007ffca4b53ce0: 00007f117b043a78 0000000000000000 +0x00007ffca4b53cf0: 00007f117adf912c 00007ffca4b53d80 +0x00007ffca4b53d00: 00007ffca4b53d90 00007f117b0511e9 +0x00007ffca4b53d10: 0000000000000001 00007f117b044ae0 +0x00007ffca4b53d20: 0000000000000005 0000000000000000 +0x00007ffca4b53d30: 0000000000000001 00007f117b043710 +0x00007ffca4b53d40: 00007ffca4b53dd0 00007f117b044ae0 + +Instructions: (pc=0x00007f111e087f05) +0x00007f111e087ee5: 41 54 49 89 fc 55 53 48 83 ec 08 48 85 d2 74 2b +0x00007f111e087ef5: 48 8b 1d 0c 59 4d 00 48 89 d6 48 8b 3b 4c 8b 07 +0x00007f111e087f05: 41 ff 90 38 05 00 00 48 85 c0 48 89 c5 75 3b 48 +0x00007f111e087f15: 83 c4 08 5b 5d 41 5c 41 5d c3 90 48 8b 05 d1 4e + +Register to memory mapping: + +RAX=0x00007f111e57e481: in /home/ed/altera_lite/16.0/quartus/cusp/bin/libcusp160_parser.so at 0x00007f111dfdf000 +RBX=0x00007f111e57e8f0: _ZN8jni_base5s_envE+0 in /home/ed/altera_lite/16.0/quartus/cusp/bin/libcusp160_parser.so at 0x00007f111dfdf000 +RCX=0x00007f117b019cd7: in /lib/x86_64-linux-gnu/libpthread.so.0 at 0x00007f117b00f000 +RDX=0x00007f111e57e480: in /home/ed/altera_lite/16.0/quartus/cusp/bin/libcusp160_parser.so at 0x00007f111dfdf000 +RSP=0x00007ffca4b53b50 is an unknown value +RBP=0x00007ffca4b54240 is an unknown value +RSI=0x00007f111e57e480: in /home/ed/altera_lite/16.0/quartus/cusp/bin/libcusp160_parser.so at 0x00007f111dfdf000 +RDI=0x000000000172c9e0 is an unknown value +R8 =0x0000000000000000 is an unknown value +R9 =0x00007f1179788700 is pointing into the stack for thread: 0x00007f1168010000 +R10=0x0000000000000000 is an unknown value +R11=0x0000000000000246 is an unknown value +R12=0x00007f111900e270 is an unknown value +R13=0x0000000000000000 is an unknown value +R14=0x00007f117adfefa0: in /home/ed/altera_lite/16.0/quartus/linux64/jre64/bin/../lib/amd64/jli/libjli.so at 0x00007f117adf8000 +R15=0x00007f1179788700 is pointing into the stack for thread: 0x00007f1168010000 + + +Stack: [0x00007ffca4a5e000,0x00007ffca4b5e000], sp=0x00007ffca4b53b50, free space=982k +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +C [libcusp160_parser.so+0xa8f05] jni_ParserLink_c::logMessage(int, char const*)+0x25 + + +--------------- P R O C E S S --------------- + +VM state:not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +Heap: + def new generation total 54528K, used 22234K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 37% used [0x00000000a2400000, 0x00000000a35eb398, 0x00000000a5360000) + from space 6016K, 64% used [0x00000000a5360000, 0x00000000a572b770, 0x00000000a5940000) + to space 6016K, 0% used [0x00000000a5940000, 0x00000000a5940000, 0x00000000a5f20000) + tenured generation total 120944K, used 110191K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 91% used [0x00000000c1800000, 0x00000000c839bdd8, 0x00000000c839be00, 0x00000000c8e1c000) + Metaspace used 60644K, capacity 62134K, committed 62512K, reserved 1103872K + class space used 7836K, capacity 8161K, committed 8240K, reserved 1048576K + +Card table byte_map: [0x00007f1176da8000,0x00007f1177097000] byte_map_base: 0x00007f1176896000 + +Polling page: 0x00007f117b071000 + +CodeCache: size=245760Kb used=46070Kb max_used=46705Kb free=199689Kb + bounds [0x00007f1159000000, 0x00007f115bdf0000, 0x00007f1168000000] + total_blobs=14971 nmethods=14239 adapters=643 + compilation: enabled + +Compilation events (10 events): +Event: 400.045 Thread 0x00007f11681eb800 18397 s 4 java.io.BufferedInputStream::available (35 bytes) +Event: 400.047 Thread 0x00007f11681eb800 nmethod 18397 0x00007f115b0fce90 code [0x00007f115b0fcfe0, 0x00007f115b0fd368] +Event: 401.936 Thread 0x00007f11681ee000 18398 3 sun.awt.X11.XWindowPeer::isGrabbed (20 bytes) +Event: 401.936 Thread 0x00007f11681ee000 nmethod 18398 0x00007f115a92b010 code [0x00007f115a92b180, 0x00007f115a92b3a8] +Event: 402.424 Thread 0x00007f11681ee000 18399 3 sun.awt.X11.XCrossingEvent::get_window (20 bytes) +Event: 402.425 Thread 0x00007f11681ee000 nmethod 18399 0x00007f115b3de690 code [0x00007f115b3de820, 0x00007f115b3debc8] +Event: 481.319 Thread 0x00007f11681ee000 18400 3 sun.awt.X11.XWindowPeer::isSimpleWindow (26 bytes) +Event: 481.320 Thread 0x00007f11681ee000 nmethod 18400 0x00007f11598ef850 code [0x00007f11598ef9c0, 0x00007f11598efd90] +Event: 543.115 Thread 0x00007f11681eb800 18401 4 java.util.TaskQueue::rescheduleMin (16 bytes) +Event: 543.128 Thread 0x00007f11681eb800 nmethod 18401 0x00007f11598fa450 code [0x00007f11598fa5c0, 0x00007f11598fa8f8] + +GC Heap History (10 events): +Event: 223.477 GC heap before +{Heap before GC invocations=446 (full 5): + def new generation total 54528K, used 48587K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 100% used [0x00000000a2400000, 0x00000000a5360000, 0x00000000a5360000) + from space 6016K, 1% used [0x00000000a5940000, 0x00000000a5952ea8, 0x00000000a5f20000) + to space 6016K, 0% used [0x00000000a5360000, 0x00000000a5360000, 0x00000000a5940000) + tenured generation total 120944K, used 109961K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 90% used [0x00000000c1800000, 0x00000000c8362670, 0x00000000c8362800, 0x00000000c8e1c000) + Metaspace used 60497K, capacity 62006K, committed 62256K, reserved 1103872K + class space used 7831K, capacity 8161K, committed 8240K, reserved 1048576K +Event: 223.482 GC heap after +Heap after GC invocations=447 (full 5): + def new generation total 54528K, used 44K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 0% used [0x00000000a2400000, 0x00000000a2400000, 0x00000000a5360000) + from space 6016K, 0% used [0x00000000a5360000, 0x00000000a536b3e8, 0x00000000a5940000) + to space 6016K, 0% used [0x00000000a5940000, 0x00000000a5940000, 0x00000000a5f20000) + tenured generation total 120944K, used 109970K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 90% used [0x00000000c1800000, 0x00000000c8364ac0, 0x00000000c8364c00, 0x00000000c8e1c000) + Metaspace used 60497K, capacity 62006K, committed 62256K, reserved 1103872K + class space used 7831K, capacity 8161K, committed 8240K, reserved 1048576K +} +Event: 224.744 GC heap before +{Heap before GC invocations=447 (full 5): + def new generation total 54528K, used 48556K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 100% used [0x00000000a2400000, 0x00000000a5360000, 0x00000000a5360000) + from space 6016K, 0% used [0x00000000a5360000, 0x00000000a536b3e8, 0x00000000a5940000) + to space 6016K, 0% used [0x00000000a5940000, 0x00000000a5940000, 0x00000000a5f20000) + tenured generation total 120944K, used 109970K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 90% used [0x00000000c1800000, 0x00000000c8364ac0, 0x00000000c8364c00, 0x00000000c8e1c000) + Metaspace used 60497K, capacity 62006K, committed 62256K, reserved 1103872K + class space used 7831K, capacity 8161K, committed 8240K, reserved 1048576K +Event: 224.747 GC heap after +Heap after GC invocations=448 (full 5): + def new generation total 54528K, used 2222K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 0% used [0x00000000a2400000, 0x00000000a2400000, 0x00000000a5360000) + from space 6016K, 36% used [0x00000000a5940000, 0x00000000a5b6ba00, 0x00000000a5f20000) + to space 6016K, 0% used [0x00000000a5360000, 0x00000000a5360000, 0x00000000a5940000) + tenured generation total 120944K, used 109984K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 90% used [0x00000000c1800000, 0x00000000c83680f0, 0x00000000c8368200, 0x00000000c8e1c000) + Metaspace used 60497K, capacity 62006K, committed 62256K, reserved 1103872K + class space used 7831K, capacity 8161K, committed 8240K, reserved 1048576K +} +Event: 241.835 GC heap before +{Heap before GC invocations=448 (full 5): + def new generation total 54528K, used 50734K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 100% used [0x00000000a2400000, 0x00000000a5360000, 0x00000000a5360000) + from space 6016K, 36% used [0x00000000a5940000, 0x00000000a5b6ba00, 0x00000000a5f20000) + to space 6016K, 0% used [0x00000000a5360000, 0x00000000a5360000, 0x00000000a5940000) + tenured generation total 120944K, used 109984K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 90% used [0x00000000c1800000, 0x00000000c83680f0, 0x00000000c8368200, 0x00000000c8e1c000) + Metaspace used 60543K, capacity 62006K, committed 62256K, reserved 1103872K + class space used 7833K, capacity 8161K, committed 8240K, reserved 1048576K +Event: 241.839 GC heap after +Heap after GC invocations=449 (full 5): + def new generation total 54528K, used 2466K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 0% used [0x00000000a2400000, 0x00000000a2400000, 0x00000000a5360000) + from space 6016K, 41% used [0x00000000a5360000, 0x00000000a55c8b60, 0x00000000a5940000) + to space 6016K, 0% used [0x00000000a5940000, 0x00000000a5940000, 0x00000000a5f20000) + tenured generation total 120944K, used 109985K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 90% used [0x00000000c1800000, 0x00000000c83685c8, 0x00000000c8368600, 0x00000000c8e1c000) + Metaspace used 60543K, capacity 62006K, committed 62256K, reserved 1103872K + class space used 7833K, capacity 8161K, committed 8240K, reserved 1048576K +} +Event: 258.221 GC heap before +{Heap before GC invocations=449 (full 5): + def new generation total 54528K, used 50978K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 100% used [0x00000000a2400000, 0x00000000a5360000, 0x00000000a5360000) + from space 6016K, 41% used [0x00000000a5360000, 0x00000000a55c8b60, 0x00000000a5940000) + to space 6016K, 0% used [0x00000000a5940000, 0x00000000a5940000, 0x00000000a5f20000) + tenured generation total 120944K, used 109985K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 90% used [0x00000000c1800000, 0x00000000c83685c8, 0x00000000c8368600, 0x00000000c8e1c000) + Metaspace used 60593K, capacity 62070K, committed 62256K, reserved 1103872K + class space used 7834K, capacity 8161K, committed 8240K, reserved 1048576K +Event: 258.226 GC heap after +Heap after GC invocations=450 (full 5): + def new generation total 54528K, used 3285K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 0% used [0x00000000a2400000, 0x00000000a2400000, 0x00000000a5360000) + from space 6016K, 54% used [0x00000000a5940000, 0x00000000a5c75568, 0x00000000a5f20000) + to space 6016K, 0% used [0x00000000a5360000, 0x00000000a5360000, 0x00000000a5940000) + tenured generation total 120944K, used 109985K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 90% used [0x00000000c1800000, 0x00000000c8368620, 0x00000000c8368800, 0x00000000c8e1c000) + Metaspace used 60593K, capacity 62070K, committed 62256K, reserved 1103872K + class space used 7834K, capacity 8161K, committed 8240K, reserved 1048576K +} +Event: 270.634 GC heap before +{Heap before GC invocations=450 (full 5): + def new generation total 54528K, used 51797K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 100% used [0x00000000a2400000, 0x00000000a5360000, 0x00000000a5360000) + from space 6016K, 54% used [0x00000000a5940000, 0x00000000a5c75568, 0x00000000a5f20000) + to space 6016K, 0% used [0x00000000a5360000, 0x00000000a5360000, 0x00000000a5940000) + tenured generation total 120944K, used 109985K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 90% used [0x00000000c1800000, 0x00000000c8368620, 0x00000000c8368800, 0x00000000c8e1c000) + Metaspace used 60626K, capacity 62070K, committed 62256K, reserved 1103872K + class space used 7834K, capacity 8161K, committed 8240K, reserved 1048576K +Event: 270.647 GC heap after +Heap after GC invocations=451 (full 5): + def new generation total 54528K, used 3885K [0x00000000a2400000, 0x00000000a5f20000, 0x00000000c1800000) + eden space 48512K, 0% used [0x00000000a2400000, 0x00000000a2400000, 0x00000000a5360000) + from space 6016K, 64% used [0x00000000a5360000, 0x00000000a572b770, 0x00000000a5940000) + to space 6016K, 0% used [0x00000000a5940000, 0x00000000a5940000, 0x00000000a5f20000) + tenured generation total 120944K, used 110191K [0x00000000c1800000, 0x00000000c8e1c000, 0x0000000100000000) + the space 120944K, 91% used [0x00000000c1800000, 0x00000000c839bdd8, 0x00000000c839be00, 0x00000000c8e1c000) + Metaspace used 60626K, capacity 62070K, committed 62256K, reserved 1103872K + class space used 7834K, capacity 8161K, committed 8240K, reserved 1048576K +} + +Deoptimization events (10 events): +Event: 270.436 Thread 0x00007f11688bd000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f115bcb8080 method=com.altera.sopceditor.tools.systemtable.widgets.InterfaceExportDataWrangler.getValue(Lcom/altera/ui/widgets/systemtable/SystemTableModel;Lcom/altera/ui/widgets/systemtab +Event: 270.437 Thread 0x00007f11688bd000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f115bcb8080 method=com.altera.sopceditor.tools.systemtable.widgets.InterfaceExportDataWrangler.getValue(Lcom/altera/ui/widgets/systemtable/SystemTableModel;Lcom/altera/ui/widgets/systemtab +Event: 270.439 Thread 0x00007f11688bd000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f115bcb8080 method=com.altera.sopceditor.tools.systemtable.widgets.InterfaceExportDataWrangler.getValue(Lcom/altera/ui/widgets/systemtable/SystemTableModel;Lcom/altera/ui/widgets/systemtab +Event: 270.441 Thread 0x00007f11688bd000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f115bcb8080 method=com.altera.sopceditor.tools.systemtable.widgets.InterfaceExportDataWrangler.getValue(Lcom/altera/ui/widgets/systemtable/SystemTableModel;Lcom/altera/ui/widgets/systemtab +Event: 270.480 Thread 0x00007f11688bd000 Uncommon trap: reason=unreached action=reinterpret pc=0x00007f11599add18 method=com.altera.sopceditor.tools.systemtable.widgets.ConnectionMatrixModel.getPossibleConnection(II)Lcom/altera/sopceditor/tools/systemtable/widgets/PossibleConnection; @ 4 +Event: 270.600 Thread 0x00007f11688bd000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f115ba008c0 method=com.altera.ui.util.TextPanel$6.create(Ljavax/swing/text/Element;)Ljavax/swing/text/View; @ 1 +Event: 270.600 Thread 0x00007f11688bd000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f115ba008c0 method=com.altera.ui.util.TextPanel$6.create(Ljavax/swing/text/Element;)Ljavax/swing/text/View; @ 1 +Event: 270.600 Thread 0x00007f11688bd000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f115ba008c0 method=com.altera.ui.util.TextPanel$6.create(Ljavax/swing/text/Element;)Ljavax/swing/text/View; @ 1 +Event: 270.600 Thread 0x00007f11688bd000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f115ba008c0 method=com.altera.ui.util.TextPanel$6.create(Ljavax/swing/text/Element;)Ljavax/swing/text/View; @ 1 +Event: 270.794 Thread 0x00007f11688bd000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f115a5267d4 method=java.awt.KeyboardFocusManager.clearMostRecentFocusOwner(Ljava/awt/Component;)V @ 67 + +Internal exceptions (10 events): +Event: 224.762 Thread 0x00007f11688bd000 Implicit null exception at 0x00007f115bc68d0a to 0x00007f115bc6ac19 +Event: 224.768 Thread 0x00007f11688bd000 Implicit null exception at 0x00007f115bc24c10 to 0x00007f115bc29031 +Event: 246.550 Thread 0x00007f11688bd000 Exception (0x00000000a3732970) thrown at [/HUDSON/workspace/8-2-build-linux-amd64/jdk8u5/2488/hotspot/src/share/vm/prims/jvm.cpp, line 1248] +Event: 246.598 Thread 0x00007f11688bd000 Implicit null exception at 0x00007f115bb6dfdc to 0x00007f115bb6eb99 +Event: 256.858 Thread 0x00007f11688bd000 Implicit null exception at 0x00007f115acfef36 to 0x00007f115acff5a1 +Event: 265.042 Thread 0x00007f11688bd000 Exception (0x00000000a2fe6800) thrown at [/HUDSON/workspace/8-2-build-linux-amd64/jdk8u5/2488/hotspot/src/share/vm/prims/jni.cpp, line 742] +Event: 270.480 Thread 0x00007f11688bd000 Implicit null exception at 0x00007f11599adc73 to 0x00007f11599adcfd +Event: 491.194 Thread 0x00007f11685dd000 Exception (0x00000000a35af3c0) thrown at [/HUDSON/workspace/8-2-build-linux-amd64/jdk8u5/2488/hotspot/src/share/vm/prims/jvm.cpp, line 1248] +Event: 491.195 Thread 0x00007f11685dd000 Exception (0x00000000a35cbf08) thrown at [/HUDSON/workspace/8-2-build-linux-amd64/jdk8u5/2488/hotspot/src/share/vm/prims/jvm.cpp, line 1248] +Event: 491.195 Thread 0x00007f11685dd000 Exception (0x00000000a35cfb68) thrown at [/HUDSON/workspace/8-2-build-linux-amd64/jdk8u5/2488/hotspot/src/share/vm/prims/jvm.cpp, line 1248] + +Events (10 events): +Event: 270.814 Executing VM operation: BulkRevokeBias done +Event: 270.837 Thread 0x00007f113562b800 Thread added: 0x00007f113562b800 +Event: 272.862 Executing VM operation: RevokeBias +Event: 272.862 Executing VM operation: RevokeBias done +Event: 491.194 loading class com/altera/utilities/AltCmdLineToolBase$3 +Event: 491.194 loading class com/altera/utilities/AltCmdLineToolBase$3 done +Event: 491.195 loading class com/altera/ui/util/UiUtils$2 +Event: 491.195 loading class com/altera/ui/util/UiUtils$2 done +Event: 491.195 loading class com/altera/ui/app/base/BasicEditor$2 +Event: 491.195 loading class com/altera/ui/app/base/BasicEditor$2 done + + +Dynamic libraries: +00400000-00401000 r-xp 00000000 08:05 1458378 /home/ed/altera_lite/16.0/quartus/linux64/jre64/bin/java +00600000-00601000 rw-p 00000000 08:05 1458378 /home/ed/altera_lite/16.0/quartus/linux64/jre64/bin/java +01175000-0178e000 rw-p 00000000 00:00 0 [heap] +a2400000-a5f20000 rw-p 00000000 00:00 0 +a5f20000-c1800000 ---p 00000000 00:00 0 +c1800000-c8e1c000 rw-p 00000000 00:00 0 +c8e1c000-100000000 ---p 00000000 00:00 0 +100000000-10080c000 rw-p 00000000 00:00 0 +10080c000-140000000 ---p 00000000 00:00 0 +7f1110000000-7f1113024000 rw-p 00000000 00:00 0 +7f1113024000-7f1114000000 ---p 00000000 00:00 0 +7f1118000000-7f111a22a000 rw-p 00000000 00:00 0 +7f111a22a000-7f111c000000 ---p 00000000 00:00 0 +7f111cb9f000-7f111cdce000 rw-s 00000000 00:01 655422 /SYSV00000000 (deleted) +7f111cdce000-7f111cfce000 rw-p 00000000 00:00 0 +7f111cfce000-7f111d1ce000 rw-p 00000000 00:00 0 +7f111d1ce000-7f111d3ce000 rw-p 00000000 00:00 0 +7f111d3ce000-7f111d7c3000 rw-p 00000000 00:00 0 +7f111d7df000-7f111d8df000 rw-p 00000000 00:00 0 +7f111d8df000-7f111d9df000 ---p 00000000 00:00 0 +7f111d9df000-7f111dbdf000 rw-p 00000000 00:00 0 +7f111dbdf000-7f111dddf000 rw-p 00000000 00:00 0 +7f111dddf000-7f111dfdf000 rw-p 00000000 00:00 0 +7f111dfdf000-7f111e356000 r-xp 00000000 08:05 1722362 /home/ed/altera_lite/16.0/quartus/cusp/bin/libcusp160_parser.so +7f111e356000-7f111e555000 ---p 00377000 08:05 1722362 /home/ed/altera_lite/16.0/quartus/cusp/bin/libcusp160_parser.so +7f111e555000-7f111e57f000 rw-p 00376000 08:05 1722362 /home/ed/altera_lite/16.0/quartus/cusp/bin/libcusp160_parser.so +7f111e57f000-7f111e5c9000 rw-p 00000000 00:00 0 +7f111e5c9000-7f111e5d1000 r-xp 00000000 08:05 1458479 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libmanagement.so +7f111e5d1000-7f111e7d1000 ---p 00008000 08:05 1458479 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libmanagement.so +7f111e7d1000-7f111e7d2000 rw-p 00008000 08:05 1458479 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libmanagement.so +7f111e7d2000-7f111e7d3000 ---p 00000000 00:00 0 +7f111e7d3000-7f111f1d3000 rw-p 00000000 00:00 0 +7f111f1d3000-7f111f1ea000 r-xp 00000000 08:05 1332838 /home/ed/altera_lite/16.0/quartus/linux64/libtbbmalloc.so.2 +7f111f1ea000-7f111f3ea000 ---p 00017000 08:05 1332838 /home/ed/altera_lite/16.0/quartus/linux64/libtbbmalloc.so.2 +7f111f3ea000-7f111f3ed000 rw-p 00017000 08:05 1332838 /home/ed/altera_lite/16.0/quartus/linux64/libtbbmalloc.so.2 +7f111f3ed000-7f1120000000 rw-p 00000000 00:00 0 +7f1120000000-7f1120033000 rw-p 00000000 00:00 0 +7f1120033000-7f1124000000 ---p 00000000 00:00 0 +7f11240c8000-7f11242c8000 rw-p 00000000 00:00 0 +7f11242c8000-7f11244c8000 rw-p 00000000 00:00 0 +7f11244c8000-7f11244cb000 ---p 00000000 00:00 0 +7f11244cb000-7f11247c9000 rw-p 00000000 00:00 0 +7f11247c9000-7f11249c9000 rw-p 00000000 00:00 0 +7f11249c9000-7f11249d8000 r-xp 00000000 08:05 1332810 /home/ed/altera_lite/16.0/quartus/linux64/libccl_thr.so +7f11249d8000-7f1124bd7000 ---p 0000f000 08:05 1332810 /home/ed/altera_lite/16.0/quartus/linux64/libccl_thr.so +7f1124bd7000-7f1124bd8000 rw-p 0000e000 08:05 1332810 /home/ed/altera_lite/16.0/quartus/linux64/libccl_thr.so +7f1124bd8000-7f1124bfb000 rw-p 00000000 00:00 0 +7f1124bfb000-7f1124bfc000 r-xp 00000000 08:05 1332831 /home/ed/altera_lite/16.0/quartus/linux64/libtbbamalloc.so +7f1124bfc000-7f1124dfb000 ---p 00001000 08:05 1332831 /home/ed/altera_lite/16.0/quartus/linux64/libtbbamalloc.so +7f1124dfb000-7f1124dfc000 rw-p 00000000 08:05 1332831 /home/ed/altera_lite/16.0/quartus/linux64/libtbbamalloc.so +7f1124dfc000-7f1124dfe000 r-xp 00000000 08:05 1332835 /home/ed/altera_lite/16.0/quartus/linux64/libtbbmalloc_proxy.so.2 +7f1124dfe000-7f1124ffe000 ---p 00002000 08:05 1332835 /home/ed/altera_lite/16.0/quartus/linux64/libtbbmalloc_proxy.so.2 +7f1124ffe000-7f1124fff000 rw-p 00002000 08:05 1332835 /home/ed/altera_lite/16.0/quartus/linux64/libtbbmalloc_proxy.so.2 +7f1124fff000-7f1128000000 rw-p 00000000 00:00 0 +7f1128000000-7f1128021000 rw-p 00000000 00:00 0 +7f1128021000-7f112c000000 ---p 00000000 00:00 0 +7f112c06f000-7f112c218000 r-xp 00000000 08:05 1332825 /home/ed/altera_lite/16.0/quartus/linux64/libtcl8.6.so +7f112c218000-7f112c418000 ---p 001a9000 08:05 1332825 /home/ed/altera_lite/16.0/quartus/linux64/libtcl8.6.so +7f112c418000-7f112c428000 rw-p 001a9000 08:05 1332825 /home/ed/altera_lite/16.0/quartus/linux64/libtcl8.6.so +7f112c428000-7f112c429000 rw-p 00000000 00:00 0 +7f112c429000-7f112c42f000 r-xp 00000000 08:05 1332051 /home/ed/altera_lite/16.0/quartus/linux64/libtcl_jni_bridge.so +7f112c42f000-7f112c62e000 ---p 00006000 08:05 1332051 /home/ed/altera_lite/16.0/quartus/linux64/libtcl_jni_bridge.so +7f112c62e000-7f112c62f000 rw-p 00005000 08:05 1332051 /home/ed/altera_lite/16.0/quartus/linux64/libtcl_jni_bridge.so +7f112c62f000-7f112c74d000 r-xp 00000000 08:05 1332157 /home/ed/altera_lite/16.0/quartus/linux64/libsld_filejni.so +7f112c74d000-7f112c94c000 ---p 0011e000 08:05 1332157 /home/ed/altera_lite/16.0/quartus/linux64/libsld_filejni.so +7f112c94c000-7f112c95d000 rw-p 0011d000 08:05 1332157 /home/ed/altera_lite/16.0/quartus/linux64/libsld_filejni.so +7f112c95d000-7f112c963000 rw-p 00000000 00:00 0 +7f112c963000-7f112c98d000 r-xp 00000000 08:05 1458457 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libdcpr.so +7f112c98d000-7f112cb8c000 ---p 0002a000 08:05 1458457 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libdcpr.so +7f112cb8c000-7f112cb8f000 rw-p 00029000 08:05 1458457 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libdcpr.so +7f112cb8f000-7f112cd8f000 rw-p 00000000 00:00 0 +7f112cd8f000-7f112cf8f000 rw-p 00000000 00:00 0 +7f112cf8f000-7f112d18f000 r-xp 00000000 08:05 1332826 /home/ed/altera_lite/16.0/quartus/linux64/libnlview.so +7f112d18f000-7f112d19e000 rw-p 00200000 08:05 1332826 /home/ed/altera_lite/16.0/quartus/linux64/libnlview.so +7f112d19e000-7f112d3a0000 rw-p 00000000 00:00 0 +7f112d3a0000-7f112d5a0000 rw-p 00000000 00:00 0 +7f112d5a0000-7f112d7a0000 rw-p 00000000 00:00 0 +7f112d7a0000-7f112d7a3000 ---p 00000000 00:00 0 +7f112d7a3000-7f112d8a1000 rw-p 00000000 00:00 0 +7f112d8a1000-7f112d8a4000 ---p 00000000 00:00 0 +7f112d8a4000-7f112dba2000 rw-p 00000000 00:00 0 +7f112dba2000-7f112dda2000 rw-p 00000000 00:00 0 +7f112dda2000-7f112de0b000 r-xp 00000000 08:05 1458500 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libt2k.so +7f112de0b000-7f112e00a000 ---p 00069000 08:05 1458500 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libt2k.so +7f112e00a000-7f112e011000 rw-p 00068000 08:05 1458500 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libt2k.so +7f112e011000-7f112e221000 rw-p 00000000 00:00 0 +7f112e221000-7f112e231000 r-xp 00000000 08:05 1458487 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libnio.so +7f112e231000-7f112e431000 ---p 00010000 08:05 1458487 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libnio.so +7f112e431000-7f112e432000 rw-p 00010000 08:05 1458487 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libnio.so +7f112e432000-7f112e435000 ---p 00000000 00:00 0 +7f112e435000-7f112e733000 rw-p 00000000 00:00 0 +7f112e733000-7f112e749000 r-xp 00000000 08:05 1458461 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libnet.so +7f112e749000-7f112e948000 ---p 00016000 08:05 1458461 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libnet.so +7f112e948000-7f112e949000 rw-p 00015000 08:05 1458461 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libnet.so +7f112e949000-7f112eb49000 rw-p 00000000 00:00 0 +7f112eb49000-7f112eb51000 r-xp 00000000 08:05 1332906 /home/ed/altera_lite/16.0/quartus/linux64/libboost_chrono.so.1.59.0 +7f112eb51000-7f112ed50000 ---p 00008000 08:05 1332906 /home/ed/altera_lite/16.0/quartus/linux64/libboost_chrono.so.1.59.0 +7f112ed50000-7f112ed51000 rw-p 00007000 08:05 1332906 /home/ed/altera_lite/16.0/quartus/linux64/libboost_chrono.so.1.59.0 +7f112ed51000-7f112ed55000 r-xp 00000000 08:05 1332923 /home/ed/altera_lite/16.0/quartus/linux64/libboost_timer.so.1.59.0 +7f112ed55000-7f112ef54000 ---p 00004000 08:05 1332923 /home/ed/altera_lite/16.0/quartus/linux64/libboost_timer.so.1.59.0 +7f112ef54000-7f112ef55000 rw-p 00003000 08:05 1332923 /home/ed/altera_lite/16.0/quartus/linux64/libboost_timer.so.1.59.0 +7f112ef55000-7f112ef63000 r-xp 00000000 08:05 1333595 /home/ed/altera_lite/16.0/quartus/linux64/libgomp.so.1 +7f112ef63000-7f112f162000 ---p 0000e000 08:05 1333595 /home/ed/altera_lite/16.0/quartus/linux64/libgomp.so.1 +7f112f162000-7f112f163000 rw-p 0000d000 08:05 1333595 /home/ed/altera_lite/16.0/quartus/linux64/libgomp.so.1 +7f112f163000-7f112f24d000 r-xp 00000000 08:05 1333596 /home/ed/altera_lite/16.0/quartus/linux64/libstdc++.so.6 +7f112f24d000-7f112f44c000 ---p 000ea000 08:05 1333596 /home/ed/altera_lite/16.0/quartus/linux64/libstdc++.so.6 +7f112f44c000-7f112f454000 r--p 000e9000 08:05 1333596 /home/ed/altera_lite/16.0/quartus/linux64/libstdc++.so.6 +7f112f454000-7f112f456000 rw-p 000f1000 08:05 1333596 /home/ed/altera_lite/16.0/quartus/linux64/libstdc++.so.6 +7f112f456000-7f112f46b000 rw-p 00000000 00:00 0 +7f112f46b000-7f112f527000 r-xp 00000000 08:05 1332908 /home/ed/altera_lite/16.0/quartus/linux64/libboost_unit_test_framework.so.1.59.0 +7f112f527000-7f112f726000 ---p 000bc000 08:05 1332908 /home/ed/altera_lite/16.0/quartus/linux64/libboost_unit_test_framework.so.1.59.0 +7f112f726000-7f112f72d000 rw-p 000bb000 08:05 1332908 /home/ed/altera_lite/16.0/quartus/linux64/libboost_unit_test_framework.so.1.59.0 +7f112f72d000-7f112f72f000 rw-p 00000000 00:00 0 +7f112f72f000-7f112f792000 r-xp 00000000 08:05 1332912 /home/ed/altera_lite/16.0/quartus/linux64/libboost_program_options.so.1.59.0 +7f112f792000-7f112f992000 ---p 00063000 08:05 1332912 /home/ed/altera_lite/16.0/quartus/linux64/libboost_program_options.so.1.59.0 +7f112f992000-7f112f996000 rw-p 00063000 08:05 1332912 /home/ed/altera_lite/16.0/quartus/linux64/libboost_program_options.so.1.59.0 +7f112f996000-7f112f998000 r-xp 00000000 08:05 1332927 /home/ed/altera_lite/16.0/quartus/linux64/libboost_system.so.1.59.0 +7f112f998000-7f112fb98000 ---p 00002000 08:05 1332927 /home/ed/altera_lite/16.0/quartus/linux64/libboost_system.so.1.59.0 +7f112fb98000-7f112fb99000 rw-p 00002000 08:05 1332927 /home/ed/altera_lite/16.0/quartus/linux64/libboost_system.so.1.59.0 +7f112fb99000-7f112fbaf000 r-xp 00000000 08:05 1332849 /home/ed/altera_lite/16.0/quartus/linux64/libboost_filesystem.so.1.59.0 +7f112fbaf000-7f112fdaf000 ---p 00016000 08:05 1332849 /home/ed/altera_lite/16.0/quartus/linux64/libboost_filesystem.so.1.59.0 +7f112fdaf000-7f112fdb0000 rw-p 00016000 08:05 1332849 /home/ed/altera_lite/16.0/quartus/linux64/libboost_filesystem.so.1.59.0 +7f112fdb0000-7f112fdfd000 r-xp 00000000 08:05 1332928 /home/ed/altera_lite/16.0/quartus/linux64/libboost_serialization.so.1.59.0 +7f112fdfd000-7f112fffc000 ---p 0004d000 08:05 1332928 /home/ed/altera_lite/16.0/quartus/linux64/libboost_serialization.so.1.59.0 +7f112fffc000-7f1130000000 rw-p 0004c000 08:05 1332928 /home/ed/altera_lite/16.0/quartus/linux64/libboost_serialization.so.1.59.0 +7f1130000000-7f1130286000 rw-p 00000000 00:00 0 +7f1130286000-7f1134000000 ---p 00000000 00:00 0 +7f1134000000-7f1137ffb000 rw-p 00000000 00:00 0 +7f1137ffb000-7f1138000000 ---p 00000000 00:00 0 +7f1138000000-7f1138021000 rw-p 00000000 00:00 0 +7f1138021000-7f113c000000 ---p 00000000 00:00 0 +7f113c000000-7f113c021000 rw-p 00000000 00:00 0 +7f113c021000-7f1140000000 ---p 00000000 00:00 0 +7f1140000000-7f11422f6000 rw-p 00000000 00:00 0 +7f11422f6000-7f1144000000 ---p 00000000 00:00 0 +7f1144000000-7f1144021000 rw-p 00000000 00:00 0 +7f1144021000-7f1148000000 ---p 00000000 00:00 0 +7f1148000000-7f1148021000 rw-p 00000000 00:00 0 +7f1148021000-7f114c000000 ---p 00000000 00:00 0 +7f114c000000-7f114c021000 rw-p 00000000 00:00 0 +7f114c021000-7f1150000000 ---p 00000000 00:00 0 +7f1150000000-7f1153ffe000 rw-p 00000000 00:00 0 +7f1153ffe000-7f1154000000 ---p 00000000 00:00 0 +7f1154000000-7f1154021000 rw-p 00000000 00:00 0 +7f1154021000-7f1158000000 ---p 00000000 00:00 0 +7f1158082000-7f1158085000 ---p 00000000 00:00 0 +7f1158085000-7f1158183000 rw-p 00000000 00:00 0 +7f1158183000-7f1158272000 r-xp 00000000 08:05 1332898 /home/ed/altera_lite/16.0/quartus/linux64/libboost_regex.so.1.59.0 +7f1158272000-7f1158471000 ---p 000ef000 08:05 1332898 /home/ed/altera_lite/16.0/quartus/linux64/libboost_regex.so.1.59.0 +7f1158471000-7f1158477000 rw-p 000ee000 08:05 1332898 /home/ed/altera_lite/16.0/quartus/linux64/libboost_regex.so.1.59.0 +7f1158477000-7f1158515000 r-xp 00000000 08:05 1332627 /home/ed/altera_lite/16.0/quartus/linux64/libccl_sqlite3.so +7f1158515000-7f1158714000 ---p 0009e000 08:05 1332627 /home/ed/altera_lite/16.0/quartus/linux64/libccl_sqlite3.so +7f1158714000-7f1158719000 rw-p 0009d000 08:05 1332627 /home/ed/altera_lite/16.0/quartus/linux64/libccl_sqlite3.so +7f1158719000-7f1158726000 r-xp 00000000 08:05 1331522 /home/ed/altera_lite/16.0/quartus/linux64/libccl_sqlite3_jdbc_jni_bridge.so +7f1158726000-7f1158925000 ---p 0000d000 08:05 1331522 /home/ed/altera_lite/16.0/quartus/linux64/libccl_sqlite3_jdbc_jni_bridge.so +7f1158925000-7f1158926000 rw-p 0000c000 08:05 1331522 /home/ed/altera_lite/16.0/quartus/linux64/libccl_sqlite3_jdbc_jni_bridge.so +7f1158926000-7f1158928000 r--p 00000000 08:05 925017 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f1158928000-7f115898c000 r-xp 00002000 08:05 925017 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f115898c000-7f11589b4000 r--p 00066000 08:05 925017 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f11589b4000-7f11589b5000 r--p 0008d000 08:05 925017 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f11589b5000-7f11589b6000 rw-p 0008e000 08:05 925017 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f11589b6000-7f11589c0000 r--p 00000000 08:05 924144 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f11589c0000-7f11589f6000 r-xp 0000a000 08:05 924144 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f11589f6000-7f1158a06000 r--p 00040000 08:05 924144 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f1158a06000-7f1158a07000 ---p 00050000 08:05 924144 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f1158a07000-7f1158a0c000 r--p 00050000 08:05 924144 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f1158a0c000-7f1158a0d000 rw-p 00055000 08:05 924144 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f1158a44000-7f1158a46000 r--p 00000000 08:05 925013 /usr/lib/x86_64-linux-gnu/libpcre.so.3.13.3 +7f1158a46000-7f1158a97000 r-xp 00002000 08:05 925013 /usr/lib/x86_64-linux-gnu/libpcre.so.3.13.3 +7f1158a97000-7f1158ab5000 r--p 00053000 08:05 925013 /usr/lib/x86_64-linux-gnu/libpcre.so.3.13.3 +7f1158ab5000-7f1158ab6000 r--p 00070000 08:05 925013 /usr/lib/x86_64-linux-gnu/libpcre.so.3.13.3 +7f1158ab6000-7f1158ab7000 rw-p 00071000 08:05 925013 /usr/lib/x86_64-linux-gnu/libpcre.so.3.13.3 +7f1158ab7000-7f1158ab9000 r--p 00000000 08:05 924397 /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 +7f1158ab9000-7f1158abf000 r-xp 00002000 08:05 924397 /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 +7f1158abf000-7f1158ac0000 r--p 00008000 08:05 924397 /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 +7f1158ac0000-7f1158ac1000 ---p 00009000 08:05 924397 /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 +7f1158ac1000-7f1158ac2000 r--p 00009000 08:05 924397 /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 +7f1158ac2000-7f1158ac3000 rw-p 0000a000 08:05 924397 /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 +7f1158aef000-7f1158af2000 ---p 00000000 00:00 0 +7f1158af2000-7f1158bf0000 rw-p 00000000 00:00 0 +7f1158bf0000-7f1158bf4000 r--p 00000000 08:05 925115 /usr/lib/x86_64-linux-gnu/libresolv-2.31.so +7f1158bf4000-7f1158c04000 r-xp 00004000 08:05 925115 /usr/lib/x86_64-linux-gnu/libresolv-2.31.so +7f1158c04000-7f1158c07000 r--p 00014000 08:05 925115 /usr/lib/x86_64-linux-gnu/libresolv-2.31.so +7f1158c07000-7f1158c08000 ---p 00017000 08:05 925115 /usr/lib/x86_64-linux-gnu/libresolv-2.31.so +7f1158c08000-7f1158c09000 r--p 00017000 08:05 925115 /usr/lib/x86_64-linux-gnu/libresolv-2.31.so +7f1158c09000-7f1158c0a000 rw-p 00018000 08:05 925115 /usr/lib/x86_64-linux-gnu/libresolv-2.31.so +7f1158c0a000-7f1158c0c000 rw-p 00000000 00:00 0 +7f1158c0c000-7f1158c12000 r--p 00000000 08:05 925171 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f1158c12000-7f1158c2b000 r-xp 00006000 08:05 925171 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f1158c2b000-7f1158c32000 r--p 0001f000 08:05 925171 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f1158c32000-7f1158c33000 ---p 00026000 08:05 925171 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f1158c33000-7f1158c34000 r--p 00026000 08:05 925171 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f1158c34000-7f1158c35000 rw-p 00027000 08:05 925171 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f1158c35000-7f1158c37000 rw-p 00000000 00:00 0 +7f1158c37000-7f1158c42000 r--p 00000000 08:05 924834 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +7f1158c42000-7f1158c80000 r-xp 0000b000 08:05 924834 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +7f1158c80000-7f1158c93000 r--p 00049000 08:05 924834 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +7f1158c93000-7f1158c96000 r--p 0005b000 08:05 924834 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +7f1158c96000-7f1158c97000 rw-p 0005e000 08:05 924834 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +7f1158c97000-7f1158c99000 r--p 00000000 08:05 925499 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11 +7f1158c99000-7f1158caa000 r-xp 00002000 08:05 925499 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11 +7f1158caa000-7f1158cb0000 r--p 00013000 08:05 925499 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11 +7f1158cb0000-7f1158cb1000 ---p 00019000 08:05 925499 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11 +7f1158cb1000-7f1158cb2000 r--p 00019000 08:05 925499 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11 +7f1158cb2000-7f1158cb3000 rw-p 0001a000 08:05 925499 /usr/lib/x86_64-linux-gnu/libz.so.1.2.11 +7f1158d76000-7f1158d79000 ---p 00000000 00:00 0 +7f1158d79000-7f1158e77000 rw-p 00000000 00:00 0 +7f1158e77000-7f1158e93000 r--p 00000000 08:05 917879 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6 +7f1158e93000-7f1158f17000 r-xp 0001c000 08:05 917879 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6 +7f1158f17000-7f1158f9d000 r--p 000a0000 08:05 917879 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6 +7f1158f9d000-7f1158f9e000 r--p 00125000 08:05 917879 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6 +7f1158f9e000-7f1158f9f000 rw-p 00126000 08:05 917879 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6 +7f1158f9f000-7f1158fa0000 rw-p 00000000 00:00 0 +7f1158fa0000-7f1158fae000 r--p 00000000 08:05 917902 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6 +7f1158fae000-7f1158fe4000 r-xp 0000e000 08:05 917902 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6 +7f1158fe4000-7f1158ffc000 r--p 00044000 08:05 917902 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6 +7f1158ffc000-7f1158fff000 r--p 0005b000 08:05 917902 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6 +7f1158fff000-7f1159000000 rw-p 0005e000 08:05 917902 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6 +7f1159000000-7f115bdf0000 rwxp 00000000 00:00 0 +7f115bdf0000-7f1168000000 ---p 00000000 00:00 0 +7f1168000000-7f1168929000 rw-p 00000000 00:00 0 +7f1168929000-7f116c000000 ---p 00000000 00:00 0 +7f116c000000-7f116c3d0000 rw-p 00000000 00:00 0 +7f116c3d0000-7f1170000000 ---p 00000000 00:00 0 +7f1170000000-7f117047d000 rw-p 00000000 00:00 0 +7f117047d000-7f1174000000 ---p 00000000 00:00 0 +7f1174082000-7f1174085000 ---p 00000000 00:00 0 +7f1174085000-7f11740bb000 rw-p 00000000 00:00 0 +7f11740bb000-7f11740f3000 r--p 00000000 08:05 917870 /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6 +7f11740f3000-7f1174206000 r-xp 00038000 08:05 917870 /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6 +7f1174206000-7f1174290000 r--p 0014b000 08:05 917870 /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6 +7f1174290000-7f1174299000 r--p 001d4000 08:05 917870 /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6 +7f1174299000-7f117429a000 rw-p 001dd000 08:05 917870 /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6 +7f117429a000-7f117429c000 rw-p 00000000 00:00 0 +7f11742a5000-7f11742a8000 r--s 00022000 08:05 1465201 /home/ed/altera_lite/16.0/ip/altera/frame_buffer/lib/ip_toolbench/jdom.jar +7f11742a8000-7f11742ac000 r--s 0004d000 08:05 1465200 /home/ed/altera_lite/16.0/ip/altera/frame_buffer/lib/ip_toolbench/forms_rt.jar +7f11742ac000-7f11742b5000 r--s 0007b000 08:05 1465199 /home/ed/altera_lite/16.0/ip/altera/frame_buffer/lib/ip_toolbench/frame_buffer.jar +7f11742b5000-7f11742c0000 r--s 00000000 08:05 393510 /var/cache/fontconfig/a4637e27-4fcc-4bc0-a937-718ae7fb9dce-le64.cache-7 +7f11742c0000-7f11742c6000 r--s 00000000 08:05 393465 /var/cache/fontconfig/606ab276-7b9b-4a8d-ba0f-d11dc840c63b-le64.cache-7 +7f11742c6000-7f11742c7000 r--s 00000000 08:05 393542 /var/cache/fontconfig/c8e280ed-afd3-47c2-bab8-41c84247e443-le64.cache-7 +7f11742c7000-7f11742dd000 r--s 00000000 08:05 393413 /var/cache/fontconfig/24ca075b-24b3-443e-b839-12e0b785755c-le64.cache-7 +7f11742dd000-7f11742de000 r--s 00000000 08:05 393412 /var/cache/fontconfig/23ea5eec-8abe-425c-8e31-14501dd2c05d-le64.cache-7 +7f11742de000-7f11742df000 r--s 00000000 08:05 393418 /var/cache/fontconfig/31f6e66f-2ff0-4c60-9807-a6215f19ec0e-le64.cache-7 +7f11742df000-7f11742e1000 r--s 00000000 08:05 393479 /var/cache/fontconfig/6d7b3acb-1fb6-4014-b9d7-8e88f844dbd4-le64.cache-7 +7f11742e1000-7f11742e2000 r--s 00000000 08:05 393545 /var/cache/fontconfig/cfa427aa-623e-416c-9510-56b3842277f0-le64.cache-7 +7f11742e2000-7f11742e4000 r--s 00000000 08:05 393476 /var/cache/fontconfig/6ba86a0c-5536-47df-830b-330a0a6c7c47-le64.cache-7 +7f11742e4000-7f11742e6000 r--s 00000000 08:05 393515 /var/cache/fontconfig/a6a6c35d-0ce2-48b7-897d-a6183fd0e97f-le64.cache-7 +7f11742e6000-7f11742e7000 r--s 00000000 08:05 393486 /var/cache/fontconfig/7a1b0847-a32a-43ed-ab48-8e0d80d5aa0e-le64.cache-7 +7f11742e7000-7f11742e9000 r--s 00000000 08:05 393584 /var/cache/fontconfig/f982cc57-f5d2-4816-b56a-40b977baf995-le64.cache-7 +7f11742e9000-7f11742ee000 r--s 00000000 08:05 393417 /var/cache/fontconfig/3100a3e8-8260-4176-8376-e74602aa4b7e-le64.cache-7 +7f11742ee000-7f11742ef000 r--s 00000000 08:05 393500 /var/cache/fontconfig/911b590d-1bae-4329-8900-038496e172ae-le64.cache-7 +7f11742ef000-7f11742f0000 r--s 00000000 08:05 393434 /var/cache/fontconfig/44d9bfa7-b81a-4325-8781-3fd0543d79e7-le64.cache-7 +7f11742f0000-7f11742f1000 r--s 00000000 08:05 393497 /var/cache/fontconfig/87fe2ab1-9058-4913-8428-e46b953778a1-le64.cache-7 +7f11742f1000-7f11742f2000 r--s 00000000 08:05 393493 /var/cache/fontconfig/829604c1-1b2d-40ff-b830-40ef41364dc2-le64.cache-7 +7f11742f2000-7f11742f3000 r--s 00000000 08:05 393396 /var/cache/fontconfig/15117173-412a-4eca-9408-9b879318ad88-le64.cache-7 +7f11742f3000-7f11742f4000 r--s 00000000 08:05 393404 /var/cache/fontconfig/1bb63ba4-fd72-4b26-ab50-9048e523804d-le64.cache-7 +7f11742f4000-7f11742f5000 r--s 00000000 08:05 393569 /var/cache/fontconfig/e29d2e42-aff3-4723-b310-450149b2fb17-le64.cache-7 +7f11742f5000-7f11742f6000 r--s 00000000 08:05 393421 /var/cache/fontconfig/341d2c2a-9c08-4288-8104-d9a4f307f74b-le64.cache-7 +7f11742f6000-7f11742f7000 r--s 00000000 08:05 393382 /var/cache/fontconfig/030f639d-03c8-4627-b24f-bc5a26112056-le64.cache-7 +7f11742f7000-7f11742f8000 r--s 00000000 08:05 393405 /var/cache/fontconfig/1c4ad046-42f8-4993-afcf-56176d8e5375-le64.cache-7 +7f11742f8000-7f11742f9000 r--s 00000000 08:05 393531 /var/cache/fontconfig/bbad67ab-3c64-4edb-8a52-a09350c22aaa-le64.cache-7 +7f11742f9000-7f11742fe000 r--s 00000000 08:05 393578 /var/cache/fontconfig/f2b1a1a4-343a-4373-91e5-fac49fa430e6-le64.cache-7 +7f11742fe000-7f1174305000 r--s 00000000 08:05 393536 /var/cache/fontconfig/c0c8b206-c7dd-477e-bc06-da8b373c3274-le64.cache-7 +7f1174305000-7f117430b000 r--s 00000000 08:05 393561 /var/cache/fontconfig/db24e243-8a03-47c3-8ab6-272240f2c73b-le64.cache-7 +7f117430b000-7f117431e000 r--s 00000000 08:05 393422 /var/cache/fontconfig/369be85f-ed25-45fc-b8b8-b0561cc593b3-le64.cache-7 +7f117431e000-7f1174322000 r--s 00000000 08:05 393433 /var/cache/fontconfig/43f5a2fa-15cb-4d5f-ac3a-6b98f17db5bd-le64.cache-7 +7f1174322000-7f1174325000 ---p 00000000 00:00 0 +7f1174325000-7f1174423000 rw-p 00000000 00:00 0 +7f1174423000-7f1174424000 r--p 00000000 08:05 917901 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.6400.6 +7f1174424000-7f1174426000 r-xp 00001000 08:05 917901 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.6400.6 +7f1174426000-7f1174427000 r--p 00003000 08:05 917901 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.6400.6 +7f1174427000-7f1174428000 r--p 00003000 08:05 917901 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.6400.6 +7f1174428000-7f1174429000 rw-p 00004000 08:05 917901 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.6400.6 +7f1174429000-7f117442a000 r--s 00000000 08:05 393505 /var/cache/fontconfig/9c6749b4-738d-4e81-b63b-146ffc994447-le64.cache-7 +7f117442a000-7f117442b000 r--s 00000000 08:05 393499 /var/cache/fontconfig/90c21457-a70c-4ebf-a99a-2f9f7c9521c4-le64.cache-7 +7f117442b000-7f117442c000 r--s 00000000 08:05 393381 /var/cache/fontconfig/01a0da53-557e-4c32-b6b8-b11a6dcad222-le64.cache-7 +7f117442c000-7f117442d000 r--s 00000000 08:05 393530 /var/cache/fontconfig/bb90e121-4c18-46b2-994d-bc5edc93d11d-le64.cache-7 +7f117442d000-7f117442e000 r--s 00000000 08:05 393547 /var/cache/fontconfig/d0e601be-c830-4b1c-a834-4803962fac48-le64.cache-7 +7f117442e000-7f117442f000 r--s 00000000 08:05 393447 /var/cache/fontconfig/50289ae4-6955-4f6c-a8e4-f1e3a7c39eb5-le64.cache-7 +7f117442f000-7f1174432000 r--s 00000000 08:05 393494 /var/cache/fontconfig/84da5fb7-ac45-4365-a47c-275057a7fb5b-le64.cache-7 +7f1174432000-7f1174434000 r--s 00000000 08:05 393432 /var/cache/fontconfig/4249dd05-726c-4fb6-81c3-c9400f370a59-le64.cache-7 +7f1174434000-7f1174437000 r--s 00000000 08:05 393537 /var/cache/fontconfig/c57cbee3-bdc1-4114-badc-a584f67d0c0c-le64.cache-7 +7f1174437000-7f1174438000 r--s 00000000 08:05 393457 /var/cache/fontconfig/5704c8ff-897f-4b73-9665-68c2d3a48dc9-le64.cache-7 +7f1174438000-7f1174446000 r--s 00000000 08:05 393587 /var/cache/fontconfig/ffc0df38-5557-426d-b4e0-cddd44e52d03-le64.cache-7 +7f1174446000-7f1174456000 r--s 00000000 08:05 393534 /var/cache/fontconfig/be3a9e9e-9e71-4f13-b5a6-656901312546-le64.cache-7 +7f1174456000-7f117445a000 r--s 00084000 08:05 1458389 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/jsse.jar +7f1174460000-7f1174461000 r--p 00000000 00:00 0 +7f1174461000-7f1174469000 r--s 00051000 08:05 393699 /home/ed/altera_lite/16.0/quartus/dsp_builder/bin64/extlibs/velocity-1.4.jar +7f1174469000-7f117447c000 r--s 00089000 08:05 393659 /home/ed/altera_lite/16.0/quartus/dsp_builder/bin64/dspb_entities.jar +7f117447c000-7f11744ec000 r--s 006c2000 08:05 1722361 /home/ed/altera_lite/16.0/quartus/cusp/bin/cusp-engine.jar +7f11744ec000-7f117450c000 r--s 001d6000 08:05 393684 /home/ed/altera_lite/16.0/quartus/dsp_builder/bin64/extlibs/castor-1.0.3.jar +7f117450c000-7f1174511000 r--p 00000000 08:05 924925 /usr/lib/x86_64-linux-gnu/libnsl-2.31.so +7f1174511000-7f1174521000 r-xp 00005000 08:05 924925 /usr/lib/x86_64-linux-gnu/libnsl-2.31.so +7f1174521000-7f1174525000 r--p 00015000 08:05 924925 /usr/lib/x86_64-linux-gnu/libnsl-2.31.so +7f1174525000-7f1174526000 r--p 00018000 08:05 924925 /usr/lib/x86_64-linux-gnu/libnsl-2.31.so +7f1174526000-7f1174527000 rw-p 00019000 08:05 924925 /usr/lib/x86_64-linux-gnu/libnsl-2.31.so +7f1174527000-7f1174729000 rw-p 00000000 00:00 0 +7f1174729000-7f117472c000 ---p 00000000 00:00 0 +7f117472c000-7f117482a000 rw-p 00000000 00:00 0 +7f117482a000-7f117482d000 ---p 00000000 00:00 0 +7f117482d000-7f117492b000 rw-p 00000000 00:00 0 +7f117492b000-7f117493e000 r--s 00345000 08:05 1458402 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/resources.jar +7f117493e000-7f1174941000 ---p 00000000 00:00 0 +7f1174941000-7f1174a3f000 rw-p 00000000 00:00 0 +7f1174a3f000-7f1174a42000 ---p 00000000 00:00 0 +7f1174a42000-7f1174b40000 rw-p 00000000 00:00 0 +7f1174b40000-7f1174b55000 r-xp 00000000 08:05 1333597 /home/ed/altera_lite/16.0/quartus/linux64/libgcc_s.so.1 +7f1174b55000-7f1174d55000 ---p 00015000 08:05 1333597 /home/ed/altera_lite/16.0/quartus/linux64/libgcc_s.so.1 +7f1174d55000-7f1174d56000 rw-p 00015000 08:05 1333597 /home/ed/altera_lite/16.0/quartus/linux64/libgcc_s.so.1 +7f1174d56000-7f1174dbb000 r-xp 00000000 08:05 1458497 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libfontmanager.so +7f1174dbb000-7f1174fba000 ---p 00065000 08:05 1458497 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libfontmanager.so +7f1174fba000-7f1174fbe000 rw-p 00064000 08:05 1458497 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libfontmanager.so +7f1174fbe000-7f1174fcf000 rw-p 00000000 00:00 0 +7f1174fcf000-7f1174fd1000 r--p 00000000 08:05 924017 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 +7f1174fd1000-7f1174fdc000 r-xp 00002000 08:05 924017 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 +7f1174fdc000-7f1174fdf000 r--p 0000d000 08:05 924017 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 +7f1174fdf000-7f1174fe0000 r--p 0000f000 08:05 924017 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 +7f1174fe0000-7f1174fe1000 rw-p 00010000 08:05 924017 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 +7f1174fe1000-7f1174fe6000 r-xp 00000000 08:05 924035 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0 +7f1174fe6000-7f11751e5000 ---p 00005000 08:05 924035 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0 +7f11751e5000-7f11751e6000 r--p 00004000 08:05 924035 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0 +7f11751e6000-7f11751e7000 rw-p 00005000 08:05 924035 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0 +7f11751e7000-7f11751eb000 r--s 00000000 08:05 393464 /var/cache/fontconfig/5c0bb55f-9bc2-4f07-b2ee-c843e59f0457-le64.cache-7 +7f11751eb000-7f11751ec000 r--s 00000000 08:05 393532 /var/cache/fontconfig/bcbb8717-be88-4839-a3cb-708800852979-le64.cache-7 +7f11751ec000-7f11751ed000 r--s 00000000 08:05 393548 /var/cache/fontconfig/d3dfc9e6-6b2a-4fa3-a681-886ea2990c0f-le64.cache-7 +7f11751ed000-7f11751ee000 r--s 00000000 08:05 393484 /var/cache/fontconfig/772e1db9-7fda-4e2c-a119-411f883e41a6-le64.cache-7 +7f11751ee000-7f11751ef000 r--s 00000000 08:05 393559 /var/cache/fontconfig/d95de4f8-8480-405a-a8e2-d5e00726bff4-le64.cache-7 +7f11751ef000-7f11751f0000 r--s 00000000 08:05 393393 /var/cache/fontconfig/0f1e8176-0eef-4f9f-852d-6ffddb548075-le64.cache-7 +7f11751f0000-7f11751f1000 r--s 00000000 08:05 393423 /var/cache/fontconfig/36b1e010-f1b0-46e9-aece-8e80b11c0889-le64.cache-7 +7f11751f1000-7f11751f2000 r--s 00000000 08:05 393519 /var/cache/fontconfig/b457a9aa-e4c7-43d7-b6f3-9fe79a881153-le64.cache-7 +7f11751f2000-7f11751f5000 r--s 00000000 08:05 393452 /var/cache/fontconfig/552326db-e88a-49ad-977f-eb2abcbccb47-le64.cache-7 +7f11751f5000-7f11751f8000 r--s 00000000 08:05 393535 /var/cache/fontconfig/c0b2c651-e462-487b-86a3-2cbb44de03a9-le64.cache-7 +7f11751f8000-7f1175249000 r-xp 00000000 08:05 1458473 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libawt_xawt.so +7f1175249000-7f1175448000 ---p 00051000 08:05 1458473 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libawt_xawt.so +7f1175448000-7f117544c000 rw-p 00050000 08:05 1458473 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libawt_xawt.so +7f117544c000-7f117544d000 rw-p 00000000 00:00 0 +7f117544d000-7f11754f0000 r-xp 00000000 08:05 1458453 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libawt.so +7f11754f0000-7f11756ef000 ---p 000a3000 08:05 1458453 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libawt.so +7f11756ef000-7f11756fb000 rw-p 000a2000 08:05 1458453 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libawt.so +7f11756fb000-7f117571f000 rw-p 00000000 00:00 0 +7f117571f000-7f117573b000 r--s 00393000 08:05 1458537 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/ext/cldrdata.jar +7f117573b000-7f1175746000 r--s 00210000 08:05 1458544 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/ext/localedata.jar +7f1175746000-7f1175783000 r--s 0024e000 08:05 1592474 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/xbean.jar +7f1175783000-7f1175785000 r--s 00008000 08:05 1592506 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/wraplf.jar +7f1175785000-7f1175786000 r--s 00002000 08:05 1592504 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/swing-worker.jar +7f1175786000-7f1175788000 r--s 00014000 08:05 1592470 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/org-netbeans-swing-outline-RELEASE691-sources.jar +7f1175788000-7f1175789000 r--s 00011000 08:05 1592509 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/miglayout-swing.jar +7f1175789000-7f117578f000 r--s 0002e000 08:05 1592436 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/l2fprod-common-sheet.jar +7f117578f000-7f1175791000 r--s 00004000 08:05 1592425 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/jsr173_1.0_api.jar +7f1175791000-7f1175795000 r--s 00031000 08:05 1592473 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/jline-2.12.jar +7f1175795000-7f11757a1000 r--s 0008f000 08:05 1592492 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/jgraphx.jar +7f11757a1000-7f11757b2000 r--s 0014c000 08:05 1592450 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/jfreechart-1.0.13.jar +7f11757b2000-7f11757b8000 r--s 00046000 08:05 1592498 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/jcommon-1.0.16.jar +7f11757b8000-7f11757f0000 r--s 00217000 08:05 1592429 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/docking-frames-core.jar +7f11757f0000-7f1175806000 r--s 000bc000 08:05 1592448 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/docking-frames-common.jar +7f1175806000-7f1175808000 r--s 00003000 08:05 1592503 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.util.elf.jar +7f1175808000-7f117580a000 r--s 00002000 08:05 1592430 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.tools.sopcformats.jar +7f117580a000-7f117580b000 r--s 00002000 08:05 1592365 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.tools.exampledesigns.jar +7f117580b000-7f117580c000 r--s 00006000 08:05 1592511 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.spdy.jar +7f117580c000-7f117580d000 r--s 0000b000 08:05 1592367 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.sldhubchannel.jar +7f117580d000-7f117580f000 r--s 00006000 08:05 1592505 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.gdbserver.jar +7f117580f000-7f1175810000 r--s 00007000 08:05 1592373 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.issp.jar +7f1175810000-7f1175813000 r--s 0000d000 08:05 1592507 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.monitor.jar +7f1175813000-7f117581a000 r--s 0003f000 08:05 1592406 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.busanalyzer.jar +7f117581a000-7f1175828000 r--s 0007f000 08:05 1592437 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/commons-collections-3.2.1.jar +7f1175828000-7f1175829000 r--s 00003000 08:05 1592402 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.iobus.jar +7f1175829000-7f117582a000 r--s 00002000 08:05 1592460 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.helper.jar +7f117582a000-7f117582f000 r--s 0002c000 08:05 1592375 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.dashboard.jar +7f117582f000-7f1175833000 r--s 00020000 08:05 1592369 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.trace.gui.jar +7f1175833000-7f1175838000 r--s 00029000 08:05 1592471 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.trace.database.jar +7f1175838000-7f1175839000 r--s 00001000 08:05 1592393 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.plugin.memory.jar +7f1175839000-7f117583b000 r--s 00003000 08:05 1592370 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.plugin.pli.jar +7f117583b000-7f117583c000 r--s 00006000 08:05 1592413 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.tcpchannel.jar +7f117583c000-7f117583f000 r--s 00011000 08:05 1592472 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.usb.jar +7f117583f000-7f1175843000 r--s 0001c000 08:05 1592478 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.trace.drivers.jar +7f1175843000-7f1175844000 r--s 00001000 08:05 1592399 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.matlabapi.jar +7f1175844000-7f1175847000 r--s 0001c000 08:05 1592495 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.app.jar +7f1175847000-7f1175849000 r--s 0000c000 08:05 1592458 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcmodel.components.hwtclvalidator.jar +7f1175849000-7f117584a000 r--s 0000e000 08:05 1592508 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcmodel.components.atlantic.packetformatconverter.jar +7f117584a000-7f117584c000 r--s 00003000 08:05 1592409 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.script.debugwindow.jar +7f117584c000-7f117584e000 r--s 00001000 08:05 1592404 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.nios2.trace.jar +7f117584e000-7f1175850000 r--s 00009000 08:05 1592494 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.nios2.rtl.trace.jar +7f1175850000-7f1175862000 r--s 00091000 08:05 1592384 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.nios2.isa.jar +7f1175862000-7f117586b000 r--s 00076000 08:05 1592447 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/jmwizc.jar +7f117586b000-7f117586d000 r--s 00007000 08:05 1592381 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.qsys.ipxact.module.jar +7f117586d000-7f117586f000 r--s 0000a000 08:05 1592387 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.widgets.jar +7f117586f000-7f1175874000 r--s 00055000 08:05 1592502 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.qsys.hypericonnect.jar +7f1175874000-7f1175878000 r--s 00035000 08:05 1592468 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcmodel.sbtools.jar +7f1175878000-7f117587a000 r--s 00007000 08:05 1592490 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.qsys.blackboxmodule.jar +7f117587a000-7f117587b000 r--s 00003000 08:05 1592455 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.qsys.ui.jar +7f117587b000-7f11758ab000 r--s 00411000 08:05 1592461 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopceditor.jar +7f11758ab000-7f11758ae000 r--s 00020000 08:05 1592412 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.iplauncher.jar +7f11758ae000-7f11758b0000 r--s 0000e000 08:05 1592477 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.ip.regenerator.jar +7f11758b0000-7f11758b3000 r--s 00024000 08:05 1592445 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.genman.jar +7f11758b3000-7f11758b6000 r--s 0002d000 08:05 1592491 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.launch.jar +7f11758b6000-7f11758b7000 r--s 00006000 08:05 1592459 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.configrom.jar +7f11758b7000-7f11758b8000 r--s 00000000 08:05 1592372 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.jtagsimulator.jar +7f11758b8000-7f11758ba000 r--s 00007000 08:05 1592424 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.driver.jar +7f11758ba000-7f11758c8000 r--s 00072000 08:05 1592417 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.plugin.elf.jar +7f11758c8000-7f11758c9000 ---p 00000000 00:00 0 +7f11758c9000-7f11759c9000 rw-p 00000000 00:00 0 +7f11759c9000-7f11759cc000 ---p 00000000 00:00 0 +7f11759cc000-7f1175aca000 rw-p 00000000 00:00 0 +7f1175aca000-7f1175acb000 ---p 00000000 00:00 0 +7f1175acb000-7f1175ace000 ---p 00000000 00:00 0 +7f1175ace000-7f1175bcb000 rw-p 00000000 00:00 0 +7f1175bcb000-7f1175bcc000 ---p 00000000 00:00 0 +7f1175bcc000-7f1175bcf000 ---p 00000000 00:00 0 +7f1175bcf000-7f1175ccc000 rw-p 00000000 00:00 0 +7f1175ccc000-7f1175ccf000 ---p 00000000 00:00 0 +7f1175ccf000-7f1175dcd000 rw-p 00000000 00:00 0 +7f1175dcd000-7f1175dd0000 ---p 00000000 00:00 0 +7f1175dd0000-7f1175ece000 rw-p 00000000 00:00 0 +7f1175ece000-7f1175ecf000 ---p 00000000 00:00 0 +7f1175ecf000-7f1175fcf000 rw-p 00000000 00:00 0 +7f1175fcf000-7f1175fd0000 r--s 00002000 08:05 1592426 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.lightclient.jar +7f1175fd0000-7f1175fd8000 r--s 00048000 08:05 1592493 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.plugin.jtag.jar +7f1175fd8000-7f1175fdc000 r--s 00036000 08:05 1592489 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.gui.jar +7f1175fdc000-7f1175fdf000 r--s 00038000 08:05 1592497 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.scripting.jar +7f1175fdf000-7f1175fe5000 r--s 0004a000 08:05 1592464 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.designs.jar +7f1175fe5000-7f1175ff0000 r--s 00184000 08:05 1592457 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.systemconsole.jar +7f1175ff0000-7f1175ff7000 r--s 00056000 08:05 1592484 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.flash.jar +7f1175ff7000-7f1175ff8000 r--s 00004000 08:05 1592366 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.cpexample.jar +7f1175ff8000-7f1175ff9000 r--s 00003000 08:05 1592379 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.tcl.ui.jar +7f1175ff9000-7f1175ffb000 r--s 00006000 08:05 1592390 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.plugin.lwhal.jar +7f1175ffb000-7f1175ffe000 ---p 00000000 00:00 0 +7f1175ffe000-7f11760fc000 rw-p 00000000 00:00 0 +7f11760fc000-7f11762d1000 r--s 033af000 08:05 1458386 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/rt.jar +7f11762d1000-7f11762d2000 r--s 0001f000 08:05 1592377 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.scripting.jar +7f11762d2000-7f11762d5000 r--s 0000b000 08:05 1592364 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.plugin.hal.jar +7f11762d5000-7f11762d9000 r--s 0001c000 08:05 1592386 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.plugin.core.jar +7f11762d9000-7f11762db000 r--s 0000f000 08:05 1592428 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.commandline.jar +7f11762db000-7f11762e8000 r--s 00084000 08:05 1592444 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.editor.jar +7f11762e8000-7f11762ef000 r--s 00063000 08:05 1592466 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.megawizard2.jar +7f11762ef000-7f11762f3000 r--s 00029000 08:05 1592462 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcmodel.components.atlantic.jar +7f11762f3000-7f11762fe000 r--s 00074000 08:05 1592449 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/velocity-dep-1.4.jar +7f11762fe000-7f1176306000 r--s 00051000 08:05 1592482 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/velocity-1.4.jar +7f1176306000-7f117630a000 r--s 0001f000 08:05 1592446 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/explicitlayout.jar +7f117630a000-7f117630c000 r--s 00006000 08:05 1592362 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcfactories.jar +7f117630c000-7f117630e000 r--s 0001a000 08:05 1592431 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopclibrary.jar +7f117630e000-7f117630f000 r--s 00000000 08:05 1592476 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.librarian.jar +7f117630f000-7f1176310000 r--s 00002000 08:05 1592481 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcplatform.jar +7f1176310000-7f1176311000 r--s 00000000 08:05 1592382 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.service.jre.jar +7f1176311000-7f1176312000 r--s 00000000 08:05 1592368 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/xmlbeans-2.2.0.jar +7f1176312000-7f1176316000 r--s 0001e000 08:05 1592475 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.utilities.jar +7f1176316000-7f1176317000 r--s 00003000 08:05 1592392 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcmodel.embeddedsw.jar +7f1176317000-7f1176319000 r--s 00016000 08:05 1592415 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.swinfo.jar +7f1176319000-7f117631d000 r--s 0000d000 08:05 1592480 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.schema.jar +7f117631d000-7f117631e000 r--s 0000b000 08:05 1592363 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.elements.jar +7f117631e000-7f1176323000 r--s 0008b000 08:05 1592463 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.jar +7f1176323000-7f1176326000 r--s 00014000 08:05 1592398 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.app_lib.jar +7f1176326000-7f117632c000 r--s 0007a000 08:05 1592394 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/jacl1.3.2a.jar +7f117632c000-7f1176330000 r--s 0002a000 08:05 1592500 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.tcl.interpreter.jar +7f1176330000-7f1176333000 r--s 00012000 08:05 1592400 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcreport.build.jar +7f1176333000-7f1176335000 r--s 00007000 08:05 1592452 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcreport.jar +7f1176335000-7f1176337000 r--s 0000d000 08:05 1592422 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcmodel.atlantic.jar +7f1176337000-7f1176338000 r--s 0000c000 08:05 1592407 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/commons-logging-1.1.jar +7f1176338000-7f1176339000 r--s 00014000 08:05 1592434 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/javasysmon.jar +7f1176339000-7f117633c000 r--s 0003e000 08:05 1592395 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.utilities.jar +7f117633c000-7f117633e000 r--s 00007000 08:05 1592441 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.qsys.model.common.jar +7f117633e000-7f1176343000 r--s 0000f000 08:05 1592388 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.privateinterfaces.jar +7f1176343000-7f1176346000 r--s 0000b000 08:05 1592391 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.entityinterfaces.jar +7f1176346000-7f1176356000 r--s 000e8000 08:05 1592433 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcmodel.jar +7f1176356000-7f1176357000 r--s 0000b000 08:05 1592496 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcdocument.jar +7f1176357000-7f117635c000 r--s 00054000 08:05 1592510 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcmodel.transforms.jar +7f117635c000-7f1176364000 r--s 00051000 08:05 1592439 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.qsys.ipxact.jar +7f1176364000-7f117636a000 r--s 00031000 08:05 1592456 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/jaxb-core.jar +7f117636a000-7f117636e000 r--s 00015000 08:05 1592479 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/jaxb-api.jar +7f117636e000-7f117637f000 r--s 000d0000 08:05 1592385 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/jaxb-impl.jar +7f117637f000-7f1176387000 r--s 00051000 08:05 1592427 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.qsys.cmsis.jar +7f1176387000-7f117638d000 r--s 00050000 08:05 1592418 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopc.generator.jar +7f117638d000-7f1176394000 r--s 0007c000 08:05 1592442 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopcmodel.components.tclmodule.jar +7f1176394000-7f117639a000 r--s 00045000 08:05 1592389 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/hamcrest-all-1.3.jar +7f117639a000-7f117639d000 r--s 0002a000 08:05 1592419 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.hdlwriter.jar +7f117639d000-7f11763a0000 r--s 0000e000 08:05 1592483 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.minieval2.jar +7f11763a0000-7f11763a3000 r--s 00036000 08:05 1592378 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/org-netbeans-swing-outline.jar +7f11763a3000-7f11763a5000 r--s 00010000 08:05 1592440 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.sopc.qsymbol.jar +7f11763a5000-7f11763a7000 r--s 00000000 08:05 1592374 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.version.jar +7f11763a7000-7f11763a9000 r--s 00018000 08:05 1592414 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.jdbcsqlite.jar +7f11763a9000-7f11763ab000 r--s 0000e000 08:05 1592411 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.infrastructure.jar +7f11763ab000-7f11763b3000 r--s 0004f000 08:05 1592416 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.ui.ientity.jar +7f11763b3000-7f1176bb3000 rw-p 00000000 00:00 0 +7f1176bb3000-7f1176bef000 rw-p 00000000 00:00 0 +7f1176bef000-7f1176da8000 ---p 00000000 00:00 0 +7f1176da8000-7f1176dc6000 rw-p 00000000 00:00 0 +7f1176dc6000-7f1176ea2000 ---p 00000000 00:00 0 +7f1176ea2000-7f1176ede000 rw-p 00000000 00:00 0 +7f1176ede000-7f1177096000 ---p 00000000 00:00 0 +7f1177096000-7f117714f000 rw-p 00000000 00:00 0 +7f117714f000-7f1177457000 ---p 00000000 00:00 0 +7f1177457000-7f1177473000 r-xp 00000000 08:05 1458489 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libzip.so +7f1177473000-7f1177672000 ---p 0001c000 08:05 1458489 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libzip.so +7f1177672000-7f1177673000 rw-p 0001b000 08:05 1458489 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libzip.so +7f1177673000-7f117769d000 r-xp 00000000 08:05 1458460 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libjava.so +7f117769d000-7f117789d000 ---p 0002a000 08:05 1458460 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libjava.so +7f117789d000-7f117789f000 rw-p 0002a000 08:05 1458460 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libjava.so +7f117789f000-7f11778ac000 r-xp 00000000 08:05 1458476 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libverify.so +7f11778ac000-7f1177aac000 ---p 0000d000 08:05 1458476 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libverify.so +7f1177aac000-7f1177aae000 rw-p 0000d000 08:05 1458476 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libverify.so +7f1177aae000-7f1177ab7000 r-xp 00000000 08:05 924029 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 +7f1177ab7000-7f1177cb6000 ---p 00009000 08:05 924029 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 +7f1177cb6000-7f1177cb7000 r--p 00008000 08:05 924029 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 +7f1177cb7000-7f1177cb8000 rw-p 00009000 08:05 924029 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 +7f1177cb8000-7f1178a96000 r--p 00000000 08:05 923493 /usr/lib/locale/locale-archive +7f1178a96000-7f1178a97000 ---p 00000000 00:00 0 +7f1178a97000-7f1179497000 rw-p 00000000 00:00 0 +7f1179497000-7f1179498000 r--s 00000000 08:05 2118542 /home/ed/altera_lite/16.0/quartus/common/librarian/factories/dspb_entities.jar +7f1179498000-7f117949a000 r--s 00003000 08:05 2118545 /home/ed/altera_lite/16.0/quartus/common/librarian/factories/cusp-factory.jar +7f117949a000-7f117949d000 r--s 00013000 08:05 393712 /home/ed/altera_lite/16.0/quartus/dsp_builder/bin64/extlibs/velocity-tools-1.2.jar +7f117949d000-7f11794a8000 r--s 00074000 08:05 393698 /home/ed/altera_lite/16.0/quartus/dsp_builder/bin64/extlibs/velocity-dep-1.4.jar +7f11794a8000-7f11794b1000 r--s 00034000 08:05 393673 /home/ed/altera_lite/16.0/quartus/dsp_builder/bin64/simulink_model.jar +7f11794b1000-7f11794b3000 r--s 0000f000 08:05 393683 /home/ed/altera_lite/16.0/quartus/dsp_builder/bin64/extlibs/JSAP-2.0a.jar +7f11794b3000-7f11794c2000 r--s 00085000 08:05 393667 /home/ed/altera_lite/16.0/quartus/dsp_builder/bin64/dspb.jar +7f11794c2000-7f11794c3000 r--s 00000000 08:05 2118544 /home/ed/altera_lite/16.0/quartus/common/librarian/factories/mdl_factory.jar +7f11794c3000-7f11794c6000 ---p 00000000 00:00 0 +7f11794c6000-7f11795c4000 rw-p 00000000 00:00 0 +7f11795c4000-7f11795c5000 r--s 00006000 08:05 1592454 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.hdlcomponent.jar +7f11795c5000-7f11795cb000 r--s 00048000 08:05 1592410 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/commons-lang3-3.1.jar +7f11795cb000-7f11795f5000 r--s 001e9000 08:05 1592423 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/guava-15.0.jar +7f11795f5000-7f11795f6000 r--s 00005000 08:05 1592361 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.ui.quartus.jar +7f11795f6000-7f11795f8000 r--s 00004000 08:05 1592501 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/mydoggy-res.jar +7f11795f8000-7f11795fa000 r--s 00007000 08:05 1592469 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/mydoggy-api.jar +7f11795fa000-7f117960a000 r--s 000a4000 08:05 1592435 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/mydoggy-plaf.jar +7f117960a000-7f117960c000 r--s 00010000 08:05 1592453 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/miglayout15-swing.jar +7f117960c000-7f1179616000 r--s 00052000 08:05 1592383 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.ui.jar +7f1179616000-7f1179624000 r--s 0007b000 08:05 1592499 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.componenteditor2.jar +7f1179624000-7f1179628000 r--s 00022000 08:05 1592371 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/binding-2.0.6.jar +7f1179628000-7f117962f000 r--s 00094000 08:05 1592396 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/beansbinding-1.2.1.jar +7f117962f000-7f1179632000 r--s 00011000 08:05 1592420 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/basicmodel.jar +7f1179632000-7f1179633000 r--s 00007000 08:05 1592488 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/asm-commons-3.1.jar +7f1179633000-7f1179634000 r--s 0000a000 08:05 1592485 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/asm-3.1.jar +7f1179634000-7f1179638000 r--s 0004a000 08:05 1592443 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/appframework-1.03.jar +7f1179638000-7f1179639000 r--s 00002000 08:05 1592487 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/TableLayout.jar +7f1179639000-7f117963b000 r--s 00009000 08:05 1592467 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/commons-pool.jar +7f117963b000-7f117963e000 r--s 0001f000 08:05 1592408 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/commons-beanutils.jar +7f117963e000-7f117964b000 r--s 0007c000 08:05 1592451 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/commons-collections.jar +7f117964b000-7f117964e000 r--p 00000000 08:05 924933 /usr/lib/x86_64-linux-gnu/libnss_files-2.31.so +7f117964e000-7f1179655000 r-xp 00003000 08:05 924933 /usr/lib/x86_64-linux-gnu/libnss_files-2.31.so +7f1179655000-7f1179657000 r--p 0000a000 08:05 924933 /usr/lib/x86_64-linux-gnu/libnss_files-2.31.so +7f1179657000-7f1179658000 r--p 0000b000 08:05 924933 /usr/lib/x86_64-linux-gnu/libnss_files-2.31.so +7f1179658000-7f1179659000 rw-p 0000c000 08:05 924933 /usr/lib/x86_64-linux-gnu/libnss_files-2.31.so +7f1179659000-7f117965f000 rw-p 00000000 00:00 0 +7f117965f000-7f1179662000 r--p 00000000 08:05 925135 /usr/lib/x86_64-linux-gnu/librt-2.31.so +7f1179662000-7f1179666000 r-xp 00003000 08:05 925135 /usr/lib/x86_64-linux-gnu/librt-2.31.so +7f1179666000-7f1179667000 r--p 00007000 08:05 925135 /usr/lib/x86_64-linux-gnu/librt-2.31.so +7f1179667000-7f1179668000 ---p 00008000 08:05 925135 /usr/lib/x86_64-linux-gnu/librt-2.31.so +7f1179668000-7f1179669000 r--p 00008000 08:05 925135 /usr/lib/x86_64-linux-gnu/librt-2.31.so +7f1179669000-7f117966a000 rw-p 00009000 08:05 925135 /usr/lib/x86_64-linux-gnu/librt-2.31.so +7f117966a000-7f117966d000 r--p 00000000 08:05 924003 /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 +7f117966d000-7f1179673000 r-xp 00003000 08:05 924003 /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 +7f1179673000-7f1179675000 r--p 00009000 08:05 924003 /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 +7f1179675000-7f1179676000 r--p 0000a000 08:05 924003 /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 +7f1179676000-7f1179677000 rw-p 0000b000 08:05 924003 /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 +7f1179677000-7f1179679000 r--s 00008000 08:05 1592405 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/commons-logging.jar +7f1179679000-7f117967c000 r--s 00018000 08:05 1592380 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/commons-digester.jar +7f117967c000-7f1179680000 r--s 00036000 08:05 1592486 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/QuickServer.jar +7f1179680000-7f1179688000 rw-s 00000000 08:05 3415682 /tmp/hsperfdata_ed/13062 +7f1179688000-7f1179689000 ---p 00000000 00:00 0 +7f1179689000-7f117968c000 ---p 00000000 00:00 0 +7f117968c000-7f1179789000 rw-p 00000000 00:00 0 +7f1179789000-7f117978d000 r--p 00000000 08:05 924163 /usr/lib/x86_64-linux-gnu/libbsd.so.0.10.0 +7f117978d000-7f117979c000 r-xp 00004000 08:05 924163 /usr/lib/x86_64-linux-gnu/libbsd.so.0.10.0 +7f117979c000-7f117979f000 r--p 00013000 08:05 924163 /usr/lib/x86_64-linux-gnu/libbsd.so.0.10.0 +7f117979f000-7f11797a0000 ---p 00016000 08:05 924163 /usr/lib/x86_64-linux-gnu/libbsd.so.0.10.0 +7f11797a0000-7f11797a1000 r--p 00016000 08:05 924163 /usr/lib/x86_64-linux-gnu/libbsd.so.0.10.0 +7f11797a1000-7f11797a2000 rw-p 00017000 08:05 924163 /usr/lib/x86_64-linux-gnu/libbsd.so.0.10.0 +7f11797a2000-7f11797a3000 rw-p 00000000 00:00 0 +7f11797a3000-7f11797a5000 r--p 00000000 08:05 924007 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 +7f11797a5000-7f11797a7000 r-xp 00002000 08:05 924007 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 +7f11797a7000-7f11797a9000 r--p 00004000 08:05 924007 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 +7f11797a9000-7f11797aa000 r--p 00005000 08:05 924007 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 +7f11797aa000-7f11797ab000 rw-p 00006000 08:05 924007 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 +7f11797ab000-7f11797ac000 r--p 00000000 08:05 923996 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 +7f11797ac000-7f11797ae000 r-xp 00001000 08:05 923996 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 +7f11797ae000-7f11797af000 r--p 00003000 08:05 923996 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 +7f11797af000-7f11797b0000 r--p 00003000 08:05 923996 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 +7f11797b0000-7f11797b1000 rw-p 00004000 08:05 923996 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 +7f11797b1000-7f11797bc000 r--p 00000000 08:05 925469 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 +7f11797bc000-7f11797d0000 r-xp 0000b000 08:05 925469 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 +7f11797d0000-7f11797d9000 r--p 0001f000 08:05 925469 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 +7f11797d9000-7f11797da000 r--p 00027000 08:05 925469 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 +7f11797da000-7f11797db000 rw-p 00028000 08:05 925469 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 +7f11797db000-7f11797df000 r--p 00000000 08:05 924009 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 +7f11797df000-7f11797ea000 r-xp 00004000 08:05 924009 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 +7f11797ea000-7f11797ee000 r--p 0000f000 08:05 924009 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 +7f11797ee000-7f11797ef000 r--p 00012000 08:05 924009 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 +7f11797ef000-7f11797f0000 rw-p 00013000 08:05 924009 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 +7f11797f0000-7f1179808000 r--p 00000000 08:05 923992 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 +7f1179808000-7f1179893000 r-xp 00018000 08:05 923992 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 +7f1179893000-7f1179927000 r--p 000a3000 08:05 923992 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 +7f1179927000-7f1179928000 ---p 00137000 08:05 923992 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 +7f1179928000-7f1179929000 r--p 00137000 08:05 923992 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 +7f1179929000-7f117992d000 rw-p 00138000 08:05 923992 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 +7f117992d000-7f1179988000 r-xp 00000000 08:05 1458478 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libsplashscreen.so +7f1179988000-7f1179b88000 ---p 0005b000 08:05 1458478 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libsplashscreen.so +7f1179b88000-7f1179b89000 rw-p 0005b000 08:05 1458478 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/libsplashscreen.so +7f1179b89000-7f1179b8c000 rw-p 00000000 00:00 0 +7f1179b8c000-7f1179b9b000 r--p 00000000 08:05 924809 /usr/lib/x86_64-linux-gnu/libm-2.31.so +7f1179b9b000-7f1179c42000 r-xp 0000f000 08:05 924809 /usr/lib/x86_64-linux-gnu/libm-2.31.so +7f1179c42000-7f1179cd9000 r--p 000b6000 08:05 924809 /usr/lib/x86_64-linux-gnu/libm-2.31.so +7f1179cd9000-7f1179cda000 r--p 0014c000 08:05 924809 /usr/lib/x86_64-linux-gnu/libm-2.31.so +7f1179cda000-7f1179cdb000 rw-p 0014d000 08:05 924809 /usr/lib/x86_64-linux-gnu/libm-2.31.so +7f1179cdb000-7f117a8f5000 r-xp 00000000 08:05 1458510 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/server/libjvm.so +7f117a8f5000-7f117aaf4000 ---p 00c1a000 08:05 1458510 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/server/libjvm.so +7f117aaf4000-7f117abbd000 rw-p 00c19000 08:05 1458510 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/server/libjvm.so +7f117abbd000-7f117ac00000 rw-p 00000000 00:00 0 +7f117ac00000-7f117ac25000 r--p 00000000 08:05 924167 /usr/lib/x86_64-linux-gnu/libc-2.31.so +7f117ac25000-7f117ad9d000 r-xp 00025000 08:05 924167 /usr/lib/x86_64-linux-gnu/libc-2.31.so +7f117ad9d000-7f117ade7000 r--p 0019d000 08:05 924167 /usr/lib/x86_64-linux-gnu/libc-2.31.so +7f117ade7000-7f117ade8000 ---p 001e7000 08:05 924167 /usr/lib/x86_64-linux-gnu/libc-2.31.so +7f117ade8000-7f117adeb000 r--p 001e7000 08:05 924167 /usr/lib/x86_64-linux-gnu/libc-2.31.so +7f117adeb000-7f117adee000 rw-p 001ea000 08:05 924167 /usr/lib/x86_64-linux-gnu/libc-2.31.so +7f117adee000-7f117adf2000 rw-p 00000000 00:00 0 +7f117adf2000-7f117adf3000 r--p 00000000 08:05 924302 /usr/lib/x86_64-linux-gnu/libdl-2.31.so +7f117adf3000-7f117adf5000 r-xp 00001000 08:05 924302 /usr/lib/x86_64-linux-gnu/libdl-2.31.so +7f117adf5000-7f117adf6000 r--p 00003000 08:05 924302 /usr/lib/x86_64-linux-gnu/libdl-2.31.so +7f117adf6000-7f117adf7000 r--p 00003000 08:05 924302 /usr/lib/x86_64-linux-gnu/libdl-2.31.so +7f117adf7000-7f117adf8000 rw-p 00004000 08:05 924302 /usr/lib/x86_64-linux-gnu/libdl-2.31.so +7f117adf8000-7f117ae0f000 r-xp 00000000 08:05 1458509 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/jli/libjli.so +7f117ae0f000-7f117b00e000 ---p 00017000 08:05 1458509 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/jli/libjli.so +7f117b00e000-7f117b00f000 rw-p 00016000 08:05 1458509 /home/ed/altera_lite/16.0/quartus/linux64/jre64/lib/amd64/jli/libjli.so +7f117b00f000-7f117b016000 r--p 00000000 08:05 925074 /usr/lib/x86_64-linux-gnu/libpthread-2.31.so +7f117b016000-7f117b027000 r-xp 00007000 08:05 925074 /usr/lib/x86_64-linux-gnu/libpthread-2.31.so +7f117b027000-7f117b02c000 r--p 00018000 08:05 925074 /usr/lib/x86_64-linux-gnu/libpthread-2.31.so +7f117b02c000-7f117b02d000 r--p 0001c000 08:05 925074 /usr/lib/x86_64-linux-gnu/libpthread-2.31.so +7f117b02d000-7f117b02e000 rw-p 0001d000 08:05 925074 /usr/lib/x86_64-linux-gnu/libpthread-2.31.so +7f117b02e000-7f117b032000 rw-p 00000000 00:00 0 +7f117b032000-7f117b033000 r--s 0000d000 08:05 1592397 /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/Nlview.jar +7f117b033000-7f117b034000 rw-p 00000000 00:00 0 +7f117b034000-7f117b036000 r--p 00000000 08:05 924011 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 +7f117b036000-7f117b039000 r-xp 00002000 08:05 924011 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 +7f117b039000-7f117b03a000 r--p 00005000 08:05 924011 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 +7f117b03a000-7f117b03b000 r--p 00005000 08:05 924011 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 +7f117b03b000-7f117b03c000 rw-p 00006000 08:05 924011 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 +7f117b03c000-7f117b043000 r--s 00000000 08:05 1445246 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache +7f117b043000-7f117b045000 rw-p 00000000 00:00 0 +7f117b045000-7f117b046000 r--p 00000000 08:05 923951 /usr/lib/x86_64-linux-gnu/ld-2.31.so +7f117b046000-7f117b069000 r-xp 00001000 08:05 923951 /usr/lib/x86_64-linux-gnu/ld-2.31.so +7f117b069000-7f117b071000 r--p 00024000 08:05 923951 /usr/lib/x86_64-linux-gnu/ld-2.31.so +7f117b071000-7f117b072000 ---p 00000000 00:00 0 +7f117b072000-7f117b073000 r--p 0002c000 08:05 923951 /usr/lib/x86_64-linux-gnu/ld-2.31.so +7f117b073000-7f117b074000 rw-p 0002d000 08:05 923951 /usr/lib/x86_64-linux-gnu/ld-2.31.so +7f117b074000-7f117b075000 rw-p 00000000 00:00 0 +7ffca4b39000-7ffca4b5e000 rw-p 00000000 00:00 0 [stack] +7ffca4be9000-7ffca4bed000 r--p 00000000 00:00 0 [vvar] +7ffca4bed000-7ffca4bef000 r-xp 00000000 00:00 0 [vdso] +ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall] + +VM Arguments: +jvm_args: -Xmx1500M -XX:+UseSerialGC +java_command: com.altera.ipedit.QsysEditorApp --project-dir=/home/ed/stuff/EEE2Rover/DE10_LITE_D8M_VIP_16/ --system-info=DEVICE_FAMILY=MAX 10 --system-info=DEVICE=10M50DAF484C7G --system-info=DEVICE_SPEEDGRADE=7 --host-controller +java_class_path (initial): /home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/Nlview.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/QuickServer.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/TableLayout.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/appframework-1.03.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/asm-3.1.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/asm-commons-3.1.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/basicmodel.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/beansbinding-1.2.1.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/binding-2.0.6.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.componenteditor2.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.app_lib.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.editor.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.elements.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.plugin.core.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.plugin.hal.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.plugin.lwhal.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.schema.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.bsp.scripting.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.commandline.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.cpexample.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.flash.jar:/home/ed/altera_lite/16.0/quartus/sopc_builder/model/lib/com.altera.embeddedsw.laun +Launcher Type: SUN_STANDARD + +Environment Variables: +PATH=/home/ed/altera_lite/16.0/quartus/linux64:/home/ed/altera_lite/16.0/quartus/adm:/home/ed/altera_lite/16.0/quartus/linux64:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ed/altera_lite/16.0/quartus/bin +USERNAME=ed +LD_LIBRARY_PATH=/home/ed/altera_lite/16.0/quartus/linux64:/home/ed/altera_lite/16.0/quartus/linux64: +SHELL=/bin/bash +DISPLAY=:0 + +Signal Handlers: +SIGSEGV: [libjvm.so+0xa2fc90], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 +SIGBUS: [libjvm.so+0xa2fc90], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 +SIGFPE: [libjvm.so+0x89b4b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 +SIGPIPE: SIG_IGN, sa_mask[0]=0x00001000, sa_flags=0x10000000 +SIGXFSZ: SIG_IGN, sa_mask[0]=0x01000000, sa_flags=0x10000000 +SIGILL: [libjvm.so+0x89b4b0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 +SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000 +SIGUSR2: [libjvm.so+0x89cc50], sa_mask[0]=0x00000000, sa_flags=0x10000004 +SIGHUP: [libjvm.so+0x89df00], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 +SIGINT: [libcusp160_parser.so+0x13ba40], sa_mask[0]=0x00000002, sa_flags=0x10000000 +SIGTERM: [libcusp160_parser.so+0x13ba40], sa_mask[0]=0x00004000, sa_flags=0x10000000 +SIGQUIT: [libjvm.so+0x89df00], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 + + +--------------- S Y S T E M --------------- + +OS:DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=20.04 +DISTRIB_CODENAME=focal +DISTRIB_DESCRIPTION="Ubuntu 20.04.2 LTS" + +uname:Linux 5.8.0-44-generic #50~20.04.1-Ubuntu SMP Wed Feb 10 21:07:30 UTC 2021 x86_64 +libc:glibc 2.31 NPTL 2.31 +rlimit: STACK 10240k, CORE 0k, NPROC 15399, NOFILE 1048576, AS infinity +load average:0.33 0.50 0.61 + +/proc/meminfo: +MemTotal: 4000752 kB +MemFree: 437712 kB +MemAvailable: 1568256 kB +Buffers: 29104 kB +Cached: 1302148 kB +SwapCached: 60576 kB +Active: 1954888 kB +Inactive: 904288 kB +Active(anon): 1082424 kB +Inactive(anon): 491656 kB +Active(file): 872464 kB +Inactive(file): 412632 kB +Unevictable: 16 kB +Mlocked: 16 kB +SwapTotal: 1918356 kB +SwapFree: 1028956 kB +Dirty: 43392 kB +Writeback: 0 kB +AnonPages: 1499376 kB +Mapped: 407332 kB +Shmem: 46164 kB +KReclaimable: 100632 kB +Slab: 227144 kB +SReclaimable: 100632 kB +SUnreclaim: 126512 kB +KernelStack: 13460 kB +PageTables: 22580 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 3918732 kB +Committed_AS: 5800320 kB +VmallocTotal: 34359738367 kB +VmallocUsed: 26296 kB +VmallocChunk: 0 kB +Percpu: 110592 kB +HardwareCorrupted: 0 kB +AnonHugePages: 0 kB +ShmemHugePages: 0 kB +ShmemPmdMapped: 0 kB +FileHugePages: 0 kB +FilePmdMapped: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +Hugetlb: 0 kB +DirectMap4k: 395072 kB +DirectMap2M: 3799040 kB +DirectMap1G: 2097152 kB + + +CPU:total 2 (1 cores per cpu, 1 threads per core) family 6 model 94 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, tsc, tscinvbit + +/proc/cpuinfo: +processor : 0 +vendor_id : GenuineIntel +cpu family : 6 +model : 94 +model name : Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz +stepping : 3 +microcode : 0xcc +cpu MHz : 3408.002 +cache size : 8192 KB +physical id : 0 +siblings : 1 +core id : 0 +cpu cores : 1 +apicid : 0 +initial apicid : 0 +fpu : yes +fpu_exception : yes +cpuid level : 22 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat md_clear flush_l1d arch_capabilities +bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds +bogomips : 6816.00 +clflush size : 64 +cache_alignment : 64 +address sizes : 45 bits physical, 48 bits virtual +power management: + +processor : 1 +vendor_id : GenuineIntel +cpu family : 6 +model : 94 +model name : Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz +stepping : 3 +microcode : 0xcc +cpu MHz : 3408.002 +cache size : 8192 KB +physical id : 2 +siblings : 1 +core id : 0 +cpu cores : 1 +apicid : 2 +initial apicid : 2 +fpu : yes +fpu_exception : yes +cpuid level : 22 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat md_clear flush_l1d arch_capabilities +bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds +bogomips : 6816.00 +clflush size : 64 +cache_alignment : 64 +address sizes : 45 bits physical, 48 bits virtual +power management: + + + +Memory: 4k page, physical 4000752k(437712k free), swap 1918356k(1028956k free) + +vm_info: Java HotSpot(TM) 64-Bit Server VM (25.5-b02) for linux-amd64 JRE (1.8.0_05-b13), built on Mar 18 2014 00:29:27 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8) + +time: Sat Mar 27 07:39:22 2021 +elapsed time: 575 seconds + diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/EEE_IMGPROC.v b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/EEE_IMGPROC.v new file mode 100644 index 0000000..5d55bda --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/EEE_IMGPROC.v @@ -0,0 +1,305 @@ +module EEE_IMGPROC( + // global clock & reset + clk, + reset_n, + + // mm slave + s_chipselect, + s_read, + s_write, + s_readdata, + s_writedata, + s_address, + + // stream sink + sink_data, + sink_valid, + sink_ready, + sink_sop, + sink_eop, + + // streaming source + source_data, + source_valid, + source_ready, + source_sop, + source_eop, + + // conduit + mode + +); + + +// global clock & reset +input clk; +input reset_n; + +// mm slave +input s_chipselect; +input s_read; +input s_write; +output reg [31:0] s_readdata; +input [31:0] s_writedata; +input [2:0] s_address; + + +// streaming sink +input [23:0] sink_data; +input sink_valid; +output sink_ready; +input sink_sop; +input sink_eop; + +// streaming source +output [23:0] source_data; +output source_valid; +input source_ready; +output source_sop; +output source_eop; + +// conduit export +input mode; + +//////////////////////////////////////////////////////////////////////// +// +parameter IMAGE_W = 11'd640; +parameter IMAGE_H = 11'd480; +parameter MESSAGE_BUF_MAX = 256; +parameter MSG_INTERVAL = 6; +parameter BB_COL_DEFAULT = 24'h00ff00; + + +wire [7:0] red, green, blue, grey; +wire [7:0] red_out, green_out, blue_out; + +wire sop, eop, in_valid, out_ready; +//////////////////////////////////////////////////////////////////////// + +// Detect red areas +wire red_detect; +assign red_detect = red[7] & ~green[7] & ~blue[7]; + +// Find boundary of cursor box + +// Highlight detected areas +wire [23:0] red_high; +assign grey = green[7:1] + red[7:2] + blue[7:2]; //Grey = green/2 + red/4 + blue/4 +assign red_high = red_detect ? {8'hff, 8'h0, 8'h0} : {grey, grey, grey}; + +// Show bounding box +wire [23:0] new_image; +wire bb_active; +assign bb_active = (x == left) | (x == right) | (y == top) | (y == bottom); +assign new_image = bb_active ? bb_col : red_high; + +// Switch output pixels depending on mode switch +// Don't modify the start-of-packet word - it's a packet discriptor +// Don't modify data in non-video packets +assign {red_out, green_out, blue_out} = (mode & ~sop & packet_video) ? new_image : {red,green,blue}; + +//Count valid pixels to tget the image coordinates. Reset and detect packet type on Start of Packet. +reg [10:0] x, y; +reg packet_video; +always@(posedge clk) begin + if (sop) begin + x <= 11'h0; + y <= 11'h0; + packet_video <= (blue[3:0] == 3'h0); + end + else if (in_valid) begin + if (x == IMAGE_W-1) begin + x <= 11'h0; + y <= y + 11'h1; + end + else begin + x <= x + 11'h1; + end + end +end + +//Find first and last red pixels +reg [10:0] x_min, y_min, x_max, y_max; +always@(posedge clk) begin + if (red_detect & in_valid) begin //Update bounds when the pixel is red + if (x < x_min) x_min <= x; + if (x > x_max) x_max <= x; + if (y < y_min) y_min <= y; + y_max <= y; + end + if (sop & in_valid) begin //Reset bounds on start of packet + x_min <= IMAGE_W-11'h1; + x_max <= 0; + y_min <= IMAGE_H-11'h1; + y_max <= 0; + end +end + +//Process bounding box at the end of the frame. +reg [1:0] msg_state; +reg [10:0] left, right, top, bottom; +reg [7:0] frame_count; +always@(posedge clk) begin + if (eop & in_valid & packet_video) begin //Ignore non-video packets + + //Latch edges for display overlay on next frame + left <= x_min; + right <= x_max; + top <= y_min; + bottom <= y_max; + + + //Start message writer FSM once every MSG_INTERVAL frames, if there is room in the FIFO + frame_count <= frame_count - 1; + + if (frame_count == 0 && msg_buf_size < MESSAGE_BUF_MAX - 3) begin + msg_state <= 2'b01; + frame_count <= MSG_INTERVAL-1; + end + end + + //Cycle through message writer states once started + if (msg_state != 2'b00) msg_state <= msg_state + 2'b01; + +end + +//Generate output messages for CPU +reg [31:0] msg_buf_in; +wire [31:0] msg_buf_out; +reg msg_buf_wr; +wire msg_buf_rd, msg_buf_flush; +wire [7:0] msg_buf_size; +wire msg_buf_empty; + +`define RED_BOX_MSG_ID "RBB" + +always@(*) begin //Write words to FIFO as state machine advances + case(msg_state) + 2'b00: begin + msg_buf_in = 32'b0; + msg_buf_wr = 1'b0; + end + 2'b01: begin + msg_buf_in = `RED_BOX_MSG_ID; //Message ID + msg_buf_wr = 1'b1; + end + 2'b10: begin + msg_buf_in = {5'b0, x_min, 5'b0, y_min}; //Top left coordinate + msg_buf_wr = 1'b1; + end + 2'b11: begin + msg_buf_in = {5'b0, x_max, 5'b0, y_max}; //Bottom right coordinate + msg_buf_wr = 1'b1; + end + endcase +end + + +//Output message FIFO +MSG_FIFO MSG_FIFO_inst ( + .clock (clk), + .data (msg_buf_in), + .rdreq (msg_buf_rd), + .sclr (~reset_n | msg_buf_flush), + .wrreq (msg_buf_wr), + .q (msg_buf_out), + .usedw (msg_buf_size), + .empty (msg_buf_empty) + ); + + +//Streaming registers to buffer video signal +STREAM_REG #(.DATA_WIDTH(26)) in_reg ( + .clk(clk), + .rst_n(reset_n), + .ready_out(sink_ready), + .valid_out(in_valid), + .data_out({red,green,blue,sop,eop}), + .ready_in(out_ready), + .valid_in(sink_valid), + .data_in({sink_data,sink_sop,sink_eop}) +); + +STREAM_REG #(.DATA_WIDTH(26)) out_reg ( + .clk(clk), + .rst_n(reset_n), + .ready_out(out_ready), + .valid_out(source_valid), + .data_out({source_data,source_sop,source_eop}), + .ready_in(source_ready), + .valid_in(in_valid), + .data_in({red_out, green_out, blue_out, sop, eop}) +); + + +///////////////////////////////// +/// Memory-mapped port ///// +///////////////////////////////// + +// Addresses +`define REG_STATUS 0 +`define READ_MSG 1 +`define READ_ID 2 +`define REG_BBCOL 3 + +//Status register bits +// 31:16 - unimplemented +// 15:8 - number of words in message buffer (read only) +// 7:5 - unused +// 4 - flush message buffer (write only - read as 0) +// 3:0 - unused + + +// Process write + +reg [7:0] reg_status; +reg [23:0] bb_col; + +always @ (posedge clk) +begin + if (~reset_n) + begin + reg_status <= 8'b0; + bb_col <= BB_COL_DEFAULT; + end + else begin + if(s_chipselect & s_write) begin + if (s_address == `REG_STATUS) reg_status <= s_writedata[7:0]; + if (s_address == `REG_BBCOL) bb_col <= s_writedata[23:0]; + end + end +end + + +//Flush the message buffer if 1 is written to status register bit 4 +assign msg_buf_flush = (s_chipselect & s_write & (s_address == `REG_STATUS) & s_writedata[4]); + + +// Process reads +reg read_d; //Store the read signal for correct updating of the message buffer + +// Copy the requested word to the output port when there is a read. +always @ (posedge clk) +begin + if (~reset_n) begin + s_readdata <= {32'b0}; + read_d <= 1'b0; + end + + else if (s_chipselect & s_read) begin + if (s_address == `REG_STATUS) s_readdata <= {16'b0,msg_buf_size,reg_status}; + if (s_address == `READ_MSG) s_readdata <= {msg_buf_out}; + if (s_address == `READ_ID) s_readdata <= 32'h1234EEE2; + if (s_address == `REG_BBCOL) s_readdata <= {8'h0, bb_col}; + end + + read_d <= s_read; +end + +//Fetch next word from message buffer after read from READ_MSG +assign msg_buf_rd = s_chipselect & s_read & ~read_d & ~msg_buf_empty & (s_address == `READ_MSG); + + + +endmodule + diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO.qip b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO.qip new file mode 100644 index 0000000..1f6d640 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO.qip @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "FIFO" +set_global_assignment -name IP_TOOL_VERSION "16.0" +set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{MAX 10}" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "MSG_FIFO.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "MSG_FIFO_inst.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "MSG_FIFO_bb.v"] diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO.v b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO.v new file mode 100644 index 0000000..eb1840e --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO.v @@ -0,0 +1,163 @@ +// megafunction wizard: %FIFO% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: scfifo + +// ============================================================ +// File Name: MSG_FIFO.v +// Megafunction Name(s): +// scfifo +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 16.0.2 Build 222 07/20/2016 SJ Standard Edition +// ************************************************************ + + +//Copyright (C) 1991-2016 Altera Corporation. All rights reserved. +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, the Altera Quartus Prime License Agreement, +//the Altera MegaCore Function License Agreement, or other +//applicable license agreement, including, without limitation, +//that your use is for the sole purpose of programming logic +//devices manufactured by Altera and sold by Altera or its +//authorized distributors. Please refer to the applicable +//agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module MSG_FIFO ( + clock, + data, + rdreq, + sclr, + wrreq, + empty, + q, + usedw); + + input clock; + input [31:0] data; + input rdreq; + input sclr; + input wrreq; + output empty; + output [31:0] q; + output [7:0] usedw; + + wire sub_wire0; + wire [31:0] sub_wire1; + wire [7:0] sub_wire2; + wire empty = sub_wire0; + wire [31:0] q = sub_wire1[31:0]; + wire [7:0] usedw = sub_wire2[7:0]; + + scfifo scfifo_component ( + .clock (clock), + .data (data), + .rdreq (rdreq), + .sclr (sclr), + .wrreq (wrreq), + .empty (sub_wire0), + .q (sub_wire1), + .usedw (sub_wire2), + .aclr (), + .almost_empty (), + .almost_full (), + .eccstatus (), + .full ()); + defparam + scfifo_component.add_ram_output_register = "OFF", + scfifo_component.intended_device_family = "MAX 10", + scfifo_component.lpm_numwords = 256, + scfifo_component.lpm_showahead = "ON", + scfifo_component.lpm_type = "scfifo", + scfifo_component.lpm_width = 32, + scfifo_component.lpm_widthu = 8, + scfifo_component.overflow_checking = "ON", + scfifo_component.underflow_checking = "ON", + scfifo_component.use_eab = "ON"; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +// Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +// Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +// Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "1" +// Retrieval info: PRIVATE: Clock NUMERIC "0" +// Retrieval info: PRIVATE: Depth NUMERIC "256" +// Retrieval info: PRIVATE: Empty NUMERIC "1" +// Retrieval info: PRIVATE: Full NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX 10" +// Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +// Retrieval info: PRIVATE: LegacyRREQ NUMERIC "0" +// Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +// Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +// Retrieval info: PRIVATE: Optimize NUMERIC "0" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +// Retrieval info: PRIVATE: UsedW NUMERIC "1" +// Retrieval info: PRIVATE: Width NUMERIC "32" +// Retrieval info: PRIVATE: dc_aclr NUMERIC "0" +// Retrieval info: PRIVATE: diff_widths NUMERIC "0" +// Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +// Retrieval info: PRIVATE: output_width NUMERIC "32" +// Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +// Retrieval info: PRIVATE: rsFull NUMERIC "0" +// Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +// Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +// Retrieval info: PRIVATE: sc_sclr NUMERIC "1" +// Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +// Retrieval info: PRIVATE: wsFull NUMERIC "1" +// Retrieval info: PRIVATE: wsUsedW NUMERIC "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: ADD_RAM_OUTPUT_REGISTER STRING "OFF" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "MAX 10" +// Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "256" +// Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "ON" +// Retrieval info: CONSTANT: LPM_TYPE STRING "scfifo" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +// Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "8" +// Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +// Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +// Retrieval info: CONSTANT: USE_EAB STRING "ON" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL "data[31..0]" +// Retrieval info: USED_PORT: empty 0 0 0 0 OUTPUT NODEFVAL "empty" +// Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL "q[31..0]" +// Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq" +// Retrieval info: USED_PORT: sclr 0 0 0 0 INPUT NODEFVAL "sclr" +// Retrieval info: USED_PORT: usedw 0 0 8 0 OUTPUT NODEFVAL "usedw[7..0]" +// Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +// Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +// Retrieval info: CONNECT: @sclr 0 0 0 0 sclr 0 0 0 0 +// Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +// Retrieval info: CONNECT: empty 0 0 0 0 @empty 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +// Retrieval info: CONNECT: usedw 0 0 8 0 @usedw 0 0 8 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO_inst.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO_bb.v TRUE +// Retrieval info: LIB_FILE: altera_mf diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO_bb.v b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO_bb.v new file mode 100644 index 0000000..5ce7d31 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO_bb.v @@ -0,0 +1,124 @@ +// megafunction wizard: %FIFO%VBB% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: scfifo + +// ============================================================ +// File Name: MSG_FIFO.v +// Megafunction Name(s): +// scfifo +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 16.0.2 Build 222 07/20/2016 SJ Standard Edition +// ************************************************************ + +//Copyright (C) 1991-2016 Altera Corporation. All rights reserved. +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, the Altera Quartus Prime License Agreement, +//the Altera MegaCore Function License Agreement, or other +//applicable license agreement, including, without limitation, +//that your use is for the sole purpose of programming logic +//devices manufactured by Altera and sold by Altera or its +//authorized distributors. Please refer to the applicable +//agreement for further details. + +module MSG_FIFO ( + clock, + data, + rdreq, + sclr, + wrreq, + empty, + q, + usedw); + + input clock; + input [31:0] data; + input rdreq; + input sclr; + input wrreq; + output empty; + output [31:0] q; + output [7:0] usedw; + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +// Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +// Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +// Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "1" +// Retrieval info: PRIVATE: Clock NUMERIC "0" +// Retrieval info: PRIVATE: Depth NUMERIC "256" +// Retrieval info: PRIVATE: Empty NUMERIC "1" +// Retrieval info: PRIVATE: Full NUMERIC "0" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX 10" +// Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +// Retrieval info: PRIVATE: LegacyRREQ NUMERIC "0" +// Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +// Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +// Retrieval info: PRIVATE: Optimize NUMERIC "0" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +// Retrieval info: PRIVATE: UsedW NUMERIC "1" +// Retrieval info: PRIVATE: Width NUMERIC "32" +// Retrieval info: PRIVATE: dc_aclr NUMERIC "0" +// Retrieval info: PRIVATE: diff_widths NUMERIC "0" +// Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +// Retrieval info: PRIVATE: output_width NUMERIC "32" +// Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +// Retrieval info: PRIVATE: rsFull NUMERIC "0" +// Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +// Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +// Retrieval info: PRIVATE: sc_sclr NUMERIC "1" +// Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +// Retrieval info: PRIVATE: wsFull NUMERIC "1" +// Retrieval info: PRIVATE: wsUsedW NUMERIC "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: ADD_RAM_OUTPUT_REGISTER STRING "OFF" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "MAX 10" +// Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "256" +// Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "ON" +// Retrieval info: CONSTANT: LPM_TYPE STRING "scfifo" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "32" +// Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "8" +// Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +// Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +// Retrieval info: CONSTANT: USE_EAB STRING "ON" +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL "data[31..0]" +// Retrieval info: USED_PORT: empty 0 0 0 0 OUTPUT NODEFVAL "empty" +// Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL "q[31..0]" +// Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq" +// Retrieval info: USED_PORT: sclr 0 0 0 0 INPUT NODEFVAL "sclr" +// Retrieval info: USED_PORT: usedw 0 0 8 0 OUTPUT NODEFVAL "usedw[7..0]" +// Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 32 0 data 0 0 32 0 +// Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +// Retrieval info: CONNECT: @sclr 0 0 0 0 sclr 0 0 0 0 +// Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +// Retrieval info: CONNECT: empty 0 0 0 0 @empty 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 32 0 @q 0 0 32 0 +// Retrieval info: CONNECT: usedw 0 0 8 0 @usedw 0 0 8 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO_inst.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL MSG_FIFO_bb.v TRUE +// Retrieval info: LIB_FILE: altera_mf diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO_inst.v b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO_inst.v new file mode 100644 index 0000000..23d5bb3 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/MSG_FIFO_inst.v @@ -0,0 +1,10 @@ +MSG_FIFO MSG_FIFO_inst ( + .clock ( clock_sig ), + .data ( data_sig ), + .rdreq ( rdreq_sig ), + .sclr ( sclr_sig ), + .wrreq ( wrreq_sig ), + .empty ( empty_sig ), + .q ( q_sig ), + .usedw ( usedw_sig ) + ); diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG.v b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG.v new file mode 100644 index 0000000..9ae0f01 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG.v @@ -0,0 +1,39 @@ +module STREAM_REG(ready_out, valid_out, data_out, ready_in, valid_in, data_in, clk, rst_n); + + // Input Port(s) + input clk, rst_n; + input ready_in, valid_in; + input [DATA_WIDTH-1:0] data_in; + + // Output Port(s) + output ready_out, valid_out; + output reg [DATA_WIDTH-1:0] data_out; + + // Parameter Declaration(s) + parameter DATA_WIDTH = 26; + + reg data_valid, ready_in_d; + + always@(posedge clk) begin + if (~rst_n) begin + data_out <= 1'b0; + data_valid <= 0; + ready_in_d <= 0; + end + else begin + ready_in_d <= ready_in; + if (valid_in & (~data_valid | ready_in_d)) begin + data_out <= data_in; + data_valid <= 1; + end + else if (ready_in_d) begin + data_valid <= 0; + end + end + end + + assign ready_out = (~data_valid & ~valid_in) | ready_in; + assign valid_out = ready_in_d & data_valid; + + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG_TEST.v b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG_TEST.v new file mode 100644 index 0000000..247afde --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG_TEST.v @@ -0,0 +1,51 @@ +module STREAM_REG_TEST ( + input clk, + input reset_n, + input en_src, + input snk_ready, + output reg [7:0] src_data, + output [7:0] snk_data, + output reg [7:0] data_out, + output reg src_valid, + output reg_valid, + output reg_ready + ); + +always@(posedge clk) begin + if (~reset_n) begin + src_data <= 8'h0; + src_valid <= 1'b0; + end + else begin + src_valid <= 1'b0; + if (en_src & reg_ready) begin + src_data = src_data + 8'h1; + src_valid <= 1'b1; + end + end +end + + + STREAM_REG #(.DATA_WIDTH(8)) SR0 ( + .clk(clk), + .rst_n(reset_n), + .ready_out(reg_ready), + .valid_out(reg_valid), + .data_out(snk_data), + .ready_in(snk_ready), + .valid_in(src_valid), + .data_in(src_data) + ); + +always@(posedge clk) begin + if (~reset_n) begin + data_out <= 8'h0; + end + else begin + if (reg_valid) begin + data_out <= snk_data; + end + end +end + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG_TEST.vwf b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG_TEST.vwf new file mode 100644 index 0000000..4fafe9a --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/STREAM_REG_TEST.vwf @@ -0,0 +1,1010 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ + +/* +Copyright (C) 1991-2016 Altera Corporation. All rights reserved. +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, the Altera Quartus Prime License Agreement, +the Altera MegaCore Function License Agreement, or other +applicable license agreement, including, without limitation, +that your use is for the sole purpose of programming logic +devices manufactured by Altera and sold by Altera or its +authorized distributors. Please refer to the applicable +agreement for further details. +*/ + +HEADER +{ + VERSION = 1; + TIME_UNIT = ns; + DATA_OFFSET = 0.0; + DATA_DURATION = 300.0; + SIMULATION_TIME = 0.0; + GRID_PHASE = 0.0; + GRID_PERIOD = 10.0; + GRID_DUTY_CYCLE = 50; +} + +SIGNAL("clk") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = INPUT; + PARENT = ""; +} + +SIGNAL("data_out") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = BUS; + WIDTH = 8; + LSB_INDEX = 0; + DIRECTION = OUTPUT; + PARENT = ""; +} + +SIGNAL("data_out[7]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "data_out"; +} + +SIGNAL("data_out[6]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "data_out"; +} + +SIGNAL("data_out[5]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "data_out"; +} + +SIGNAL("data_out[4]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "data_out"; +} + +SIGNAL("data_out[3]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "data_out"; +} + +SIGNAL("data_out[2]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "data_out"; +} + +SIGNAL("data_out[1]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "data_out"; +} + +SIGNAL("data_out[0]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "data_out"; +} + +SIGNAL("en_src") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = INPUT; + PARENT = ""; +} + +SIGNAL("reg_ready") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = ""; +} + +SIGNAL("reg_valid") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = ""; +} + +SIGNAL("reset_n") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = INPUT; + PARENT = ""; +} + +SIGNAL("snk_data") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = BUS; + WIDTH = 8; + LSB_INDEX = 0; + DIRECTION = OUTPUT; + PARENT = ""; +} + +SIGNAL("snk_data[7]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "snk_data"; +} + +SIGNAL("snk_data[6]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "snk_data"; +} + +SIGNAL("snk_data[5]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "snk_data"; +} + +SIGNAL("snk_data[4]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "snk_data"; +} + +SIGNAL("snk_data[3]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "snk_data"; +} + +SIGNAL("snk_data[2]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "snk_data"; +} + +SIGNAL("snk_data[1]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "snk_data"; +} + +SIGNAL("snk_data[0]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "snk_data"; +} + +SIGNAL("snk_ready") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = INPUT; + PARENT = ""; +} + +SIGNAL("src_data") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = BUS; + WIDTH = 8; + LSB_INDEX = 0; + DIRECTION = OUTPUT; + PARENT = ""; +} + +SIGNAL("src_data[7]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "src_data"; +} + +SIGNAL("src_data[6]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "src_data"; +} + +SIGNAL("src_data[5]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "src_data"; +} + +SIGNAL("src_data[4]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "src_data"; +} + +SIGNAL("src_data[3]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "src_data"; +} + +SIGNAL("src_data[2]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "src_data"; +} + +SIGNAL("src_data[1]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "src_data"; +} + +SIGNAL("src_data[0]") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = "src_data"; +} + +SIGNAL("src_valid") +{ + VALUE_TYPE = NINE_LEVEL_BIT; + SIGNAL_TYPE = SINGLE_BIT; + WIDTH = 1; + LSB_INDEX = -1; + DIRECTION = OUTPUT; + PARENT = ""; +} + +TRANSITION_LIST("clk") +{ + NODE + { + REPEAT = 1; + LEVEL 1 FOR 4.0; + NODE + { + REPEAT = 29; + LEVEL 0 FOR 5.0; + LEVEL 1 FOR 5.0; + } + LEVEL 0 FOR 5.0; + LEVEL 1 FOR 1.0; + } +} + +TRANSITION_LIST("data_out[7]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("data_out[6]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("data_out[5]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("data_out[4]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("data_out[3]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("data_out[2]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("data_out[1]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("data_out[0]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("en_src") +{ + NODE + { + REPEAT = 1; + LEVEL 1 FOR 70.0; + LEVEL 0 FOR 40.0; + LEVEL 1 FOR 30.0; + LEVEL 0 FOR 60.0; + LEVEL 1 FOR 100.0; + } +} + +TRANSITION_LIST("reg_ready") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("reg_valid") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("reset_n") +{ + NODE + { + REPEAT = 1; + LEVEL 0 FOR 10.0; + LEVEL 1 FOR 290.0; + } +} + +TRANSITION_LIST("snk_data[7]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("snk_data[6]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("snk_data[5]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("snk_data[4]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("snk_data[3]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("snk_data[2]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("snk_data[1]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("snk_data[0]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("snk_ready") +{ + NODE + { + REPEAT = 1; + LEVEL 0 FOR 20.0; + LEVEL 1 FOR 40.0; + LEVEL 0 FOR 40.0; + LEVEL 1 FOR 60.0; + LEVEL 0 FOR 140.0; + } +} + +TRANSITION_LIST("src_data[7]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("src_data[6]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("src_data[5]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("src_data[4]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("src_data[3]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("src_data[2]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("src_data[1]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("src_data[0]") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +TRANSITION_LIST("src_valid") +{ + NODE + { + REPEAT = 1; + LEVEL X FOR 300.0; + } +} + +DISPLAY_LINE +{ + CHANNEL = "clk"; + EXPAND_STATUS = COLLAPSED; + RADIX = Binary; + TREE_INDEX = 0; + TREE_LEVEL = 0; +} + +DISPLAY_LINE +{ + CHANNEL = "data_out"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 1; + TREE_LEVEL = 0; + CHILDREN = 2, 3, 4, 5, 6, 7, 8, 9; +} + +DISPLAY_LINE +{ + CHANNEL = "data_out[7]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 2; + TREE_LEVEL = 1; + PARENT = 1; +} + +DISPLAY_LINE +{ + CHANNEL = "data_out[6]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 3; + TREE_LEVEL = 1; + PARENT = 1; +} + +DISPLAY_LINE +{ + CHANNEL = "data_out[5]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 4; + TREE_LEVEL = 1; + PARENT = 1; +} + +DISPLAY_LINE +{ + CHANNEL = "data_out[4]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 5; + TREE_LEVEL = 1; + PARENT = 1; +} + +DISPLAY_LINE +{ + CHANNEL = "data_out[3]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 6; + TREE_LEVEL = 1; + PARENT = 1; +} + +DISPLAY_LINE +{ + CHANNEL = "data_out[2]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 7; + TREE_LEVEL = 1; + PARENT = 1; +} + +DISPLAY_LINE +{ + CHANNEL = "data_out[1]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 8; + TREE_LEVEL = 1; + PARENT = 1; +} + +DISPLAY_LINE +{ + CHANNEL = "data_out[0]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 9; + TREE_LEVEL = 1; + PARENT = 1; +} + +DISPLAY_LINE +{ + CHANNEL = "en_src"; + EXPAND_STATUS = COLLAPSED; + RADIX = Binary; + TREE_INDEX = 10; + TREE_LEVEL = 0; +} + +DISPLAY_LINE +{ + CHANNEL = "reg_ready"; + EXPAND_STATUS = COLLAPSED; + RADIX = Binary; + TREE_INDEX = 11; + TREE_LEVEL = 0; +} + +DISPLAY_LINE +{ + CHANNEL = "reg_valid"; + EXPAND_STATUS = COLLAPSED; + RADIX = Binary; + TREE_INDEX = 12; + TREE_LEVEL = 0; +} + +DISPLAY_LINE +{ + CHANNEL = "reset_n"; + EXPAND_STATUS = COLLAPSED; + RADIX = Binary; + TREE_INDEX = 13; + TREE_LEVEL = 0; +} + +DISPLAY_LINE +{ + CHANNEL = "snk_data"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 14; + TREE_LEVEL = 0; + CHILDREN = 15, 16, 17, 18, 19, 20, 21, 22; +} + +DISPLAY_LINE +{ + CHANNEL = "snk_data[7]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 15; + TREE_LEVEL = 1; + PARENT = 14; +} + +DISPLAY_LINE +{ + CHANNEL = "snk_data[6]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 16; + TREE_LEVEL = 1; + PARENT = 14; +} + +DISPLAY_LINE +{ + CHANNEL = "snk_data[5]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 17; + TREE_LEVEL = 1; + PARENT = 14; +} + +DISPLAY_LINE +{ + CHANNEL = "snk_data[4]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 18; + TREE_LEVEL = 1; + PARENT = 14; +} + +DISPLAY_LINE +{ + CHANNEL = "snk_data[3]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 19; + TREE_LEVEL = 1; + PARENT = 14; +} + +DISPLAY_LINE +{ + CHANNEL = "snk_data[2]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 20; + TREE_LEVEL = 1; + PARENT = 14; +} + +DISPLAY_LINE +{ + CHANNEL = "snk_data[1]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 21; + TREE_LEVEL = 1; + PARENT = 14; +} + +DISPLAY_LINE +{ + CHANNEL = "snk_data[0]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 22; + TREE_LEVEL = 1; + PARENT = 14; +} + +DISPLAY_LINE +{ + CHANNEL = "snk_ready"; + EXPAND_STATUS = COLLAPSED; + RADIX = Binary; + TREE_INDEX = 23; + TREE_LEVEL = 0; +} + +DISPLAY_LINE +{ + CHANNEL = "src_data"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 24; + TREE_LEVEL = 0; + CHILDREN = 25, 26, 27, 28, 29, 30, 31, 32; +} + +DISPLAY_LINE +{ + CHANNEL = "src_data[7]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 25; + TREE_LEVEL = 1; + PARENT = 24; +} + +DISPLAY_LINE +{ + CHANNEL = "src_data[6]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 26; + TREE_LEVEL = 1; + PARENT = 24; +} + +DISPLAY_LINE +{ + CHANNEL = "src_data[5]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 27; + TREE_LEVEL = 1; + PARENT = 24; +} + +DISPLAY_LINE +{ + CHANNEL = "src_data[4]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 28; + TREE_LEVEL = 1; + PARENT = 24; +} + +DISPLAY_LINE +{ + CHANNEL = "src_data[3]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 29; + TREE_LEVEL = 1; + PARENT = 24; +} + +DISPLAY_LINE +{ + CHANNEL = "src_data[2]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 30; + TREE_LEVEL = 1; + PARENT = 24; +} + +DISPLAY_LINE +{ + CHANNEL = "src_data[1]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 31; + TREE_LEVEL = 1; + PARENT = 24; +} + +DISPLAY_LINE +{ + CHANNEL = "src_data[0]"; + EXPAND_STATUS = COLLAPSED; + RADIX = Hexadecimal; + TREE_INDEX = 32; + TREE_LEVEL = 1; + PARENT = 24; +} + +DISPLAY_LINE +{ + CHANNEL = "src_valid"; + EXPAND_STATUS = COLLAPSED; + RADIX = Binary; + TREE_INDEX = 33; + TREE_LEVEL = 0; +} + +TIME_BAR +{ + TIME = 0; + MASTER = TRUE; +} +; diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/greybox_tmp/cbx_args.txt b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/greybox_tmp/cbx_args.txt new file mode 100644 index 0000000..e1e5bce --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/EEE_IMGPROC/greybox_tmp/cbx_args.txt @@ -0,0 +1,18 @@ +ADD_RAM_OUTPUT_REGISTER=OFF +INTENDED_DEVICE_FAMILY="MAX 10" +LPM_NUMWORDS=256 +LPM_SHOWAHEAD=OFF +LPM_TYPE=scfifo +LPM_WIDTH=32 +LPM_WIDTHU=8 +OVERFLOW_CHECKING=ON +UNDERFLOW_CHECKING=ON +USE_EAB=ON +DEVICE_FAMILY="MAX 10" +clock +data +rdreq +sclr +wrreq +q +usedw diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/F_VCM.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/F_VCM.v new file mode 100644 index 0000000..7c6a690 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/F_VCM.v @@ -0,0 +1,56 @@ +module F_VCM ( +input RESET_n , +input CLK , +input [ 7:0] SCAL, +input [ 7:0] SCAL_F, +output [10:0]STEP, +input [9:0] STEP_UP , +output reg V_C , +output reg VCM_END , +output reg GO_F + + +) ; +reg [10:0]STEP_i; +reg [10:0]STEP_f; + +//parameter SCAL = 8'd10 ; +//parameter SCAL_F = 8'd1 ; + +//---step out +assign STEP = ( !V_C )? STEP_i :STEP_f ; + +//---------------------------------------initial setting +reg [9:0] STP_I ; +always @( negedge RESET_n or posedge CLK ) + begin + if (!RESET_n ) begin + V_C <=0 ; + STEP_i <= 0; + end + else begin + if (STEP_i > 11'h3f0 ) + V_C <=1 ; + else STEP_i <= STEP_i + SCAL ; //10 + end + end + + +//----------------------------------------fine-adjustment +always @( negedge V_C or posedge CLK ) + begin + if (!V_C ) begin + STEP_f <= STEP_UP- SCAL/2; + VCM_END <= 0; + GO_F <=0; + end + else begin + GO_F <=1; + if (STEP_f > STEP_UP + SCAL/2 ) + VCM_END <=1 ; + else STEP_f <= STEP_f + SCAL_F; //1 + end + end + +endmodule + \ No newline at end of file diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/I2C_VCM_Config.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/I2C_VCM_Config.v new file mode 100644 index 0000000..e926681 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/I2C_VCM_Config.v @@ -0,0 +1,160 @@ +// -------------------------------------------------------------------- +// Copyright (c) 2007 by Terasic Technologies Inc. +// -------------------------------------------------------------------- +// +// Permission: +// +// Terasic grants permission to use and modify this code for use +// in synthesis for all Terasic Development Boards and Altera Development +// Kits made by Terasic. Other use of this code, including the selling +// ,duplication, or modification of any portion is strictly prohibited. +// +// Disclaimer: +// +// This VHDL/Verilog or C/C++ source code is intended as a design reference +// which illustrates how these types of functions can be implemented. +// It is the user's responsibility to verify their design for +// consistency and functionality through the use of formal +// verification methods. Terasic provides no warranty regarding the use +// or functionality of this code. +// +// -------------------------------------------------------------------- +// +// Terasic Technologies Inc +// 356 Fu-Shin E. Rd Sec. 1. JhuBei City, +// HsinChu County, Taiwan +// 302 +// +// web: http://www.terasic.com/ +// email: support@terasic.com +// + + +module I2C_VCM_Config ( // Host Side + iCLK, + iRST_N, + VCM_DATA, + ENABLE, + END, + + // I2C Side + I2C_SCLK, + I2C_SDAT + ); + +// Host Side +input iCLK; +input iRST_N; +input [15:0] VCM_DATA; +input ENABLE; +output END; + +// I2C Side +inout I2C_SCLK; +inout I2C_SDAT; + + + +// Internal Registers/Wires +reg [15:0] mI2C_CLK_DIV; +reg [23:0] mI2C_DATA; +reg mI2C_CTRL_CLK; +reg mI2C_GO; +wire mI2C_END; +wire mI2C_ACK; +reg [3:0] mSetup_ST; +wire END; + + +///////////////////////////////////////////////////////////////////// + +// Clock Setting +parameter CLK_Freq = 50_000_000; // 50 MHz +parameter I2C_Freq = 100_000; // 100 KHz + +///////////////////// I2C Control Clock //////////////////////// +always@(posedge iCLK or negedge iRST_N) +begin + if(!iRST_N) + begin + mI2C_CTRL_CLK <= 0; + mI2C_CLK_DIV <= 0; + end + else + begin + if( mI2C_CLK_DIV < (CLK_Freq/I2C_Freq) ) + mI2C_CLK_DIV <= mI2C_CLK_DIV+1; + else + begin + mI2C_CLK_DIV <= 0; + mI2C_CTRL_CLK <= ~mI2C_CTRL_CLK; + end + end +end +//////////////////////////////////////////////////////////////////// +I2C_VCM_Controller u0( + .CLOCK(mI2C_CTRL_CLK), // Controller Work Clock + .I2C_SCLK(I2C_SCLK), // I2C CLOCK + .I2C_SDAT(I2C_SDAT), // I2C DATA + .I2C_DATA(mI2C_DATA), // DATA:[SLAVE_ADDR,SUB_ADDR,DATA] + .GO(mI2C_GO), // GO transfor + .END(mI2C_END), // END transfor + .ACK(mI2C_ACK), // ACK + .RESET(iRST_N) + ); +//////////////////////////////////////////////////////////////////// +////////////////////// Config Control //////////////////////////// +reg f_trig; +reg f_trig_clear; + +always@(posedge mI2C_CTRL_CLK or negedge iRST_N) +begin + if(!iRST_N) f_trig <= 1'b1; + else if(f_trig_clear) f_trig <= 1'b0; +end + + +always@(posedge mI2C_CTRL_CLK ) +begin + case(mSetup_ST) + 0: begin + mI2C_DATA <= {8'h18,VCM_DATA}; // 0x18 is VCM149C's I2C slave Addr + if(ENABLE) begin + mSetup_ST <= 1; + mI2C_GO <= 1; + end + else begin + mSetup_ST <= 0; + mI2C_GO <= 0; + end + f_trig_clear <= 1'b0; + end + 1: begin + if(mI2C_END) + begin + if(!mI2C_ACK) + mSetup_ST <= 2; + else + mSetup_ST <= 0; + mI2C_GO <= 0; + end + f_trig_clear <= 1'b0; + end + 2: begin + if(f_trig) begin + mSetup_ST <= 0; + f_trig_clear <= 1'b1; + end + else begin + mSetup_ST <= 2; + f_trig_clear <= 1'b0; + end + end + default: mSetup_ST <= 0; + endcase +end + + +assign END = (mSetup_ST==2); + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/I2C_VCM_Controller.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/I2C_VCM_Controller.v new file mode 100644 index 0000000..4b7649c --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/I2C_VCM_Controller.v @@ -0,0 +1,157 @@ +// -------------------------------------------------------------------- +// Copyright (c) 2005 by Terasic Technologies Inc. +// -------------------------------------------------------------------- +// +// Permission: +// +// Terasic grants permission to use and modify this code for use +// in synthesis for all Terasic Development Boards and Altrea Development +// Kits made by Terasic. Other use of this code, including the selling +// ,duplication, or modification of any portion is strictly prohibited. +// +// Disclaimer: +// +// This VHDL or Verilog source code is intended as a design reference +// which illustrates how these types of functions can be implemented. +// It is the user's responsibility to verify their design for +// consistency and functionality through the use of formal +// verification methods. Terasic provides no warranty regarding the use +// or functionality of this code. +// +// -------------------------------------------------------------------- +// +// Terasic Technologies Inc +// 356 Fu-Shin E. Rd Sec. 1. JhuBei City, +// HsinChu County, Taiwan +// 302 +// +// web: http://www.terasic.com/ +// email: support@terasic.com +// +// -------------------------------------------------------------------- +// +// Major Functions:i2c controller +// +// -------------------------------------------------------------------- +// +// Revision History : +// -------------------------------------------------------------------- +// Ver :| Author :| Mod. Date :| Changes Made: +// V1.0 :| Joe Yang :| 05/07/10 :| Initial Revision +// -------------------------------------------------------------------- + +// Modified for ADDREES + 16 bit data for VCM149C + +module I2C_VCM_Controller ( + CLOCK, + I2C_SCLK,//I2C CLOCK + I2C_SDAT,//I2C DATA + I2C_DATA,//DATA:[SLAVE_ADDR,DATA16] + GO, //GO transfor + END, //END transfor + ACK, //ACK + RESET +); + input CLOCK; + input [23:0]I2C_DATA; + input GO; + input RESET; + inout I2C_SDAT; + inout I2C_SCLK; + output END; + output ACK; + + +reg SDO; +reg SCLK; +reg END; +reg [23:0]SD; +reg [6:0]SD_COUNTER; + +wire wI2C_SCLK=SCLK | ( ((SD_COUNTER >= 4) & (SD_COUNTER <=30))? ~CLOCK :0 ); +wire I2C_SCLK=wI2C_SCLK?1'bz:0; // inout SCLK +wire I2C_SDAT=SDO?1'bz:0 ; + +reg ACK1,ACK2,ACK3,ACK4; +wire ACK=ACK1 | ACK2 |ACK3 |ACK4; + +//--I2C COUNTER +always @(negedge RESET or posedge CLOCK ) begin +if (!RESET) SD_COUNTER=6'b111111; +else begin +if (GO==0) + SD_COUNTER=0; + else + if (SD_COUNTER < 32) SD_COUNTER=SD_COUNTER+1; +end +end +//---- + +always @(negedge RESET or posedge CLOCK ) begin +if (!RESET) begin SCLK=1;SDO=1; ACK1=0;ACK2=0;ACK3=0;ACK4=0; END=1; end +else +case (SD_COUNTER) + 6'd0 : begin ACK1=0 ;ACK2=0 ;ACK3=0 ;ACK4=0 ; END=0; SDO=1; SCLK=1;end + //start + 6'd1 : begin SD=I2C_DATA;SDO=0;end + 6'd2 : SCLK=0; + //SLAVE ADDR + 6'd3 : SDO=SD[23]; + 6'd4 : SDO=SD[22]; + 6'd5 : SDO=SD[21]; + 6'd6 : SDO=SD[20]; + 6'd7 : SDO=SD[19]; + 6'd8 : SDO=SD[18]; + 6'd9 : SDO=SD[17]; + 6'd10 : SDO=SD[16]; + 6'd11 : SDO=1'b1;//ACK + + //MSB + 6'd12 : begin SDO=SD[15]; ACK1=I2C_SDAT; end + 6'd13 : SDO=SD[14]; + 6'd14 : SDO=SD[13]; + 6'd15 : SDO=SD[12]; + 6'd16 : SDO=SD[11]; + 6'd17 : SDO=SD[10]; + 6'd18 : SDO=SD[9]; + 6'd19 : SDO=SD[8]; + 6'd20 : SDO=1'b1;//ACK + + //LSB + 6'd21 : begin SDO=SD[7]; ACK2=I2C_SDAT; end + 6'd22 : SDO=SD[6]; + 6'd23 : SDO=SD[5]; + 6'd24 : SDO=SD[4]; + 6'd25 : SDO=SD[3]; + 6'd26 : SDO=SD[2]; + 6'd27 : SDO=SD[1]; + 6'd28 : SDO=SD[0]; + 6'd29 : SDO=1'b1;//ACK + + //stop + 6'd30 : begin SDO=1'b0; SCLK=1'b0; ACK4=I2C_SDAT; end + 6'd31 : SCLK=1'b1; + 6'd32 : begin SDO=1'b1; END=1; end + +// //DATA +// 6'd30 : begin SDO=SD[7]; ACK3=I2C_SDAT; end +// 6'd31 : SDO=SD[6]; +// 6'd32 : SDO=SD[5]; +// 6'd33 : SDO=SD[4]; +// 6'd34 : SDO=SD[3]; +// 6'd35 : SDO=SD[2]; +// 6'd36 : SDO=SD[1]; +// 6'd37 : SDO=SD[0]; +// 6'd38 : SDO=1'b1;//ACK + +// //stop +// 6'd39 : begin SDO=1'b0; SCLK=1'b0; ACK4=I2C_SDAT; end +// 6'd40 : SCLK=1'b1; +// 6'd41 : begin SDO=1'b1; END=1; end + +endcase +end + + + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/TERASIC_AUTO_FOCUS.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/TERASIC_AUTO_FOCUS.v new file mode 100644 index 0000000..db84560 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/TERASIC_AUTO_FOCUS.v @@ -0,0 +1,298 @@ +// focus function coding by Joe +// focus ip packaged by Dee + +module TERASIC_AUTO_FOCUS( + // global clock & reset + clk, + reset_n, + + // mm slave + s_chipselect, + s_read, + s_write, + s_readdata, + s_writedata, + s_address, + + // stream sink + sink_data, + sink_valid, + sink_ready, + sink_sop, + sink_eop, + + // streaming source + source_data, + source_valid, + source_ready, + source_sop, + source_eop, + + // conduit // i2c master + clk50, + vcm_i2c_scl, + vcm_i2c_sda + +); + + +// global clock & reset +input clk; +input reset_n; + +// mm slave +input s_chipselect; +input s_read; +input s_write; +output reg [31:0] s_readdata; +input [31:0] s_writedata; +input [2:0] s_address; + + +// streaming sink +input [23:0] sink_data; +input sink_valid; +output sink_ready; +input sink_sop; +input sink_eop; + +// streaming source +output [23:0] source_data; +output source_valid; +input source_ready; +output source_sop; +output source_eop; + +// conduit export +input clk50; +inout vcm_i2c_scl; +inout vcm_i2c_sda; + +//////////////////////////////////////////////////////////////////////// +// +parameter VIDEO_W = 800, + VIDEO_H = 480; + +localparam FOCUS_FULL_VIDEO_MODE = 1'b0, + FOCUS_WINDOW_VIDEO_MODE = 1'b1; + +reg process_start /*synthesis noprune*/; +reg focus_mode /*synthesis noprune*/; + +reg [11:0] focus_active_w /*synthesis noprune*/; +reg [11:0] focus_active_h /*synthesis noprune*/; +reg [11:0] focus_active_x_start /*synthesis noprune*/; +reg [11:0] focus_active_y_start /*synthesis noprune*/; + +reg [11:0] x_cnt /*synthesis noprune*/; +reg [11:0] y_cnt /*synthesis noprune*/; +reg [7:0] scal; +reg [7:0] scal_f; +reg [7:0] th; +//////////////////////////////////////////////////////////////////////// + +// coding + +// connnect sink & source direct +assign source_data = (vcm_en & focus_mode & focus_window_border )?{8'h7f, 8'h7f, 8'h0}:sink_data; +assign source_valid = sink_valid; +assign sink_ready = source_ready; +assign source_sop = sink_sop; +assign source_eop = sink_eop; + + + +///////////////////////////////// +/// command from mm master ///// +///////////////////////////////// + +// write +`define REG_GO 0 +`define REG_CTRL 1 +`define REG_FOCUS_W 2 +`define REG_FOCUS_H 3 +`define REG_FOCUS_X_START 4 +`define REG_FOCUS_Y_START 5 +`define REG_SCAL 6 // scan 0 -> 1023 , step: SCAL , to find STEP_UP + // scan STEP_UP + - SCAL/2 , step: SCAL_F +`define REG_TH 7 + +// read +`define REG_STATUS 0 +//`define REG_SUM 1 + + +// mm mater write +always @ (posedge clk) +begin + if (~reset_n) + begin + process_start <= 1'b0; + focus_mode <= FOCUS_FULL_VIDEO_MODE; + + focus_active_w <= 12'd200; + focus_active_h <= 12'd120; + focus_active_x_start <= 12'd300; + focus_active_y_start <= 12'd180; + + scal <= 8'd10; + scal_f <= 8'd1; + + th <= 8'd5; + end + else begin + if(s_chipselect & s_write) begin + if (s_address == `REG_GO) process_start <= s_writedata[0]; + else if (s_address == `REG_CTRL) focus_mode <= s_writedata[0];// FOCUS_WINDOW_VIDEO_MODE settings if not full-screen mode + else if (s_address == `REG_FOCUS_W) focus_active_w <= s_writedata[11:0]; + else if (s_address == `REG_FOCUS_H) focus_active_h <= s_writedata[11:0]; + else if (s_address == `REG_FOCUS_X_START) focus_active_x_start <= s_writedata[11:0]; + else if (s_address == `REG_FOCUS_Y_START) focus_active_y_start <= s_writedata[11:0]; + else if (s_address == `REG_SCAL) begin scal <= s_writedata[15:8]; + scal_f <= s_writedata[7:0]; + end + else if (s_address == `REG_TH) th <= s_writedata[7:0]; + end + end +end + + + +// mm mater read +always @ (posedge clk) +begin + if (~reset_n) + s_readdata <= {16'b0,1'b1,15'b0}; + else if (s_chipselect & s_read) + begin + if (s_address == `REG_STATUS) s_readdata <= {16'b0,status}; +// else if (s_address == `REG_SUM) s_readdata <= sum; + end +end + +///////////////////////////////// +// remember previus 'process_start' status +reg pre_process_start; +always @ (posedge clk or negedge reset_n) + if (~reset_n) pre_process_start <= 1'b1; + else pre_process_start <= process_start; + + +wire process_start_tiggle; +assign process_start_tiggle = (~pre_process_start & process_start)?1'b1:1'b0; + + +//////////////////////////////////// +//////////////////////////////////// +// process kernel +//////////////////////////////////// +//////////////////////////////////// + +wire focus_window_area /*synthesis keep*/; +wire focus_window_border /*synthesis keep*/; + + +always @ (posedge clk or negedge reset_n) +begin + if (~reset_n) begin + x_cnt <= 12'd0; + y_cnt <= 12'd0; + end + else if(sink_sop) begin + x_cnt <= 12'd0; + y_cnt <= 12'd0; + end + else if(sink_valid) begin + if(x_cnt == VIDEO_W - 1'b1) begin + x_cnt <= 12'd0; + y_cnt <= y_cnt + 1'b1; + end else x_cnt <= x_cnt + 1'b1; + end + +end + +assign focus_window_area = ( x_cnt >= focus_active_x_start + && x_cnt <= (focus_active_x_start + focus_active_w) + && y_cnt >= focus_active_y_start + && y_cnt <= (focus_active_y_start + focus_active_h) + )?1'b1:1'b0; + +assign focus_window_border = (( x_cnt == focus_active_x_start + || x_cnt == (focus_active_x_start + focus_active_w) + || y_cnt == focus_active_y_start + || y_cnt == (focus_active_y_start + focus_active_h) + ) && focus_window_area) ?1'b1:1'b0; + +///////////////////////////////////////////////// +// VCM enable +reg vcm_en; +reg [1:0] vcm_en_delay_cnt; +always @ (posedge clk or negedge reset_n) +begin + if (~reset_n) begin + vcm_en <= 1'b0; + vcm_en_delay_cnt <= 2'd0; + end + else if(process_start_tiggle) begin + vcm_en <= 1'b1; + vcm_en_delay_cnt <= 2'd0; + end + else if(VCM_END & sink_eop ) begin + if(vcm_en_delay_cnt == 2'd3) vcm_en <= 1'b0;// or delay x frame? + else vcm_en_delay_cnt <= vcm_en_delay_cnt + 1'b1; + end +end + + +//----VCM_STEP CONTROL & PIXEL HIGH_Statistics + +VCM_CTRL_P vcm_ctrl( +.iR (sink_data[23:16]), // RGB sequence must the same as the LCD side(final RGB sequence) +.iG (sink_data[15: 8]), +.iB (sink_data[ 7: 0]), +.VS (sink_sop & sink_valid),// VS_ + +.SCAL(scal), +.SCAL_F(scal_f), +.TH(th), +.ACTIV_C (focus_window_area & sink_valid) , // focus-window area +.ACTIV_V (sink_valid) , // full-screen + +.VIDEO_CLK ( clk ), +.AUTO_FOC ( ~process_start_tiggle ), // focus trigger +.SW_FUC_ALL_CEN( focus_mode) ,// +.VCM_END ( VCM_END) , +.Y ( Y ), +.S (S ), +.END_STEP (END_STEP ), +.VCM_DATA (VCM_DATA ), +.SUM(sum) + +);// +wire [15:0] VCM_DATA ; +wire [9:0] END_STEP ; +wire VCM_END ; +wire [7:0] S ; +wire [17:0] Y ; +//----- +wire [15:0] status; +wire [31:0] sum; +assign status = { ~vcm_en,5'b0,END_STEP} ; + + + +I2C_VCM_Config vcm_i2c( + .iCLK(clk50),//clk_50 + .ENABLE(vcm_en), // enable + .iRST_N(~sink_eop), // trigger + .VCM_DATA(VCM_DATA), + .END(),//vcm_i2c_end + + .I2C_SCLK(vcm_i2c_scl), + .I2C_SDAT(vcm_i2c_sda) + ); + + + +endmodule + diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/TERASIC_AUTO_FOCUS_hw.tcl b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/TERASIC_AUTO_FOCUS_hw.tcl new file mode 100644 index 0000000..c3c0731 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/TERASIC_AUTO_FOCUS_hw.tcl @@ -0,0 +1,214 @@ +# TCL File Generated by Component Editor 14.0 +# Thu Dec 31 11:58:49 CST 2015 +# DO NOT MODIFY + + +# +# TERASIC_AUTO_FOCUS "TERASIC_AUTO_FOCUS" v1.0 +# Dee Zeng 2015.12.31.11:58:49 +# auto focus simple fuction +# + +# +# request TCL package from ACDS 14.0 +# +package require -exact qsys 14.0 + + +# +# module TERASIC_AUTO_FOCUS +# +set_module_property DESCRIPTION "auto focus simple fuction" +set_module_property NAME TERASIC_AUTO_FOCUS +set_module_property VERSION 1.0 +set_module_property INTERNAL false +set_module_property OPAQUE_ADDRESS_MAP true +set_module_property GROUP "Terasic Technologies Inc" +set_module_property AUTHOR "Dee Zeng" +set_module_property DISPLAY_NAME TERASIC_AUTO_FOCUS +set_module_property INSTANTIATE_IN_SYSTEM_MODULE true +set_module_property EDITABLE true +set_module_property REPORT_TO_TALKBACK false +set_module_property ALLOW_GREYBOX_GENERATION false +set_module_property REPORT_HIERARCHY false + + +# +# file sets +# +add_fileset QUARTUS_SYNTH QUARTUS_SYNTH "" "" +set_fileset_property QUARTUS_SYNTH TOP_LEVEL TERASIC_AUTO_FOCUS +set_fileset_property QUARTUS_SYNTH ENABLE_RELATIVE_INCLUDE_PATHS false +set_fileset_property QUARTUS_SYNTH ENABLE_FILE_OVERWRITE_MODE false +add_fileset_file F_VCM.v VERILOG PATH F_VCM.v +add_fileset_file I2C_VCM_Config.v VERILOG PATH I2C_VCM_Config.v +add_fileset_file I2C_VCM_Controller.v VERILOG PATH I2C_VCM_Controller.v +add_fileset_file TERASIC_AUTO_FOCUS.v VERILOG PATH TERASIC_AUTO_FOCUS.v TOP_LEVEL_FILE +add_fileset_file VCM_CTRL_P.v VERILOG PATH VCM_CTRL_P.v + +add_fileset SIM_VERILOG SIM_VERILOG "" "" +set_fileset_property SIM_VERILOG TOP_LEVEL TERASIC_AUTO_FOCUS +set_fileset_property SIM_VERILOG ENABLE_RELATIVE_INCLUDE_PATHS false +set_fileset_property SIM_VERILOG ENABLE_FILE_OVERWRITE_MODE false +add_fileset_file F_VCM.v VERILOG PATH F_VCM.v +add_fileset_file I2C_VCM_Config.v VERILOG PATH I2C_VCM_Config.v +add_fileset_file I2C_VCM_Controller.v VERILOG PATH I2C_VCM_Controller.v +add_fileset_file TERASIC_AUTO_FOCUS.v VERILOG PATH TERASIC_AUTO_FOCUS.v +add_fileset_file VCM_CTRL_P.v VERILOG PATH VCM_CTRL_P.v + + +# +# parameters +# +add_parameter VIDEO_W INTEGER 800 +set_parameter_property VIDEO_W DEFAULT_VALUE 800 +set_parameter_property VIDEO_W DISPLAY_NAME VIDEO_W +set_parameter_property VIDEO_W TYPE INTEGER +set_parameter_property VIDEO_W UNITS None +set_parameter_property VIDEO_W ALLOWED_RANGES -2147483648:2147483647 +set_parameter_property VIDEO_W HDL_PARAMETER true +add_parameter VIDEO_H INTEGER 480 +set_parameter_property VIDEO_H DEFAULT_VALUE 480 +set_parameter_property VIDEO_H DISPLAY_NAME VIDEO_H +set_parameter_property VIDEO_H TYPE INTEGER +set_parameter_property VIDEO_H UNITS None +set_parameter_property VIDEO_H ALLOWED_RANGES -2147483648:2147483647 +set_parameter_property VIDEO_H HDL_PARAMETER true + + +# +# display items +# + + +# +# connection point clock +# +add_interface clock clock end +set_interface_property clock clockRate 0 +set_interface_property clock ENABLED true +set_interface_property clock EXPORT_OF "" +set_interface_property clock PORT_NAME_MAP "" +set_interface_property clock CMSIS_SVD_VARIABLES "" +set_interface_property clock SVD_ADDRESS_GROUP "" + +add_interface_port clock clk clk Input 1 + + +# +# connection point reset +# +add_interface reset reset end +set_interface_property reset associatedClock clock +set_interface_property reset synchronousEdges DEASSERT +set_interface_property reset ENABLED true +set_interface_property reset EXPORT_OF "" +set_interface_property reset PORT_NAME_MAP "" +set_interface_property reset CMSIS_SVD_VARIABLES "" +set_interface_property reset SVD_ADDRESS_GROUP "" + +add_interface_port reset reset_n reset_n Input 1 + + +# +# connection point mm_ctrl +# +add_interface mm_ctrl avalon end +set_interface_property mm_ctrl addressUnits WORDS +set_interface_property mm_ctrl associatedClock clock +set_interface_property mm_ctrl associatedReset reset +set_interface_property mm_ctrl bitsPerSymbol 8 +set_interface_property mm_ctrl burstOnBurstBoundariesOnly false +set_interface_property mm_ctrl burstcountUnits WORDS +set_interface_property mm_ctrl explicitAddressSpan 0 +set_interface_property mm_ctrl holdTime 0 +set_interface_property mm_ctrl linewrapBursts false +set_interface_property mm_ctrl maximumPendingReadTransactions 0 +set_interface_property mm_ctrl maximumPendingWriteTransactions 0 +set_interface_property mm_ctrl readLatency 0 +set_interface_property mm_ctrl readWaitTime 1 +set_interface_property mm_ctrl setupTime 0 +set_interface_property mm_ctrl timingUnits Cycles +set_interface_property mm_ctrl writeWaitTime 0 +set_interface_property mm_ctrl ENABLED true +set_interface_property mm_ctrl EXPORT_OF "" +set_interface_property mm_ctrl PORT_NAME_MAP "" +set_interface_property mm_ctrl CMSIS_SVD_VARIABLES "" +set_interface_property mm_ctrl SVD_ADDRESS_GROUP "" + +add_interface_port mm_ctrl s_chipselect chipselect Input 1 +add_interface_port mm_ctrl s_read read Input 1 +add_interface_port mm_ctrl s_write write Input 1 +add_interface_port mm_ctrl s_readdata readdata Output 32 +add_interface_port mm_ctrl s_writedata writedata Input 32 +add_interface_port mm_ctrl s_address address Input 3 +set_interface_assignment mm_ctrl embeddedsw.configuration.isFlash 0 +set_interface_assignment mm_ctrl embeddedsw.configuration.isMemoryDevice 0 +set_interface_assignment mm_ctrl embeddedsw.configuration.isNonVolatileStorage 0 +set_interface_assignment mm_ctrl embeddedsw.configuration.isPrintableDevice 0 + + +# +# connection point din +# +add_interface din avalon_streaming end +set_interface_property din associatedClock clock +set_interface_property din associatedReset reset +set_interface_property din dataBitsPerSymbol 8 +set_interface_property din errorDescriptor "" +set_interface_property din firstSymbolInHighOrderBits true +set_interface_property din maxChannel 0 +set_interface_property din readyLatency 1 +set_interface_property din ENABLED true +set_interface_property din EXPORT_OF "" +set_interface_property din PORT_NAME_MAP "" +set_interface_property din CMSIS_SVD_VARIABLES "" +set_interface_property din SVD_ADDRESS_GROUP "" + +add_interface_port din sink_data data Input 24 +add_interface_port din sink_valid valid Input 1 +add_interface_port din sink_ready ready Output 1 +add_interface_port din sink_sop startofpacket Input 1 +add_interface_port din sink_eop endofpacket Input 1 + + +# +# connection point dout +# +add_interface dout avalon_streaming start +set_interface_property dout associatedClock clock +set_interface_property dout associatedReset reset +set_interface_property dout dataBitsPerSymbol 8 +set_interface_property dout errorDescriptor "" +set_interface_property dout firstSymbolInHighOrderBits true +set_interface_property dout maxChannel 0 +set_interface_property dout readyLatency 1 +set_interface_property dout ENABLED true +set_interface_property dout EXPORT_OF "" +set_interface_property dout PORT_NAME_MAP "" +set_interface_property dout CMSIS_SVD_VARIABLES "" +set_interface_property dout SVD_ADDRESS_GROUP "" + +add_interface_port dout source_data data Output 24 +add_interface_port dout source_valid valid Output 1 +add_interface_port dout source_ready ready Input 1 +add_interface_port dout source_sop startofpacket Output 1 +add_interface_port dout source_eop endofpacket Output 1 + + +# +# connection point Conduit +# +add_interface Conduit conduit end +set_interface_property Conduit associatedClock clock +set_interface_property Conduit associatedReset reset +set_interface_property Conduit ENABLED true +set_interface_property Conduit EXPORT_OF "" +set_interface_property Conduit PORT_NAME_MAP "" +set_interface_property Conduit CMSIS_SVD_VARIABLES "" +set_interface_property Conduit SVD_ADDRESS_GROUP "" + +add_interface_port Conduit vcm_i2c_sda vcm_i2c_sda Bidir 1 +add_interface_port Conduit clk50 clk50 Input 1 +add_interface_port Conduit vcm_i2c_scl vcm_i2c_scl Bidir 1 + diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/VCM_CTRL_P.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/VCM_CTRL_P.v new file mode 100644 index 0000000..cd7bd0e --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_AUTO_FOCUS/VCM_CTRL_P.v @@ -0,0 +1,99 @@ +module VCM_CTRL_P ( +input [ 7:0] iR, +input [ 7:0] iG, +input [ 7:0] iB, +input VS,// VS_ + +input [ 7:0] SCAL, +input [ 7:0] SCAL_F, +input [ 7:0] TH, + +input ACTIV_C , +input ACTIV_V , + +input VIDEO_CLK , +input AUTO_FOC , +input SW_FUC_ALL_CEN , +output VCM_END, +output [17:0] Y , +output reg [7:0] SS , +output reg [7:0] S, +output [9:0] END_STEP , +output [15:0] VCM_DATA, +output reg[31:0] SUM +);// + + +// Y = R * //.299 = 256 * 0.299 = 77 // + G * // .587 = 256 * .587 = 150 //+ B * //.114 = 256 * .114 = 29 +//---RGB2Y--- +assign Y = iR * 77 + iG *150 + iB*29 ; +//---------------------------- + +reg [7:0] rY1 , rY2; +wire [7:0] Y1; + + +reg [31:0] rSUM; +reg [31:0] peakSUM; + + +reg rVS ; +reg rCH ; + +//assign TH=5 ; +assign Y1[7:0] = Y[15:8] ; + +//-- +always @( posedge VIDEO_CLK or negedge AUTO_FOC) begin + if ( !AUTO_FOC ) begin + peakSUM <=0; + end + else begin + + { rY2, rY1} <= { rY1 ,Y1 } ; + rVS <= VS ; + S <= ( SS > TH )? 8'hff: 0 ; + + + if ( !rVS && VS ) begin + rGO_F <= GO_F; + + { SUM , rSUM } <= { rSUM,32'h0 } ; + //if ( ( !AUTO_FOC ) || ( ~rGO_F & GO_F ) ) peakSUM <=0; + if ( ~rGO_F & GO_F ) peakSUM <=0; + else if (( peakSUM < SUM ) && (!VCM_END)) begin peakSUM <= SUM ; STEP_UP <= STEP; end + end + else if ( ( SS > TH ) && ( (SW_FUC_ALL_CEN)? ACTIV_C : ACTIV_V ) ) rSUM <= rSUM+1 ; + + //--DIFF Y1-Y2-Y3 + if ( Y1 >rY2 ) SS<= (Y1 - rY2 ) ; + else SS <= (rY2 - Y1 ) ; + + end + +end + +//-------------------VCM STEP --- + +reg [9:0] STEP_UP ; +wire [9:0] STEP ; +wire V_C ; + +assign END_STEP = ( VCM_END )? STEP_UP[9:0] : STEP[9:0]; +assign VCM_DATA = {2'b00, END_STEP[9:0] ,4'b1111 }; // +wire GO_F ; +reg rGO_F ; +F_VCM f( + .RESET_n( AUTO_FOC ), + .CLK ( VS ), + .SCAL(SCAL), + .SCAL_F(SCAL_F), + .STEP( STEP), + .STEP_UP ( STEP_UP) , + .V_C ( V_C), + .GO_F ( GO_F) , + .VCM_END (VCM_END ) + ) ; + +endmodule + \ No newline at end of file diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer2RGB.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer2RGB.v new file mode 100644 index 0000000..b5f9d2e --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer2RGB.v @@ -0,0 +1,294 @@ +/* Bayer Pattern + +-> G1, R, G1, R, .... + B, G2, B, G2, .... + G1, R, G1, R, .... + B, G2, B, G2, .... + G1, R, G1, R, .... + B, G2, B, G2, .... + ............... + ............... + G1, R, G1, R, .... + B, G2, B, G2, .... + G1, R, G1, R, .... + B, G2, B, G2, .... + + + // matrix + [0] [1] [2] + [3] [4] [5] + [6] [7] [8] + + +*/ + +`define GREEN_AVG_4 + +module Bayer2RGB( + reset_n, + + BAYER_CLK, + BAYER_X, + BAYER_Y, + BAYER_DATA, + BAYER_VALID, + BAYER_WIDTH, + BAYER_HEIGHT, + + RGB_R, + RGB_G, + RGB_B, + RGB_X, + RGB_Y, + RGB_VALID, + RGB_FRAME_COUNT + +); + + +parameter VIDEO_W = 800; +parameter VIDEO_H = 600; + +input reset_n; + +input BAYER_CLK; +input [11:0] BAYER_X; +input [11:0] BAYER_Y; +input [11:0] BAYER_DATA; +input BAYER_VALID; +input [11:0] BAYER_WIDTH; +input [11:0] BAYER_HEIGHT; + +output reg [11:0] RGB_R; +output reg [11:0] RGB_G; +output reg [11:0] RGB_B; +output reg [11:0] RGB_X; +output reg [11:0] RGB_Y; +output reg RGB_VALID; +output reg [19:0] RGB_FRAME_COUNT; + + +//////////////////////////////////// +// push into Bayer_LineBuffer +wire [11:0] LD0, LD1, LD2; + + + +Bayer_LineBuffer#( + .VIDEO_W(VIDEO_W) + ) Bayer_LineBuffer_Inst( + .aclr(~reset_n), + .clken(BAYER_VALID), + .clock(BAYER_CLK), + .shiftin(BAYER_DATA), + .shiftout(), + .taps({LD0, LD1, LD2}) // msb is first data + ); + + + +//////////////////////////////////// +// RGB_X, RGB_Y + +always @ (posedge BAYER_CLK) +begin + RGB_X <= BAYER_X; + RGB_Y <= BAYER_Y; + RGB_VALID <= BAYER_VALID; +end + +reg [13:0] D[8:0]; + +always @ (posedge BAYER_CLK) +begin + D[2] <= LD0; + D[1] <= D[2]; + D[0] <= D[1]; + // + D[5] <= LD1; + D[4] <= D[5]; + D[3] <= D[4]; + // + D[8] <= LD2; + D[7] <= D[8]; + D[6] <= D[7]; + // +end + + +///////////////////////////////////// + +wire [1:0] bayer_case; +////assign bayer_case = USER_CTRL?{~BAYER_Y[0], ~BAYER_X[0]}:{BAYER_Y[0], BAYER_X[0]}; // col & row inverse +//assign bayer_case = {BAYER_Y[0], BAYER_X[0]}; +assign bayer_case = {~BAYER_Y[0], BAYER_X[0]}; // col & row inverse + +//assign bayer_case = {BAYER_Y[0], ~BAYER_X[0]}; // richard try + + +wire [13:0] avg1_sum, avg2_sum; +wire [12:0] avg3_sum, avg4_sum; +wire [11:0] avg0, avg1, avg2, avg3, avg4; + + +add4 add4_avg1( + .data0x(D[1]), + .data1x(D[3]), + .data2x(D[5]), + .data3x(D[7]), + .result(avg1_sum)); + +assign avg1 = avg1_sum[13:2];// >> 2; //(D[1]+D[3]+D[5]+D[7]) >> 2; + + +add4 add4_avg2( + .data0x(D[0]), + .data1x(D[2]), + .data2x(D[6]), + .data3x(D[8]), + .result(avg2_sum)); + +assign avg2 = avg2_sum[13:2];// >> 2; //(D[0]+D[2]+D[6]+D[8]) >> 2; + +add2 add2_avg3( + .data0x(D[1]), + .data1x(D[7]), + .result(avg3_sum)); + +assign avg3 = avg3_sum[12:1];// >> 1; //(D[1]+D[7]) >> 1; + +add2 add2_avg4( + .data0x(D[3]), + .data1x(D[5]), + .result(avg4_sum)); + +assign avg4 = avg4_sum[12:1];// >> 1; //(D[3]+D[5]) >> 1; + +assign avg0 = D[4]; + + +reg in_rgb_active_area; + +always @ (posedge BAYER_CLK or negedge reset_n) +begin + if (~reset_n) + in_rgb_active_area <= 1'b0; + else if ((BAYER_X >=3) && (BAYER_Y >=5) && ((BAYER_X+3) < VIDEO_W) && ((BAYER_Y+3) < VIDEO_H)) + in_rgb_active_area <= 1'b1; + else + in_rgb_active_area <= 1'b0; +end + +reg xfer_rgb_data; +always @ (posedge BAYER_CLK or negedge reset_n) +begin + if (~reset_n) + xfer_rgb_data <= 1'b0; + else + xfer_rgb_data <= BAYER_VALID; +end + +//Interpolating the green component +//http://www.siliconimaging.com/RGB%20Bayer.htm +/* +-> G1, R, G1, R, G1, R, .... + B, G2, B, G2, B, G2, .... + G1, R, G1, R, G1, R, .... + B, G2, B, G2, B, G2, .... + G1, R, G1, R, G1, R, .... + B, G2, B, G2, B, G2, .... +*/ +always @ (posedge BAYER_CLK or negedge reset_n) +begin + if (~reset_n) + RGB_G <= 0; + else if (xfer_rgb_data & in_rgb_active_area) + begin + if (bayer_case == 2'b01 || bayer_case == 2'b10) + begin + RGB_G <= avg1; + end + else + RGB_G <= avg0;//D[12]; + end + else + RGB_G <= 0; + +end + +//Interpolating red and blue components +//http://www.siliconimaging.com/RGB%20Bayer.htm +/* +-> G1, R, G1, R, .... + B, G2, B, G2, .... + G1, R, G1, R, .... + B, G2, B, G2, .... + G1, R, G1, R, .... + B, G2, B, G2, .... +*/ +always @ (posedge BAYER_CLK or negedge reset_n) +begin + if (~reset_n) + begin + RGB_B <= 0; + RGB_R <= 0; + end + else if (xfer_rgb_data & in_rgb_active_area) + begin + if (bayer_case == 2'b00) + begin // case (a) + RGB_R <= avg3;//(D[7]+D[17]) >> 1; + RGB_B <= avg4;//(D[11]+D[13]) >> 1; + end + else if (bayer_case == 2'b01) + begin // case (c) + RGB_B <= avg0;//D[12]; + RGB_R <= avg2;//(D[6]+D[8]+D[16]+D[18]) >> 2; + end + else if (bayer_case == 2'b10) + begin // case (d) + RGB_R <= avg0;// D[12]; + RGB_B <= avg2;//(D[6]+D[8]+D[16]+D[18]) >> 2; + end + else if (bayer_case == 2'b11) + begin // case (b) + RGB_B <= avg3;//(D[7]+D[17]) >> 1; + RGB_R <= avg4;//(D[11]+D[13]) >> 1; + end + end + else + begin + RGB_B <= 0; + RGB_R <= 0; + end +end + + + + +wire FirstPixel, LastPixel; +assign FirstPixel = (RGB_X == 0 && RGB_Y == 0)?1'b1:1'b0; +assign LastPixel = (RGB_X+1 == VIDEO_W && RGB_Y+1 == VIDEO_H)?1'b1:1'b0; + +reg FindFirstPixel; +always @ (posedge BAYER_CLK or negedge reset_n) +begin + if (~reset_n) + begin + RGB_FRAME_COUNT <= 0; + FindFirstPixel <= 1'b0; + end + else if (RGB_VALID) + begin + if (FirstPixel) + FindFirstPixel <= 1'b1; + else if (FindFirstPixel && LastPixel) + begin + FindFirstPixel <= 1'b0; + RGB_FRAME_COUNT <= RGB_FRAME_COUNT + 1; + end + end +end + + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer_LineBuffer.qip b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer_LineBuffer.qip new file mode 100644 index 0000000..4f3b503 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer_LineBuffer.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "Shift register (RAM-based)" +set_global_assignment -name IP_TOOL_VERSION "10.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "Bayer_LineBuffer.v"] diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer_LineBuffer.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer_LineBuffer.v new file mode 100644 index 0000000..9186827 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/Bayer_LineBuffer.v @@ -0,0 +1,112 @@ +// megafunction wizard: %Shift register (RAM-based)% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: ALTSHIFT_TAPS + +// ============================================================ +// File Name: Bayer_LineBuffer.v +// Megafunction Name(s): +// ALTSHIFT_TAPS +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 10.1 Build 153 11/29/2010 SJ Full Version +// ************************************************************ + + +//Copyright (C) 1991-2010 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module Bayer_LineBuffer #( + parameter VIDEO_W = 800 +)( + aclr, + clken, + clock, + shiftin, + shiftout, + taps); + + input aclr; + input clken; + input clock; + input [11:0] shiftin; + output [11:0] shiftout; + output [35:0] taps; + + wire [11:0] sub_wire0; + wire [35:0] sub_wire1; + wire [11:0] shiftout = sub_wire0[11:0]; + wire [35:0] taps = sub_wire1[35:0]; + + altshift_taps ALTSHIFT_TAPS_component ( + .aclr (aclr), + .clock (clock), + .clken (clken), + .shiftin (shiftin), + .shiftout (sub_wire0), + .taps (sub_wire1)); + defparam + ALTSHIFT_TAPS_component.intended_device_family = "Cyclone IV E", + ALTSHIFT_TAPS_component.lpm_hint = "RAM_BLOCK_TYPE=M4K", + ALTSHIFT_TAPS_component.lpm_type = "altshift_taps", + ALTSHIFT_TAPS_component.number_of_taps = 3, + ALTSHIFT_TAPS_component.power_up_state = "CLEARED", +// ALTSHIFT_TAPS_component.tap_distance = 800, + ALTSHIFT_TAPS_component.tap_distance = VIDEO_W, // ##Lou mod + ALTSHIFT_TAPS_component.width = 12; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E" +// Retrieval info: CONSTANT: LPM_HINT STRING "RAM_BLOCK_TYPE=M4K" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altshift_taps" +// Retrieval info: CONSTANT: NUMBER_OF_TAPS NUMERIC "3" +// Retrieval info: CONSTANT: POWER_UP_STATE STRING "CLEARED" +// Retrieval info: CONSTANT: TAP_DISTANCE NUMERIC "800" +// Retrieval info: CONSTANT: WIDTH NUMERIC "12" +// Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT NODEFVAL "aclr" +// Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +// Retrieval info: USED_PORT: clken 0 0 0 0 INPUT NODEFVAL "clken" +// Retrieval info: CONNECT: @clken 0 0 0 0 clken 0 0 0 0 +// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" +// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 +// Retrieval info: USED_PORT: shiftin 0 0 12 0 INPUT NODEFVAL "shiftin[11..0]" +// Retrieval info: CONNECT: @shiftin 0 0 12 0 shiftin 0 0 12 0 +// Retrieval info: USED_PORT: shiftout 0 0 12 0 OUTPUT NODEFVAL "shiftout[11..0]" +// Retrieval info: CONNECT: shiftout 0 0 12 0 @shiftout 0 0 12 0 +// Retrieval info: USED_PORT: taps 0 0 36 0 OUTPUT NODEFVAL "taps[35..0]" +// Retrieval info: CONNECT: taps 0 0 36 0 @taps 0 0 36 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL Bayer_LineBuffer.v TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL Bayer_LineBuffer.qip TRUE FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL Bayer_LineBuffer.bsf FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL Bayer_LineBuffer_inst.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL Bayer_LineBuffer_bb.v FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL Bayer_LineBuffer.inc FALSE TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL Bayer_LineBuffer.cmp FALSE TRUE +// Retrieval info: LIB_FILE: altera_mf diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/CAMERA_Bayer.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/CAMERA_Bayer.v new file mode 100644 index 0000000..b081501 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/CAMERA_Bayer.v @@ -0,0 +1,121 @@ +module CAMERA_Bayer( + reset_n, + + CAMERA_D, + CAMERA_FVAL, + CAMERA_LVAL, + CAMERA_PIXCLK, + + BAYER_X, + BAYER_Y, + BAYER_DATA, + BAYER_VALID, + BAYER_WIDTH, + BAYER_HEIGH +); + +input reset_n; + +input [11:0] CAMERA_D; +input CAMERA_FVAL; +input CAMERA_LVAL; +input CAMERA_PIXCLK; + +output reg [11:0] BAYER_X; +output reg [11:0] BAYER_Y; +output reg [11:0] BAYER_DATA; +output reg BAYER_VALID; +output reg [11:0] BAYER_WIDTH; +output reg [11:0] BAYER_HEIGH; + + + + + +reg pre_CAMERA_FVAL; +reg pre_CAMERA_LVAL; + +always @ (negedge CAMERA_PIXCLK) +begin + pre_CAMERA_FVAL <= CAMERA_FVAL; + pre_CAMERA_LVAL <= CAMERA_LVAL; +end + +////////////////////// +// Y, heigh count +reg [11:0] y_cnt; +always @ (posedge CAMERA_PIXCLK or negedge reset_n) +begin + if (~reset_n) + begin + BAYER_HEIGH <= 0; + y_cnt <= 0; + end + else if (pre_CAMERA_FVAL & ~CAMERA_FVAL) + begin + y_cnt <= 0; + if (y_cnt > BAYER_HEIGH) + BAYER_HEIGH <= y_cnt; + end + else if (pre_CAMERA_LVAL && ~CAMERA_LVAL) + y_cnt <= y_cnt + 1; + +end + +always @ (posedge CAMERA_PIXCLK or negedge reset_n) +begin + if (~reset_n) + BAYER_Y <= 0; + else + BAYER_Y <= y_cnt; +end + +////////////////////// +// X, width count +reg [11:0] x_cnt; +always @ (posedge CAMERA_PIXCLK or negedge reset_n) +begin + if (~reset_n) + begin + BAYER_WIDTH <= 0; + x_cnt <= 0; + end + else if (pre_CAMERA_LVAL & ~CAMERA_LVAL) + begin + x_cnt <= 0; + if (x_cnt > BAYER_WIDTH) + BAYER_WIDTH <= x_cnt; + end + else if (CAMERA_FVAL & CAMERA_LVAL) + x_cnt <= x_cnt + 1; +end + +always @ (posedge CAMERA_PIXCLK or negedge reset_n) +begin + if (~reset_n) + BAYER_X <= 0; + else + BAYER_X <= x_cnt; +end + +// data valid +always @ (posedge CAMERA_PIXCLK or negedge reset_n) +begin + if (~reset_n) + BAYER_VALID <= 1'b0; + else + BAYER_VALID <= (CAMERA_FVAL & CAMERA_LVAL)?1'b1:1'b0; + +end + +// data +always @ (posedge CAMERA_PIXCLK or negedge reset_n) +begin + if (~reset_n) + BAYER_DATA <= 12'h000; + else + BAYER_DATA <= CAMERA_D; + +end + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/CAMERA_RGB.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/CAMERA_RGB.v new file mode 100644 index 0000000..3edcde4 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/CAMERA_RGB.v @@ -0,0 +1,95 @@ +module CAMERA_RGB( + reset_n, + + // Bayer Input + CAMERA_D, + CAMERA_FVAL, + CAMERA_LVAL, + CAMERA_PIXCLK, + + // RGB Output + RGB_R, + RGB_G, + RGB_B, + RGB_X, + RGB_Y, + RGB_VALID + + +); + + +input reset_n; + +input [11:0] CAMERA_D; +input CAMERA_FVAL; +input CAMERA_LVAL; +input CAMERA_PIXCLK; + +output [11:0] RGB_R; +output [11:0] RGB_G; +output [11:0] RGB_B; +output [11:0] RGB_X; +output [11:0] RGB_Y; +output RGB_VALID; + +//////////////////////////////////////////////// + +/* ##lou mod +parameter VIDEO_W = 800; +parameter VIDEO_H = 600; +*/ + +parameter VIDEO_W = 1280; +parameter VIDEO_H = 720; + +//////////////////////////////////// +wire [11:0] BAYER_X; +wire [11:0] BAYER_Y; +wire [11:0] BAYER_DATA; +wire BAYER_VALID; + +CAMERA_Bayer CAMERA_Bayer_inst( + .reset_n(reset_n), + + .CAMERA_D(CAMERA_D), + .CAMERA_FVAL(CAMERA_FVAL), + .CAMERA_LVAL(CAMERA_LVAL), + .CAMERA_PIXCLK(CAMERA_PIXCLK), + + .BAYER_X(BAYER_X), + .BAYER_Y(BAYER_Y), + .BAYER_DATA(BAYER_DATA), + .BAYER_VALID(BAYER_VALID), + .BAYER_WIDTH(), + .BAYER_HEIGH() +); + + + +Bayer2RGB Bayer2RGB_inst( + .reset_n(reset_n), + + .BAYER_CLK(CAMERA_PIXCLK), + .BAYER_X(BAYER_X), + .BAYER_Y(BAYER_Y), + .BAYER_DATA(BAYER_DATA), + .BAYER_VALID(BAYER_VALID), + .BAYER_WIDTH(), + .BAYER_HEIGH(), + + .RGB_R(RGB_R), + .RGB_G(RGB_G), + .RGB_B(RGB_B), + .RGB_X(RGB_X), + .RGB_Y(RGB_Y), + .RGB_VALID(RGB_VALID) + +); + +defparam Bayer2RGB_inst.VIDEO_W = VIDEO_W; +defparam Bayer2RGB_inst.VIDEO_H = VIDEO_H; + + +endmodule + diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/TERASIC_CAMERA.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/TERASIC_CAMERA.v new file mode 100644 index 0000000..c1a46f1 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/TERASIC_CAMERA.v @@ -0,0 +1,198 @@ +// Packet: follow video packet of "Avalon-ST Video Protocol" defined VIP spec. + + + +module TERASIC_CAMERA( + clk, + reset_n, + + // streaming source interface + st_data, + st_valid, + st_sop, + st_eop, + st_ready, + + + + // export + CAMERA_D, + CAMERA_FVAL, + CAMERA_LVAL, + CAMERA_PIXCLK + +); + + + +input clk; +input reset_n; + + +output [23:0] st_data; +output st_valid; +output st_sop; +output st_eop; +input st_ready; + + + +input [11:0] CAMERA_D; +input CAMERA_FVAL; +input CAMERA_LVAL; +input CAMERA_PIXCLK; + +//////////////////////////////////////////////// +/* ##lou mod +parameter VIDEO_W = 800; +parameter VIDEO_H = 600; +*/ + +parameter VIDEO_W = 1280; +parameter VIDEO_H = 720; +`define VIDEO_PIX_NUM (VIDEO_W * VIDEO_H) + +//////////////////////////////////////////////// + + + + +wire [11:0] RGB_R,RGB_G, RGB_B; +wire [11:0] RGB_X,RGB_Y; +wire RGB_VALID; + +CAMERA_RGB CAMERA_RGB_inst( + .reset_n(reset_n), + + // Bayer Input + .CAMERA_D(CAMERA_D), + .CAMERA_FVAL(CAMERA_FVAL), + .CAMERA_LVAL(CAMERA_LVAL), + .CAMERA_PIXCLK(CAMERA_PIXCLK), + + // RGB Output + .RGB_R(RGB_R), + .RGB_G(RGB_G), + .RGB_B(RGB_B), + .RGB_X(RGB_X), + .RGB_Y(RGB_Y), + .RGB_VALID(RGB_VALID) + +); + +defparam CAMERA_RGB_inst.VIDEO_W = VIDEO_W; +defparam CAMERA_RGB_inst.VIDEO_H = VIDEO_H; + + + +///////////////////////////// +// write rgb to fifo + +reg [25:0] fifo_w_data; // 1-bit sop + 1-bit eop + 24-bits data +wire fifo_w_full; +wire sop; +wire eop; +wire in_active_area; + +assign sop = (RGB_X == 0 && RGB_Y == 0)?1'b1:1'b0; +assign eop = (((RGB_X+1) == VIDEO_W) && ((RGB_Y+1) == VIDEO_H))?1'b1:1'b0; + +assign in_active_area = ((RGB_X < VIDEO_W) && (RGB_Y < VIDEO_H))?1'b1:1'b0; + +reg fifo_w_write; +always @ (posedge CAMERA_PIXCLK or negedge reset_n) +begin + if (~reset_n) + begin + fifo_w_write <= 1'b0; + //push_fail <= 1'b0; + end + else if (RGB_VALID & in_active_area) + begin + if (!fifo_w_full) + begin + fifo_w_data <= {sop,eop, RGB_B[11:4], RGB_G[11:4], RGB_R[11:4]}; + fifo_w_write <= 1'b1; + end + else + begin + fifo_w_write <= 1'b0; + // push_fail <= 1'b1; // fifo full !!!!! + end + end + else + fifo_w_write <= 1'b0; +end + + + +///////////////////////////// +// read from fifo +wire fifo_r_empty; +wire [25:0] fifo_r_q; +wire fifo_r_rdreq_ack; + + + + + +///////////////////////////// +// FIFO +rgb_fifo rgb_fifo_inst( + // write + .data(fifo_w_data), + .wrclk(~CAMERA_PIXCLK), + .wrreq(fifo_w_write), + .wrfull(fifo_w_full), + + // read + .rdclk(clk), + .rdreq(fifo_r_rdreq_ack), + .q(fifo_r_q), + .rdempty(fifo_r_empty), + // + .aclr(~reset_n) + + ); + + + +/////////////////////////////// +wire frame_start; +assign frame_start = fifo_r_q[25] & ~fifo_r_empty; + +reg first_pix; +always @ (posedge clk or negedge reset_n) +begin + if (~reset_n) + first_pix <= 1'b0; + else if (send_packet_id) + first_pix <= 1'b1; + else + first_pix <= 1'b0; +end + +wire send_packet_id; +assign send_packet_id = frame_start & ~first_pix; + +///////////////////////////// +// flag for ready_latency=1 +reg pre_ready; +always @ (posedge clk or negedge reset_n) +begin + if (~reset_n) + pre_ready <= 0; + else + pre_ready <= st_ready; +end + + +//////////////////////////////////// +assign {st_sop, st_eop, st_data} = (send_packet_id)?{1'b1,1'b0, 24'h000000}:{1'b0, fifo_r_q[24:0]}; +assign st_valid = ~fifo_r_empty & pre_ready; +assign fifo_r_rdreq_ack = st_valid & (~send_packet_id); + + + + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/TERASIC_CAMERA_hw.tcl b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/TERASIC_CAMERA_hw.tcl new file mode 100644 index 0000000..f15e064 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/TERASIC_CAMERA_hw.tcl @@ -0,0 +1,149 @@ +# TCL File Generated by Component Editor 10.1 +# Sun Jan 23 01:18:19 CST 2011 +# DO NOT MODIFY + + +# +----------------------------------- +# | +# | TERASIC_CAMERA "TERASIC_CAMERA" v1.0 +# | null 2011.01.23.01:18:19 +# | +# | +# | D:/svn/DE2_115_WDR_CAMERA/ip/TERASIC_CAMERA/TERASIC_CAMERA.v +# | +# | ./TERASIC_CAMERA.v syn, sim +# | ./CAMERA_RGB.v syn, sim +# | ./CAMERA_Bayer.v syn, sim +# | ./Bayer2RGB.v syn, sim +# | ./Bayer_LineBuffer.v syn, sim +# | ./rgb_fifo.v syn, sim +# | ./add2.v syn, sim +# | ./add4.v syn, sim +# | +# +----------------------------------- + +# +----------------------------------- +# | request TCL package from ACDS 10.1 +# | +package require -exact sopc 10.1 +# | +# +----------------------------------- + +# +----------------------------------- +# | module TERASIC_CAMERA +# | +set_module_property NAME TERASIC_CAMERA +set_module_property VERSION 1.0 +set_module_property INTERNAL false +set_module_property OPAQUE_ADDRESS_MAP true +set_module_property GROUP "Terasic Technologies Inc" +set_module_property DISPLAY_NAME TERASIC_CAMERA +set_module_property TOP_LEVEL_HDL_FILE TERASIC_CAMERA.v +set_module_property TOP_LEVEL_HDL_MODULE TERASIC_CAMERA +set_module_property INSTANTIATE_IN_SYSTEM_MODULE true +set_module_property EDITABLE true +set_module_property ANALYZE_HDL TRUE +# | +# +----------------------------------- + +# +----------------------------------- +# | files +# | +add_file TERASIC_CAMERA.v {SYNTHESIS SIMULATION} +add_file CAMERA_RGB.v {SYNTHESIS SIMULATION} +add_file CAMERA_Bayer.v {SYNTHESIS SIMULATION} +add_file Bayer2RGB.v {SYNTHESIS SIMULATION} +add_file Bayer_LineBuffer.v {SYNTHESIS SIMULATION} +add_file rgb_fifo.v {SYNTHESIS SIMULATION} +add_file add2.v {SYNTHESIS SIMULATION} +add_file add4.v {SYNTHESIS SIMULATION} +# | +# +----------------------------------- + +# +----------------------------------- +# | parameters +# | +add_parameter VIDEO_W INTEGER 800 +set_parameter_property VIDEO_W DEFAULT_VALUE 800 +set_parameter_property VIDEO_W DISPLAY_NAME VIDEO_W +set_parameter_property VIDEO_W TYPE INTEGER +set_parameter_property VIDEO_W UNITS None +set_parameter_property VIDEO_W ALLOWED_RANGES -2147483648:2147483647 +set_parameter_property VIDEO_W AFFECTS_GENERATION false +set_parameter_property VIDEO_W HDL_PARAMETER true +add_parameter VIDEO_H INTEGER 600 +set_parameter_property VIDEO_H DEFAULT_VALUE 600 +set_parameter_property VIDEO_H DISPLAY_NAME VIDEO_H +set_parameter_property VIDEO_H TYPE INTEGER +set_parameter_property VIDEO_H UNITS None +set_parameter_property VIDEO_H ALLOWED_RANGES -2147483648:2147483647 +set_parameter_property VIDEO_H AFFECTS_GENERATION false +set_parameter_property VIDEO_H HDL_PARAMETER true +# | +# +----------------------------------- + +# +----------------------------------- +# | display items +# | +# | +# +----------------------------------- + +# +----------------------------------- +# | connection point clock_reset +# | +add_interface clock_reset clock end +set_interface_property clock_reset clockRate 0 + +set_interface_property clock_reset ENABLED true + +add_interface_port clock_reset clk clk Input 1 +# | +# +----------------------------------- + +# +----------------------------------- +# | connection point clock_reset_reset +# | +add_interface clock_reset_reset reset end +set_interface_property clock_reset_reset associatedClock clock_reset +set_interface_property clock_reset_reset synchronousEdges DEASSERT + +set_interface_property clock_reset_reset ENABLED true + +add_interface_port clock_reset_reset reset_n reset_n Input 1 +# | +# +----------------------------------- + +# +----------------------------------- +# | connection point conduit_end +# | +add_interface conduit_end conduit end + +set_interface_property conduit_end ENABLED true + +add_interface_port conduit_end CAMERA_D export Input 12 +add_interface_port conduit_end CAMERA_FVAL export Input 1 +add_interface_port conduit_end CAMERA_LVAL export Input 1 +add_interface_port conduit_end CAMERA_PIXCLK export Input 1 +# | +# +----------------------------------- + +# +----------------------------------- +# | connection point avalon_streaming_source +# | +add_interface avalon_streaming_source avalon_streaming start +set_interface_property avalon_streaming_source associatedClock clock_reset +set_interface_property avalon_streaming_source associatedReset clock_reset_reset +set_interface_property avalon_streaming_source dataBitsPerSymbol 8 +set_interface_property avalon_streaming_source errorDescriptor "" +set_interface_property avalon_streaming_source maxChannel 0 +set_interface_property avalon_streaming_source readyLatency 1 + +set_interface_property avalon_streaming_source ENABLED true + +add_interface_port avalon_streaming_source st_data data Output 24 +add_interface_port avalon_streaming_source st_sop startofpacket Output 1 +add_interface_port avalon_streaming_source st_eop endofpacket Output 1 +add_interface_port avalon_streaming_source st_ready ready Input 1 +add_interface_port avalon_streaming_source st_valid valid Output 1 +# | +# +----------------------------------- diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2.qip b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2.qip new file mode 100644 index 0000000..82fc613 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "PARALLEL_ADD" +set_global_assignment -name IP_TOOL_VERSION "10.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "add2.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "add2_bb.v"] diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2.v new file mode 100644 index 0000000..bea5b9b --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2.v @@ -0,0 +1,103 @@ +// megafunction wizard: %PARALLEL_ADD% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: parallel_add + +// ============================================================ +// File Name: add2.v +// Megafunction Name(s): +// parallel_add +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 10.1 Build 153 11/29/2010 SJ Full Version +// ************************************************************ + + +//Copyright (C) 1991-2010 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module add2 ( + data0x, + data1x, + result); + + input [11:0] data0x; + input [11:0] data1x; + output [12:0] result; + + wire [12:0] sub_wire0; + wire [11:0] sub_wire3 = data1x[11:0]; + wire [12:0] result = sub_wire0[12:0]; + wire [11:0] sub_wire1 = data0x[11:0]; + wire [23:0] sub_wire2 = {sub_wire3, sub_wire1}; + + parallel_add parallel_add_component ( + .data (sub_wire2), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken (), + .clock () + // synopsys translate_on + ); + defparam + parallel_add_component.msw_subtract = "NO", + parallel_add_component.pipeline = 0, + parallel_add_component.representation = "UNSIGNED", + parallel_add_component.result_alignment = "LSB", + parallel_add_component.shift = 0, + parallel_add_component.size = 2, + parallel_add_component.width = 12, + parallel_add_component.widthr = 13; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: MSW_SUBTRACT STRING "NO" +// Retrieval info: CONSTANT: PIPELINE NUMERIC "0" +// Retrieval info: CONSTANT: REPRESENTATION STRING "UNSIGNED" +// Retrieval info: CONSTANT: RESULT_ALIGNMENT STRING "LSB" +// Retrieval info: CONSTANT: SHIFT NUMERIC "0" +// Retrieval info: CONSTANT: SIZE NUMERIC "2" +// Retrieval info: CONSTANT: WIDTH NUMERIC "12" +// Retrieval info: CONSTANT: WIDTHR NUMERIC "13" +// Retrieval info: USED_PORT: data0x 0 0 12 0 INPUT NODEFVAL "data0x[11..0]" +// Retrieval info: USED_PORT: data1x 0 0 12 0 INPUT NODEFVAL "data1x[11..0]" +// Retrieval info: USED_PORT: result 0 0 13 0 OUTPUT NODEFVAL "result[12..0]" +// Retrieval info: CONNECT: @data 0 0 12 0 data0x 0 0 12 0 +// Retrieval info: CONNECT: @data 0 0 12 12 data1x 0 0 12 0 +// Retrieval info: CONNECT: result 0 0 13 0 @result 0 0 13 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL add2.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL add2.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add2.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add2.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add2_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add2_bb.v TRUE +// Retrieval info: LIB_FILE: altera_mf diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2_bb.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2_bb.v new file mode 100644 index 0000000..bdc2482 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add2_bb.v @@ -0,0 +1,71 @@ +// megafunction wizard: %PARALLEL_ADD%VBB% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: parallel_add + +// ============================================================ +// File Name: add2.v +// Megafunction Name(s): +// parallel_add +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 10.1 Build 153 11/29/2010 SJ Full Version +// ************************************************************ + +//Copyright (C) 1991-2010 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + +module add2 ( + data0x, + data1x, + result); + + input [11:0] data0x; + input [11:0] data1x; + output [12:0] result; + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: MSW_SUBTRACT STRING "NO" +// Retrieval info: CONSTANT: PIPELINE NUMERIC "0" +// Retrieval info: CONSTANT: REPRESENTATION STRING "UNSIGNED" +// Retrieval info: CONSTANT: RESULT_ALIGNMENT STRING "LSB" +// Retrieval info: CONSTANT: SHIFT NUMERIC "0" +// Retrieval info: CONSTANT: SIZE NUMERIC "2" +// Retrieval info: CONSTANT: WIDTH NUMERIC "12" +// Retrieval info: CONSTANT: WIDTHR NUMERIC "13" +// Retrieval info: USED_PORT: data0x 0 0 12 0 INPUT NODEFVAL "data0x[11..0]" +// Retrieval info: USED_PORT: data1x 0 0 12 0 INPUT NODEFVAL "data1x[11..0]" +// Retrieval info: USED_PORT: result 0 0 13 0 OUTPUT NODEFVAL "result[12..0]" +// Retrieval info: CONNECT: @data 0 0 12 0 data0x 0 0 12 0 +// Retrieval info: CONNECT: @data 0 0 12 12 data1x 0 0 12 0 +// Retrieval info: CONNECT: result 0 0 13 0 @result 0 0 13 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL add2.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL add2.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add2.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add2.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add2_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add2_bb.v TRUE +// Retrieval info: LIB_FILE: altera_mf diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4.qip b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4.qip new file mode 100644 index 0000000..1581b5d --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4.qip @@ -0,0 +1,4 @@ +set_global_assignment -name IP_TOOL_NAME "PARALLEL_ADD" +set_global_assignment -name IP_TOOL_VERSION "10.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "add4.v"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "add4_bb.v"] diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4.v new file mode 100644 index 0000000..8fc5260 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4.v @@ -0,0 +1,113 @@ +// megafunction wizard: %PARALLEL_ADD% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: parallel_add + +// ============================================================ +// File Name: add4.v +// Megafunction Name(s): +// parallel_add +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 10.1 Build 153 11/29/2010 SJ Full Version +// ************************************************************ + + +//Copyright (C) 1991-2010 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module add4 ( + data0x, + data1x, + data2x, + data3x, + result); + + input [11:0] data0x; + input [11:0] data1x; + input [11:0] data2x; + input [11:0] data3x; + output [13:0] result; + + wire [13:0] sub_wire0; + wire [11:0] sub_wire5 = data3x[11:0]; + wire [11:0] sub_wire4 = data2x[11:0]; + wire [11:0] sub_wire3 = data1x[11:0]; + wire [13:0] result = sub_wire0[13:0]; + wire [11:0] sub_wire1 = data0x[11:0]; + wire [47:0] sub_wire2 = {sub_wire5, sub_wire4, sub_wire3, sub_wire1}; + + parallel_add parallel_add_component ( + .data (sub_wire2), + .result (sub_wire0) + // synopsys translate_off + , + .aclr (), + .clken (), + .clock () + // synopsys translate_on + ); + defparam + parallel_add_component.msw_subtract = "NO", + parallel_add_component.pipeline = 0, + parallel_add_component.representation = "UNSIGNED", + parallel_add_component.result_alignment = "LSB", + parallel_add_component.shift = 0, + parallel_add_component.size = 4, + parallel_add_component.width = 12, + parallel_add_component.widthr = 14; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: MSW_SUBTRACT STRING "NO" +// Retrieval info: CONSTANT: PIPELINE NUMERIC "0" +// Retrieval info: CONSTANT: REPRESENTATION STRING "UNSIGNED" +// Retrieval info: CONSTANT: RESULT_ALIGNMENT STRING "LSB" +// Retrieval info: CONSTANT: SHIFT NUMERIC "0" +// Retrieval info: CONSTANT: SIZE NUMERIC "4" +// Retrieval info: CONSTANT: WIDTH NUMERIC "12" +// Retrieval info: CONSTANT: WIDTHR NUMERIC "14" +// Retrieval info: USED_PORT: data0x 0 0 12 0 INPUT NODEFVAL "data0x[11..0]" +// Retrieval info: USED_PORT: data1x 0 0 12 0 INPUT NODEFVAL "data1x[11..0]" +// Retrieval info: USED_PORT: data2x 0 0 12 0 INPUT NODEFVAL "data2x[11..0]" +// Retrieval info: USED_PORT: data3x 0 0 12 0 INPUT NODEFVAL "data3x[11..0]" +// Retrieval info: USED_PORT: result 0 0 14 0 OUTPUT NODEFVAL "result[13..0]" +// Retrieval info: CONNECT: @data 0 0 12 0 data0x 0 0 12 0 +// Retrieval info: CONNECT: @data 0 0 12 12 data1x 0 0 12 0 +// Retrieval info: CONNECT: @data 0 0 12 24 data2x 0 0 12 0 +// Retrieval info: CONNECT: @data 0 0 12 36 data3x 0 0 12 0 +// Retrieval info: CONNECT: result 0 0 14 0 @result 0 0 14 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL add4.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL add4.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add4.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add4.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add4_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add4_bb.v TRUE +// Retrieval info: LIB_FILE: altera_mf diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4_bb.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4_bb.v new file mode 100644 index 0000000..2007aed --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/add4_bb.v @@ -0,0 +1,79 @@ +// megafunction wizard: %PARALLEL_ADD%VBB% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: parallel_add + +// ============================================================ +// File Name: add4.v +// Megafunction Name(s): +// parallel_add +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 10.1 Build 153 11/29/2010 SJ Full Version +// ************************************************************ + +//Copyright (C) 1991-2010 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + +module add4 ( + data0x, + data1x, + data2x, + data3x, + result); + + input [11:0] data0x; + input [11:0] data1x; + input [11:0] data2x; + input [11:0] data3x; + output [13:0] result; + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: MSW_SUBTRACT STRING "NO" +// Retrieval info: CONSTANT: PIPELINE NUMERIC "0" +// Retrieval info: CONSTANT: REPRESENTATION STRING "UNSIGNED" +// Retrieval info: CONSTANT: RESULT_ALIGNMENT STRING "LSB" +// Retrieval info: CONSTANT: SHIFT NUMERIC "0" +// Retrieval info: CONSTANT: SIZE NUMERIC "4" +// Retrieval info: CONSTANT: WIDTH NUMERIC "12" +// Retrieval info: CONSTANT: WIDTHR NUMERIC "14" +// Retrieval info: USED_PORT: data0x 0 0 12 0 INPUT NODEFVAL "data0x[11..0]" +// Retrieval info: USED_PORT: data1x 0 0 12 0 INPUT NODEFVAL "data1x[11..0]" +// Retrieval info: USED_PORT: data2x 0 0 12 0 INPUT NODEFVAL "data2x[11..0]" +// Retrieval info: USED_PORT: data3x 0 0 12 0 INPUT NODEFVAL "data3x[11..0]" +// Retrieval info: USED_PORT: result 0 0 14 0 OUTPUT NODEFVAL "result[13..0]" +// Retrieval info: CONNECT: @data 0 0 12 0 data0x 0 0 12 0 +// Retrieval info: CONNECT: @data 0 0 12 12 data1x 0 0 12 0 +// Retrieval info: CONNECT: @data 0 0 12 24 data2x 0 0 12 0 +// Retrieval info: CONNECT: @data 0 0 12 36 data3x 0 0 12 0 +// Retrieval info: CONNECT: result 0 0 14 0 @result 0 0 14 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL add4.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL add4.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add4.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add4.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add4_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL add4_bb.v TRUE +// Retrieval info: LIB_FILE: altera_mf diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/greybox_tmp/cbx_args.txt b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/greybox_tmp/cbx_args.txt new file mode 100644 index 0000000..a267565 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/greybox_tmp/cbx_args.txt @@ -0,0 +1,13 @@ +INTENDED_DEVICE_FAMILY="Cyclone IV E" +LPM_HINT=RAM_BLOCK_TYPE=M9K +LPM_TYPE=altshift_taps +NUMBER_OF_TAPS=3 +TAP_DISTANCE=800 +WIDTH=12 +DEVICE_FAMILY="Cyclone IV E" +aclr +clken +clock +shiftin +shiftout +taps diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo.qip b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo.qip new file mode 100644 index 0000000..a10f306 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo.qip @@ -0,0 +1,3 @@ +set_global_assignment -name IP_TOOL_NAME "FIFO" +set_global_assignment -name IP_TOOL_VERSION "10.1" +set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "rgb_fifo.v"] diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo.v b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo.v new file mode 100644 index 0000000..d024177 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo.v @@ -0,0 +1,178 @@ +// megafunction wizard: %FIFO% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: dcfifo + +// ============================================================ +// File Name: rgb_fifo.v +// Megafunction Name(s): +// dcfifo +// +// Simulation Library Files(s): +// +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 10.1 Build 153 11/29/2010 SJ Full Version +// ************************************************************ + + +//Copyright (C) 1991-2010 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module rgb_fifo ( + aclr, + data, + rdclk, + rdreq, + wrclk, + wrreq, + q, + rdempty, + wrfull); + + input aclr; + input [25:0] data; + input rdclk; + input rdreq; + input wrclk; + input wrreq; + output [25:0] q; + output rdempty; + output wrfull; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_off +`endif + tri0 aclr; +`ifndef ALTERA_RESERVED_QIS +// synopsys translate_on +`endif + + wire sub_wire0; + wire [25:0] sub_wire1; + wire sub_wire2; + wire wrfull = sub_wire0; + wire [25:0] q = sub_wire1[25:0]; + wire rdempty = sub_wire2; + + dcfifo dcfifo_component ( + .rdclk (rdclk), + .wrclk (wrclk), + .wrreq (wrreq), + .aclr (aclr), + .data (data), + .rdreq (rdreq), + .wrfull (sub_wire0), + .q (sub_wire1), + .rdempty (sub_wire2), + .rdfull (), + .rdusedw (), + .wrempty (), + .wrusedw ()); + defparam + dcfifo_component.intended_device_family = "Cyclone IV E", + dcfifo_component.lpm_numwords = 4096, + dcfifo_component.lpm_showahead = "ON", + dcfifo_component.lpm_type = "dcfifo", + dcfifo_component.lpm_width = 26, + dcfifo_component.lpm_widthu = 12, + dcfifo_component.overflow_checking = "ON", + dcfifo_component.rdsync_delaypipe = 5, + dcfifo_component.underflow_checking = "ON", + dcfifo_component.use_eab = "ON", + dcfifo_component.write_aclr_synch = "OFF", + dcfifo_component.wrsync_delaypipe = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" +// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" +// Retrieval info: PRIVATE: AlmostFull NUMERIC "0" +// Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" +// Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" +// Retrieval info: PRIVATE: Clock NUMERIC "4" +// Retrieval info: PRIVATE: Depth NUMERIC "4096" +// Retrieval info: PRIVATE: Empty NUMERIC "1" +// Retrieval info: PRIVATE: Full NUMERIC "1" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E" +// Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" +// Retrieval info: PRIVATE: LegacyRREQ NUMERIC "0" +// Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" +// Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" +// Retrieval info: PRIVATE: Optimize NUMERIC "1" +// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" +// Retrieval info: PRIVATE: UsedW NUMERIC "1" +// Retrieval info: PRIVATE: Width NUMERIC "26" +// Retrieval info: PRIVATE: dc_aclr NUMERIC "1" +// Retrieval info: PRIVATE: diff_widths NUMERIC "0" +// Retrieval info: PRIVATE: msb_usedw NUMERIC "0" +// Retrieval info: PRIVATE: output_width NUMERIC "26" +// Retrieval info: PRIVATE: rsEmpty NUMERIC "1" +// Retrieval info: PRIVATE: rsFull NUMERIC "0" +// Retrieval info: PRIVATE: rsUsedW NUMERIC "0" +// Retrieval info: PRIVATE: sc_aclr NUMERIC "0" +// Retrieval info: PRIVATE: sc_sclr NUMERIC "0" +// Retrieval info: PRIVATE: wsEmpty NUMERIC "0" +// Retrieval info: PRIVATE: wsFull NUMERIC "1" +// Retrieval info: PRIVATE: wsUsedW NUMERIC "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E" +// Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "4096" +// Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "ON" +// Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" +// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "26" +// Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "12" +// Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" +// Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "5" +// Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" +// Retrieval info: CONSTANT: USE_EAB STRING "ON" +// Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF" +// Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "5" +// Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND "aclr" +// Retrieval info: USED_PORT: data 0 0 26 0 INPUT NODEFVAL "data[25..0]" +// Retrieval info: USED_PORT: q 0 0 26 0 OUTPUT NODEFVAL "q[25..0]" +// Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL "rdclk" +// Retrieval info: USED_PORT: rdempty 0 0 0 0 OUTPUT NODEFVAL "rdempty" +// Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq" +// Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL "wrclk" +// Retrieval info: USED_PORT: wrfull 0 0 0 0 OUTPUT NODEFVAL "wrfull" +// Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq" +// Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 +// Retrieval info: CONNECT: @data 0 0 26 0 data 0 0 26 0 +// Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 +// Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 +// Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 +// Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 +// Retrieval info: CONNECT: q 0 0 26 0 @q 0 0 26 0 +// Retrieval info: CONNECT: rdempty 0 0 0 0 @rdempty 0 0 0 0 +// Retrieval info: CONNECT: wrfull 0 0 0 0 @wrfull 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL rgb_fifo.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL rgb_fifo.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL rgb_fifo.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL rgb_fifo.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL rgb_fifo_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL rgb_fifo_bb.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL rgb_fifo_waveforms.html TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL rgb_fifo_wave*.jpg FALSE diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo_wave0.jpg b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo_wave0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdf6fa120959cffcab46516e5ca1ba86b1968712 GIT binary patch literal 108681 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 T5%+#paQ>Va{V#rpEDZh&%u(Qm literal 0 HcmV?d00001 diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo_waveforms.html b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo_waveforms.html new file mode 100644 index 0000000..241a280 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/TERASIC_CAMERA/rgb_fifo_waveforms.html @@ -0,0 +1,16 @@ + + +Sample Waveforms for "rgb_fifo.v" + + +

Sample behavioral waveforms for design file "rgb_fifo.v"

+

The following waveforms show the behavior of dcfifo megafunction for the chosen set of parameters in design "rgb_fifo.v". The design "rgb_fifo.v" has a depth of 4096 words of 26 bits each. The fifo is in show-ahead synchronous mode. The data becomes available before 'rdreq' is asserted; 'rdreq' acts as a read acknowledge.

+
+

Fig. 1 : Wave showing read and write operation.

+

The above waveform shows the behavior of the design under normal read and write conditions with aclr .

+
+

Fig. 2 : Wave showing FIFO full operation.

+

The above waveform shows the behavior of the FIFO under wrfull condition. In the example above, data is written into the FIFO till it is full, then data is read back.

+

+ + diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/Docs/I2C_tests.c b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/Docs/I2C_tests.c new file mode 100644 index 0000000..99c8cce --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/Docs/I2C_tests.c @@ -0,0 +1,99 @@ +/* these test were created to show how to use the opencores I2C along with a driver found in + * the I2C_opencores component to talk to various components. + * This test example uses a littel daughter board from microtronix + * it has a I2c to parallel chip (PCA9554A) a EEPORM and real time clock. + * I chose not to impliment the real time clock. + * But you can see how the calls work + * There are only 4 functions associalted with the I2C driver + * I2C start - send start bit and address of the chip + * I2C_read - read data + * I2C_write. - write data + * how and when each of these get used is based on the device you + * are talking to. + * See the driver code for details of each function. + * */ + +#include +#include "system.h" +#include "i2c_opencores.h" +int main() +{ + int data; + int i; + // testing the PCA9554A paralle interface + // this writes a 5 to the leds and read the position of the dip switches. + printf(" tesing the PCA9554A interface the\n the LEDS should be at a 5 \n"); + // address 0x38 + // set the fequesncy that you want to run at + // most devices work at 100Khz some faster + I2C_init(I2CA_BASE,ALT_CPU_FREQ,100000); + I2C_init(I2CA_BASE,ALT_CPU_FREQ,100000); + // for the parallel io only the first 4 are output s + + // the PCA9554A uses a command word right after the chip address word ( the start work) + I2C_start(I2CA_BASE,0x38,0);// chip address in write mode + I2C_write(I2CA_BASE,3,0); // write to register 3 command + I2C_write(I2CA_BASE,0xf0,1); // set the bottom 4 bits to outputs for the LEDs set the stop + + // now right to the leds + I2C_start(I2CA_BASE,0x38,0); // address the chip in write mode + I2C_write(I2CA_BASE,1,0); // set command to the pca9554 to be output register + I2C_write(I2CA_BASE,5,1); // write the data to the output register and set the stop + +//now read the dip switches +// first set the command to 0 + I2C_start(I2CA_BASE,0x38,0); //address the chip in write mode +data = I2C_write(I2CA_BASE,0,0); // set command to read input register. + I2C_start(I2CA_BASE,0x38,1); //send start again but this time in read mode +data = I2C_read(I2CA_BASE,1); // read the input register and send stop +data = 0xff & (data >>4); +printf("dip switch 0x%x\n",data); + +printf("\nNow writing and reading from the EEPROM\n"); +//address 0x50-57 +I2C_start(I2CA_BASE,0x50,0); // chip address in write mode +I2C_write(I2CA_BASE,0,0); // write to starting address of 0 +// now write the data +for (i=0;i<7;i++) // can only write 8 bites at a time +{ + I2C_write(I2CA_BASE,i,0); // writ the data +} + I2C_write(I2CA_BASE,i,1); // write last one with last flag + + while ( I2C_start(I2CA_BASE,0x50,0)); // make sure the write is done be fore continuing. + // can ony burst 8 at a time. + +I2C_write(I2CA_BASE,8,0); // write to starting address of 8 +// now write the data +for (i=0;i<7;i++) // write the next 8 bytes +{ + I2C_write(I2CA_BASE,i+8,0); // +} + I2C_write(I2CA_BASE,i+8,1); // write last one with last flag + + while ( I2C_start(I2CA_BASE,0x50,0)); // make sure the write is done be fore continuing. + + //now read the values +// first set the command to 0 + I2C_start(I2CA_BASE,0x50,0); //set chip address and set to write/ + I2C_write(I2CA_BASE,0,0); // set address to 0. +I2C_start(I2CA_BASE,0x50,1); //set chip address in read mode +for (i=0;i<15;i++) +{ + data = I2C_read(I2CA_BASE,0); // memory array + printf("\tdata = 0x%x\n",data); +} + +data = I2C_read(I2CA_BASE,1); // last memory read + printf("\tdata = 0x%x\n",data); + + + + + + + + printf("Hello from Nios II!\n"); + + return 0; +} diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/Docs/i2c_specs.pdf b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/Docs/i2c_specs.pdf new file mode 100644 index 0000000000000000000000000000000000000000..72021df117397a4c324ee17a0515db6f04af5a93 GIT binary patch literal 211471 zcmbrk1yml((l&|(4ess`+}+*Xg1fr~g1fs0cZU$%-QC^Y-Tgwc&-wP*=Ue~3?!E7< zneMKxuCD5Os=8-@SXNM&ijJBAns{?-Yzi8Zj)4}B7SCGG44RV@51K~O)XGrT&eX-w z0FUmyDT7DHK>uEf;;G}Y(z4(&u`=Lkez4)u)6p@qe6R@NF)^{Qd@xDl(XqZ4ig@(2 ztSn6L6mD)jXhSQ558-(KpMK7EhDOjI8qzW0LDT;AqhrSVUBk12hWv}f%tZH38XW`M zyI~){|KX!!VrKX+8Z+B}$)jVVr~fA(JtM<^%|Xx1#P&}<20Hrx;$vo{W&8&p0}~xR z%RgvLObqn@)P;$Ok@=rATG|g+{L?lDX4e0qIoRo%S{T~B`xKf+;oX~fbc{^UG-6gp z)_8Ou>xU=*?kIU{YlnCLzN`DYDQjo=?YHX~Kin!NsLsj2W~8Ufs!PkLYskW6sHaEA z$jYFntIx=4$joTO#LCM3f9KGA2LZIbgRY&!Z(q_v6B7%`2>*t|yJJ75{x|d#zuOq% z(Fo`|=vr7CziS|?Yiwx$uI{^8zx9)`F|^{-cQCcKdI#eNEI-IJUscuctQ;*Y{`U9) z=*M6wYlC-zO7@1*)>ek^G;u{dI{J5q{jv6)K~h)G(BfkXra#2L;gyc@9V!3PjYa{F zk(Leb9obCpj(i6{6Z3mZ*wn(o(C)po&~-2rG}Qk+o1~$Yv4hF`a=$zLeVz}A_6~N2 zx|Yz8qQQDPIy#^Pj-V)@puHKNfj)!dwYLwpgCgyjc%7r6QK#$ctSfGP9kuQnB0Kj! zW1W+l2z}lYn!8xMD6+TOFhfo4eeID~n;E{d8CP2HBKgG)Dwbxt!Wj{b)hFFgy|=xv zYtW>+9QG1GyjA8S7RW}L5u3#9-F2UTYSbELCk@769f3=kzr!MkW6K`rX#e8@3dE_O z8dCJZA!v`lT>k;O>%<$yFfCq^9-L~)#~I1G2!ruRI-J?ToJR6;R}KpLOGrqn1Cxzu zK}5%}Y+r2B`y2(rn5+SXNMb@bjU&1!kov$q0tWd~`a1h201q)@IXS?h@_ikSYF$ z4Tu@7p-wY9yr?~J1pzCil=p;e2VDEFgbR=^m)<1KtIM|sOFeL7aQzq^3!@+Hl#tbi z#QI;NG=PoDby?ey+J70$ss^ayOrbHCR5I+-(syporFb96AVi@6*`leU*YjF|3~e*e zmfX^NDS#@p(E&5$e4Dg5J#=2GaKb?b_onl3(#L4zxt8Z z{_^Wz3GR=_Kfuh$O#AP&_Xno`fcOVCe?!#H(CR$^>E2`cHzef^?X4Z{^glq)@PWRM z7!|O#a(L(ZApI*26ipm0_3&8!!YqxHp@FF`zqRvwP<&)^W;%L27B>3dSz5r(+U9@n zk+*hu2kkri-*fbzS^ur9tev&Kf}z8^T$=Yi;~o8m&JMrD3cu@w_r6=uC@Rvw>-9&G z_Xgv8*X(azEEx9#uJOzrF)1Wa`8@P2Q_lDdDj=-xLeXc`q$0|yiPcPG&^ zeYl_YJw^Q~|Ni{wV|d5ZM@i4Z`kUv2@1HmHzX*T2K8E~V49okB%*-r!ALYO5%ye{k zEbk&eZU$C1yx$_;VffC*_MQZPv%YtIu+jc*F)=a!hY-4tE&A^l^uKKQt;{<&x4{nh!Q(!cEd5c%PEA*=WFZE9tV z_r9K1d{*|R|0Y1w@ax(e{)YVj6%+q}Dcx@8_{|nx1ALp*W!<+G) z@*CcCboB41CtCVH$F~23x3tKA!TS%Y{|n$$ALp;XApQ|!A9DTzIOB)w{%PY!7WiLm z{E+egAK-t-%Afk*;r)m5;otwh-jVg^VtZedkLv@azsrB4^AF_z&_59MKfNCa{u3YX zIQldEzn_1{)kpmUUw;oc=s%eK6NP^V;va=S0_fxZ*N~6lAG&;$ANTJ7`+tYm|Fe_- z3$cHl4gUkNA5r#~H);Ml-!Ra>r_TTN1oScTe@;AcDnnM9eela`<*X72K@kP6`Fk5m z2&6Uy?Vw zM#|Q4xh;m>Zzk(%d$}LKIXaO)o@}ffgqF9}oUDL-`8oQ0b>MI@HdK-!U856zu1DjMTR<>CxhBBvy!fTU3{Ep!z9hq>dx-&bTLz6z3OrA{9nlr;FX!y>L+HHHld02dd=@IX&|{ z_ghp@4HL%+Z_E9D#fOR}OPtC|>zW()hFW>}<+sBN3a;2DUcOr}M7c z$fLkDYW>L2qm-qkBL{#E6ZFraBCJ>H;f<)Bs_w_P4>%<r6aXPynO4{mQZ zFS>1>&ZMDb$8=BL&>GSX=}l<*Tn+c#p(>8nR%&z_6wXy+V>q?ZIIRt@mTe$jsOke_ z@mjjZ86z1h;g&Pp88*Dvk8?|J7B@19wiRq1o`7P<%Gp5CB1==2s!w+%Q*G$4HI#gW z=MvguPNe&{mAe;rBXjc)E>|Z7(7KVW?u(1JBeyGehELwt-zJx8Q%<%&InCDI9J-d6 zH~9wm6{(9L>9i#_&LP9OM|!0}X*dPd%J}WN9agB|A)BA()t%f<2YU;6zi8E=xdP_5 z#JTIKikLtnP?I4pVP4v7de{u5=yD(#^1|b}Yh(7a*oe;w=c+A{V&$?vwR@!4<09^j zRXQE9wkP;X|8m~+>u030w{Q=07gyudy^nZf-5>_3E4Uliwa)r^qATzVVBnKL)Ki|! z#yHC9jh8kQeUOz>rBwQo9JbD>&~>S$>5k7hTT4;r%RZuN(ko zxL@8#a>T#F@?V+?oN9Zeg@XDTWFPS2i6Xs?izR^212T(bp35KS(jgl7y zY5M_Fiez=YEL!q8>v57WDGa-}-S~Tl^#yw1;c}c;1FL=K2bh9}U9|wdx<{R}hA9~w z&UGA96e942_{I2?$bk(ae2cGhasaj{lmJ&R5<7*wcgtncPnK0HwEqI7!mOF}+s-cMtEzJn`eM#&N^V@d`VB-l_x-SE=|kC}@}QVgHdK5$@{FeXZ~Ct4Yn zFUlA#M5v6c{4gdhvxA(Zw?f}xMj?TWm40X(NZ==pol9^hilptX+pb)@jL$e4@N7ap zoU%W7NiTbZijq%28O90u7}!I;=y*>9k;7EPo*?4Gc(I5*v9Q!>xF(Wt8A5G<+FaFO zpg|buHyerxmVC8-yPYcAAf5hkYyR)LS`h?vfc9qK>fo*U!?Y>ny#^ye(>jv+7>o{3 zGZ znUvf_9<~E?ZGV8mV@IZy+I~jXbjz+RIH`eRHR(sy*ifKtp{0=OsZBVypKO>a)|J5c z4A4kkEcR1}b_ZS$5Q>XR2tl2`Pk3>*8jE?Op1BH;e)SplD=!9lObKmB1p21 ziWivrf(mTFhD@j}4w^QNPL4(PN2JQ? za=SOmb#nUNEjw2I8FBZJNnnYg&DYy2l&TUQ1zE#leS5@B=f+RdfFVV=Olcl%Oux(` z1gk*Kl9zIWU0vJY#7~OI=8F*dDGU4j3g! zdrJonFwI-?K-+8)x)!oJhCmTS%)jy+kB22Iwi|e)R>|H4Ga{U`79=JS4Mot>VwOg8 zb?#;*F%cFwz<x^i#U*i1NERHR68Fn@2~I&jz9JmQrYeb?{O9Br81^&;8?;7h zg|AQ8wBpes7XXW(@_xkW!6ANfsAfnW3Pg{d*`eEyt`4X^Py|H%OC<=jsOV>(M!)WAPKe3l7La77ZeZ(&Z5Et410Yw6cdugjJ*Vmxq-?etr9{#*A z?dYtn2m}kXzSq+o>43R43luJ@yyw7TcY^^zE(K!JT$QuKW^&VM^VkXDSjq?*et7DK zDgN0KA|6HZuxMQ)x3mYTSp3Y*xl8~t^@g0HW)dZASS9KJupJ-Tuh`UuYZP5vx3`dH zCajYros*p$gfZT7ZebZ`4ygy2im?QriHMm=lj*a)Z8c|u%c&mNkEGhl?-%%qy5TPU z*`6~6&$T(y^#MTK(Q2S}rCSgP6k`@j#@t{GfhYZ=-rZ!HgouDT;dq@}X!*X=0h?$x z@VNCdpJHY7=>y3Jzv_Aw&Gg4KdRiXN#tmGF%n{Oc2)Ig_0K)tcuJbqd1( zA6~#JO9({AGe+kRPM52;pXq*gM+a;eOR~K2hhou6^ItuK77y{{m5FQ}bUVP~JAX`h zhF#uA2iQ||UEVz+f7e0&BAtCb6pn+{maT>s&HK|(c%WtSiRaY?{KZG3`fheNsc8Lq zpY}kb7FKN9B}mS&GHs~Fl@4Cs@Cak!?WCOm8KeSFsog#zZ2AYC5B4nA&P?zFSMqU9 zgN_lVOvxD?Sk=lmESgA4s|agEeCKX0@1hs%Ep%KOQ_()p^3ALOTBc$e z`!5#HTt71D{g~58Bwyy%&B6T<^vP|@hzal9Wcx*x2+hm2ubN>ds3LFzRT|kuCT;nhHoZ> z!}VtSsuP=pA(Wv*coSxj^?lEDCc(c*0eg4;n;_&#r#zDjUn|;vOggc@ws1#`>uT3C z4agD)p|^mr28~*turkl)V25}gFY8RF>@Eo2-J&uyOf@(L^VRsn;-!7w#3XqB9Ezhw zW6`M2nnuqAc8?wlsL`ZkD&sASEK5DV-ho6cv(K8(OTbsf1iQnhXWQt$L1o&YdeY~> zvx$bPI!v(sry+8`l+xj>&C;W&2egC7ma?wrv!=V?pmH+jwfO6J|0d*WJdwtiv_Crjg;{y#W++jlBzy~`E8<9GqM zAwAZqwX0nFRTWX|IDC0`Dj2V?En^KVK0(4nt1MRhaN#0wXM(5UK`O&0LcfS&;37>zcDQi( z3bdvi3gy`a{13*N8iJg-LW-pQo#QHg1&Kft8;%rz6W%#}K&Z+;N%c&txn0dVgbrasplZ#;3>hI^AiSWVh5;Xblv@|qCD>F`s@S@4vwZx zi|^?q?m_yq!B{(u)^POxQ{Zmer$$*%eqk*u<cTrN9>1Qoftdr3;@NMFOs~Ufd3w@{M-(K&4$7!RKF) zFDxjW^&dZP?p8HbKYDglFZ&D#bqxaE5oETGy<)4)`@sWXF~L3;?fP?} zTfGq}WC`q3UG6-skwQwq2ZMbL)JOAW5bvTWC%{hd%Ylz`=;MVDMzeqrWL!oIV)P?G z)|SwW%Oq@#HlR%S^0|kkx*LvBkYKgP=)f9BkB)jk@HqFTFUD&YjfiX)B>;cqcn_Ud zra2Op2%PGkRCalngiEr|+7?_zC(8Tg*2qPytDJV`xX(l*>NC1wvK~Ob9^kA#RK$9E zGgTkel0i09uWm9cv0%1i)&ttb?Tni12$?-j$MhP1d885t#e!QX2i6zL?HMP#^D`qar-8Ek{x!v-$ZxCf??=;!tyaIE8vjn)gwy4pNe0mhkGc( zXd*;aGSMd<#D`l+|nN=)=Du>Z}bA#%DnIKV3spEV}4z zj)<|sNv!Z6>uBuRKzJIr#2Eh4kb}C$d7@&7bk>jV`;wrC3A33rFE4Q@3T!K8e9+s! zJ7C*TmP}SBKDXr%+%h;!R|4Omh3>1NCf$iZ+2s+p1%s0%k1<7`kl;=%r98x8Cmw$U z?^3O0O#JnzG;J2*$X|1fd!uc=TxYiA#i3ni5G|}vWA_nYhv;W;0?A}*x{CxkS9tsd zy>`ep*8=&HVMc1g)un8Df16UhTHb7N*I{|FM%vtngZjyY=d_`+pX12mM3U0Xu;=hw z_cZf~q_KhlbJ9_MWj>_T!i9Tu_i3^u_16%B=0Mn_EBVwO!`qcIjE2C1(vHYY9Tp~n z?1asPS%j{AVbR9n801RfkRAI5s=IA}pW+-f`NiU&^wq=yTS?(T9t zb-VLvUpP)$ZWa2tj1_qoLc^6+ZUDE!K~&=c1aHF zMeNdVrOdMt&xd#20~rpxv;BVdcQ0$-yxv3`hx>JRbU>(HGsNu<)a=XZXkBrLD%;&D@RcB6pqUmE~1O8AXleSrcff=No~yjS;BGH z05f~z2(_Z-dIR!OtCi*6sOXtTqh3}jNYRsQkycAhdx_-g#Wg!xtFowmTy_ibB=MAP ziDiz3%Lc=W!wQ_HnPxh=F}gF#!vV`-%__xfemkX;ZS9+p&O|>Lq9mj@4cP0hI5KWL zt+w#M06k9;ga@WS1L!X3&e|rrHjz=t-+np$d@6-P(N*xJibgf-7C2Qo{DSJirfgJR zWCj$OTGLU+JV{A-Hc22=eTHgBk$Bp<+bpcdd=mVvTB{Fnw{2OgBbB5irBcEDr~JZz zid-p-J}@((N+Y}`%tbb^Zch^Epj&S;w0x*RYYWXciPGT`D~qI6@z-fh`O}{_V~slH63kKhCnX&93~}O_>fREruPdT zm~d>}6CD_O>9&IlSvUFU6!R+n-npWWA!EcQIVowFefr21@V+sgmi|nEKF5M>@bQK; zOmYs@)wPBXk=Dri_ZiNn2u|13A6Dz!NnO+HA<^lZx;K><0ymUbem_NHHAR`9<{<>u zCk*c~qMJ3JY=uKj69-no`57GQ&O-RZJcEK&5O3g3`Hs}0TKo&H=RuQfSO`%oVqIV5YD$LTPINX*asd1xQ8NItQg_F4W)1kE!3QMI& zZS;Y?EyY73JGY8ac=AzVGQ>32n`bfv4HM#P0a?dSt^FD9-W|s#H)AfVIluw5gwY$b zNY~sU71b&njVkJ5)wvyZ0v}LnYv=U7omk1lxkOF|Yk!t00jDN2Fp`E?JK&{09Tgo* zYIFM?D0|f7m|xuTRkFIPI88`EhX`@y6-!$;Om?ot@b?aJEEIi-%#t1CH{jdERhw%&m}z+Mny4-3V87_dWujEa1+bDKG5pBK zH{(|ml%2lTU8Mb%-K~hk77|y@BkQRsY&yAKC`K;oMWiIJRJM8GbUI3Du8*uXbGc`K z#&&0W+OWoDj1?5`M@crRTdi)OsEW=<=SQH2DG~Zrt0KHLO-7*a+I#%h0?T&6tut-Q z)V{?MR!v+j+F3Muck9gT@L4m%d>LDaDua2`sOA)Bwz@G!PSGsDTX@ee z(A~lBHMUhK>Ua1-&?D^MVqyET6CBXg58V*Bl{Vef!!TyMo%WTJ?K2! zZ^1zKh9NTQ*0R``8W#|lfM!Fm2xpbkIBZ~(q@J{YV9y#y*2VdOJ|_jY!$=OqnY zV5-M3Pat$P%#6o{m3HHxJL37}IqjblnXOA2J{wD*Ct(|+1!Vm2Q&lFlGH8lN2~K&1 zoV{`zirr&zxMBbT4#S-5Ghf6CPuP14s~_MLlZXCRXZguj*_KYB8?z&=vyUeDwK8VB z75@QUzfL=l_ud3pZwaO3YtT6ukXuJzK<9Ks#LN_$)U~787<%q`r_ON9mIeAZss+r2 z$t|^*sV&eS&jc4dUltN*cpg$VGU!^2)cuJ^?qPSSAY28iCdTJ6X3U4{5tjlIY+L+V zC{69vX0JsR2cpvwQggs5L>t)HesD}UNQ`uqlZdXcZQppu^AjG_B=EGdU$8I}!_^Oo z3EcK^N(8A-VX>5jtlxX=)W5RcO-g-&DS5CHkSH;gMmH`I0;L~O6DVieGFpmSnX=mV z=;DkViwClIl3H$=z<*-tvnyR}MT4o3Dh5zDEXJVCUG4S$HNCWq!FATxrrAO@!KWHS zcu_px?lzyj=a~I#d{B()&f#elG{v);k0z}%_jMy|C5vhYm zR+kLKS_=!UvHVZPnyDAR2~8{(2=_!&-i1J7t0V5SgfZ2VxH%hRlp z^tpkv1wp=kVLY%Cf*Vb>%yTvGwo7m`F;j!z`7$}n@^PYr0O-S zd0?NIRr>~wV9bVAIVk}Cg0aU~H_rK5o}%2&jQwQ9PYpt^JEjb|&vu~X0(v=Q2A>yd zuOG&Gm#=Q@qe1MJ4025Pln8k%MqS4PxC*-J=vLAMeXK$r#2!bi2(bW+*4*j_VQfVJ zaSJ)dQxvm7_++1Y#HACkD2BeT?VAyvj%td2=WPn~oaO?_?Jj<#17#*N3ACR$c;~CH zZtDH4Kt6T(1$xiCXWlGR-6pbOT#Tw77Spcyk$c43k~=DrgLAKYV61{K;|z7LipK|c zjxHbG#K;Q5!!ZW;$$t3Zlp#+_e?8wFy0#oZyQ_iR8%*a7lobono)-5=nVpkTT->W6 z(TD%GHsaSZ{`cbvnvQ9;do1{LBu0r4T>1<4#=8ElMRKXx( z50a@0cJp{$Ib_&4y+Sdd=xe_oxxpy?ng-dbLFb#B2jWl3N8h^vYri~uf28&7rnd^KK&@ziQXweo3t_-|ns9=Fhre(8yxB7A4R)<2Jm%E&~y zjghtxPQr}Qw)lPBElS)s6&1ja-YX)E>9e10-DRV|m29^x7z~aIKx9q`Q(W>adDF(z zzD><5Gx1zU?^r_5LS&`*&J%|M*hrCu3*zFXr!C8Va1;~JjCqkB#Qo`8k#6%1ZG3T8 zKg0r(aO!2|THyQOdO=}QAv{@l0+a6`EwezVLmv9@q4fU|pl4H+j!UxQdZQSQ*3 zn8El)Ow_RPb`1;mLjs{Se?a>H&`;>pj0SF-2vB9xhr`QCFa9WKY97+d>5V=1z>K=9 z%LEM|bXzm1y;Dk$g88AN=7o_|T(&;jh;7b3woz;zIg-7*DFxOpOafT#&gJf=bSMyS zxZ|fZP9IJST!e>TQ>#a1HFw3tw_0V(r!(As%SLChu=5mSPPv;9_Bi|^f!|>DwKcet^g0=} zmh;sr(XLMZI|?u|sCvWD}R# zboH@Z>v9^Ss1C`xopQ7Mbg55l_og*Cb1D?3)(_XL6+4gl$bRA8=@`<6c;7-<;6N4e z;EdV{_LHUgTXc{mHf!S~%cq*WH2Q51F`zrUo;q!w(-!T`v%)_4a{-aWlqh-LR`NrN zC96Ty9s5h6CW+}Mc}TK0e)nf^wpYV*U1q98jzUT1B1x&Px&_pUSL%4OHV|n%P_Sb; zM-n?{rfVL+2%S}2__5FP+#Nr(y}$x#@3^bi@`ElB;=khv@xW@hL)#(UgYCL|KgR79 z$y`n8Hgs|0&l+Q)Jz@IJZGCU&SE($gCb@aoi{mb8o2h%2d}IywYz8f-*uD56?;6+t z$`F+pr5}E2%MO(qz1F>~%l?H+jA$c0_s&}Z#zU&a9}57(HV`aNO9wc!80>)20Ad@g z9oz=89$;B95g(=R0J$HP@wucuibg(;_;?Jk?bFZtTE%m%*aL;E*ZAHWuFwPB0IW_H z-5@Jm&*X&SHQ}F{e%4~V3nG|ki;RmqHxtwkG~?Et%@FP~_*{9X*-xk2V`+FV-YCIn zByg=M469W4nBhlPZ{{scpHA;|*N+HZjZM7Q$CbL*BupniJr-ZXlqpJ2U<6D>hB~L` z3!QTDtx;Sfp2BK;=QYhf7vx%uq+fpRc5P9>JxZ7G9|A^Q?YVXjaM@W~R&lpbpFwWJ zjX>=CUK?92CAP?|-_+rlyx5#8g&MxypzUB`HAS|Fsu?TRU)YWTyhzfB(qyq1SS=@! z1_Ggm_(c}fMCwexWC`w&r?xXdmY$K!R9C95)`uQXl||=8v~jIv41(CKhs5$ta`x#}~=+tA#U> z-JN^r=g}yD>%#@ks#d6{9@5!o64#coc{>_5j-kD+x9+|-=x3Fms8??g_h-*I&giVS zZRw$Uo>8uTGN*`_VU5tnGgSB5&BAIBNs@?m2Vd|LE67P`d;>e&?}Zh8JwFLf1eAAe zo1MF@!|p$Uufbz26vRZBU5ajK1h*E2pSz;^e=%J~cZ@u{81yM=c;!U@775oX}3pXoH~O|y0M zWoymwsg;jlit`EP0{5a;W^chM;^6Mhl+!)29<+oV=~T*E+wrbp6?+dc>}IPGgH-~| zHve1jI;$Qoc;Dh@ENk1_*;2h9;tw-n#O z>Slj34P(_?CF#Ly>0u>cXS;aQ?XQ=nEDJg?%F>k!-@sLvDeC`@m;vj-6>-nu8-8_wL%3ae0jzj01k7wfEC5i zvEjixv`#?009G#QJMZvJz4!jyE{02_R0|>cW?N#H{`oE8JfXx^pJ3L6BEh!lRnl5hC(9h#_MXj13UE2Y zdGTb6uN!7C(50ANf&@e51$}y#{;n(vHkElkDZkyWM zPcE@PUw-x!Rnki==6#c(CA+vhE9y`wt+XQyuUmtug0f?w{Tv1iQ(v=%z9KlQ(3=IE%Y-F#5Hqe)y8gJQYLT2OajHx%!ZEu$C;15SjRU7*R}q~ZMZd}=7xV$S z>(d-;x7TMigC6K16>nk>Fc!r{&;yW1FOPO_RMYmA_E5%tvYE{tigQVd^9MEWK50H_ zfX^o^vC29uHb|_Wkcwudy|TCh(An{;00g?fSm5SDH~^t%!uA6r^3tJi-ux)QS*7d$ zJPsQM2-6&u*RN0ZNM4^Ix%pJOmAhogJjEzB#VB!AO{f`nn>Qpeyc3#;v8yRh8B6ea zV){V5fu0)2KItbj>RrP#bwX1NYR?EXURCG9vJJt7^roJV3Zr4#f*vyxP0o(NXEZQY z^la|0@7GnJTcKg8VY5FhaWBFa1h<3T@%FtKw<3=+kJi|Tpj6ewG+&cR@@YOyny@Lw ziYPXAb7;YX)#>>6xH>&5R`wM#r`{2LtErXUUGBQIk;+qUr#6l=oNuT%99N^ddt`fl zRfQu92a;?Iqoq}22h*WBJ!L)lQ*`j!Bdfe}Pk2v&!t_z9c@K&*ICftbR1KZ@^W!Y} zYssj<(PJ^-6j3!oSV?I&{Vrp_!O@dg;ssGXvo6XHW*(dmFa>3y znm5`}pk@O8t`f)Zn6DoPBsu}6TKq^n-7%DDvQB+jPr<(HYcoWKc#=5Fsr-tlBcVb0 zWOh`UI7g;iGs8EYZL+*PyeFex$1hTWsW?NbupTSp%@!PLbtzWDyBmyR^U zYFT^pPz1-os>~2#7vjBguHmia+cfdVN|(ms9;#yH2QX%+K8x1Ai?5j|G=_E2aLJ@` zoCVvO`J}lm*pm_d)$aHw!BNb-GO+;cR*WUUiwj=21zz92WO8AS--1++09q>WKJoJg zKqB%?%=42Spb(?}Q1Upb)PAbccAY72*_^| z9CIkx%7C8uDhIEr$T@WCBrLV{*|b@TC0rJ}Rm$|1C7k|~1DG~{*Jv>gZ!9$LBh zx%j}JgtpmO4+t7Sszr(Be9X2*iIh}-)c8~v<_-!8x;zMWm$wP75ET(5#HcM^nY$y{ z($sA4C;E9z49Aaq!fTgRNExWyuX5ZD-*b6H>c?F8vUbFR1YKo|9d}e@t+R9TS1}VW zbw^ozgaR34$zzGiExm2XH z+erj=x#r2C^+V|}a9;W_BE3d1&KCT$$MqZbbt|A=_*AWv0;5TNcu9mk8tvgXD7IixYWaO3&DY*XuBXsN9V}E!vbaT5R6q@)y+O2- zp|}gknje=amRw1yezslHLNq%|`P4>L{Y>bH`n83QL$%!u{p;jXB-=FvgO|pyN~moq zheJr7YH3u=Q@!Gj%u37SdmK?o#3BQs1KpHt{Hn|hp&|nl+gjv(Il+|e>`G`MF@yjD zrh@>&FqvQcy`S3^Xf=RrvysA;d7Es4eb&d1<@uf{GSdtAhCeOm__+LlBHs@W>7wlh zgh3tz$ma^_EbjVsTL_6rR*D44Cqsx2NyZciAPdP
!+V_!#nNCgdJpJcL$$pe_(^ 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

$!*8+!jWjT$ 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⋘^_5TbYiv8GgfB!s{U43V^y5Q-SkQW$>}Iw;FT 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 /* load upper prescale bit */ + + IOWR_I2C_OPENCORES_CTR(base, I2C_OPENCORES_CTR_EN_MSK); /* turn on the core*/ + +} + +/**************************************************************** +int I2C_start + Sets the start bit and then sends the first byte which + is the address of the device + the write bit. +inputs + base = the base address of the component + add = address of I2C device + read = 1== read 0== write +return value + 0 if address is acknowledged + 1 if address was not acknowledged +15-OCT-07 initial release +*****************************************************************/ +int I2C_start(alt_u32 base, alt_u32 add, alt_u32 read) +{ +#ifdef I2C_DEBUG + printf(" Start I2C at 0x%x, \n\twith address 0x%x \n\tand read 0x%x \n\tand prescale 0x%x\n",base,add,read); +#endif + + /* transmit the address shifted by one and the read/write bit*/ + IOWR_I2C_OPENCORES_TXR(base, ((add<<1) + (0x1 & read))); + + /* set start and write bits which will start the transaction*/ + IOWR_I2C_OPENCORES_CR(base, I2C_OPENCORES_CR_STA_MSK | I2C_OPENCORES_CR_WR_MSK ); + + /* wait for the trnasaction to be over.*/ + while( IORD_I2C_OPENCORES_SR(base) & I2C_OPENCORES_SR_TIP_MSK); + + /* now check to see if the address was acknowledged */ + if(IORD_I2C_OPENCORES_SR(base) & I2C_OPENCORES_SR_RXNACK_MSK) + { +#ifdef I2C_DEBUG + printf("\tNOACK\n"); +#endif + return (I2C_NOACK); + } + else + { +#ifdef I2C_DEBUG + printf("\tACK\n"); +#endif + return (I2C_ACK); + } +} + +/**************************************************************** +int I2C_read + assumes that any addressing and start + has already been done. + reads one byte of data from the slave. on the last read + we don't acknowldge and set the stop bit. +inputs + base = the base address of the component + last = on the last read there must not be a ack + +return value + byte read back. +15-OCT-07 initial release +*****************************************************************/ +alt_u32 I2C_read(alt_u32 base,alt_u32 last) +{ +#ifdef I2C_DEBUG + printf(" Read I2C at 0x%x, \n\twith last0x%x\n",base,last); +#endif + if( last) + { + /* start a read and no ack and stop bit*/ + IOWR_I2C_OPENCORES_CR(base, I2C_OPENCORES_CR_RD_MSK | + I2C_OPENCORES_CR_NACK_MSK | I2C_OPENCORES_CR_STO_MSK); + } + else + { + /* start read*/ + IOWR_I2C_OPENCORES_CR(base, I2C_OPENCORES_CR_RD_MSK ); + } + /* wait for the trnasaction to be over.*/ + while( IORD_I2C_OPENCORES_SR(base) & I2C_OPENCORES_SR_TIP_MSK); + + /* now read the data */ + return (IORD_I2C_OPENCORES_RXR(base)); + +} + +/**************************************************************** +int I2C_write + assumes that any addressing and start + has already been done. + writes one byte of data from the slave. + If last is set the stop bit set. +inputs + base = the base address of the component + data = byte to write + last = on the last read there must not be a ack + +return value + 0 if address is acknowledged + 1 if address was not acknowledged +15-OCT-07 initial release +*****************************************************************/ +alt_u32 I2C_write(alt_u32 base,alt_u8 data, alt_u32 last) +{ + #ifdef I2C_DEBUG + printf(" Read I2C at 0x%x, \n\twith data 0x%x,\n\twith last0x%x\n",base,data,last); +#endif + /* transmit the data*/ + IOWR_I2C_OPENCORES_TXR(base, data); + + if( last) + { + /* start a read and no ack and stop bit*/ + IOWR_I2C_OPENCORES_CR(base, I2C_OPENCORES_CR_WR_MSK | + I2C_OPENCORES_CR_STO_MSK); + } + else + { + /* start read*/ + IOWR_I2C_OPENCORES_CR(base, I2C_OPENCORES_CR_WR_MSK ); + } + /* wait for the trnasaction to be over.*/ + while( IORD_I2C_OPENCORES_SR(base) & I2C_OPENCORES_SR_TIP_MSK); + + /* now check to see if the address was acknowledged */ + if(IORD_I2C_OPENCORES_SR(base) & I2C_OPENCORES_SR_RXNACK_MSK) + { +#ifdef I2C_DEBUG + printf("\tNOACK\n"); +#endif + return (I2C_NOACK); + } + else + { +#ifdef I2C_DEBUG + printf("\tACK\n"); +#endif + return (I2C_ACK); + } + +} diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_bit_ctrl.v b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_bit_ctrl.v new file mode 100644 index 0000000..77377de --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_bit_ctrl.v @@ -0,0 +1,540 @@ +///////////////////////////////////////////////////////////////////// +//// //// +//// WISHBONE rev.B2 compliant I2C Master bit-controller //// +//// //// +//// //// +//// Author: Richard Herveille //// +//// richard@asics.ws //// +//// www.asics.ws //// +//// //// +//// Downloaded from: http://www.opencores.org/projects/i2c/ //// +//// //// +///////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2001 Richard Herveille //// +//// richard@asics.ws //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer.//// +//// //// +//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// +//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// +//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// +//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// +//// 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. //// +//// //// +///////////////////////////////////////////////////////////////////// + +// CVS Log +// +// $Id: i2c_master_bit_ctrl.v,v 1.11 2004/05/07 11:02:26 rherveille Exp $ +// +// $Date: 2004/05/07 11:02:26 $ +// $Revision: 1.11 $ +// $Author: rherveille $ +// $Locker: $ +// $State: Exp $ +// +// Change History: +// $Log: i2c_master_bit_ctrl.v,v $ +// Revision 1.11 2004/05/07 11:02:26 rherveille +// Fixed a bug where the core would signal an arbitration lost (AL bit set), when another master controls the bus and the other master generates a STOP bit. +// +// Revision 1.10 2003/08/09 07:01:33 rherveille +// Fixed a bug in the Arbitration Lost generation caused by delay on the (external) sda line. +// Fixed a potential bug in the byte controller's host-acknowledge generation. +// +// Revision 1.9 2003/03/10 14:26:37 rherveille +// Fixed cmd_ack generation item (no bug). +// +// Revision 1.8 2003/02/05 00:06:10 rherveille +// Fixed a bug where the core would trigger an erroneous 'arbitration lost' interrupt after being reset, when the reset pulse width < 3 clk cycles. +// +// Revision 1.7 2002/12/26 16:05:12 rherveille +// Small code simplifications +// +// Revision 1.6 2002/12/26 15:02:32 rherveille +// Core is now a Multimaster I2C controller +// +// Revision 1.5 2002/11/30 22:24:40 rherveille +// Cleaned up code +// +// Revision 1.4 2002/10/30 18:10:07 rherveille +// Fixed some reported minor start/stop generation timing issuess. +// +// Revision 1.3 2002/06/15 07:37:03 rherveille +// Fixed a small timing bug in the bit controller.\nAdded verilog simulation environment. +// +// Revision 1.2 2001/11/05 11:59:25 rherveille +// Fixed wb_ack_o generation bug. +// Fixed bug in the byte_controller statemachine. +// Added headers. +// + +// +///////////////////////////////////// +// Bit controller section +///////////////////////////////////// +// +// Translate simple commands into SCL/SDA transitions +// Each command has 5 states, A/B/C/D/idle +// +// start: SCL ~~~~~~~~~~\____ +// SDA ~~~~~~~~\______ +// x | A | B | C | D | i +// +// repstart SCL ____/~~~~\___ +// SDA __/~~~\______ +// x | A | B | C | D | i +// +// stop SCL ____/~~~~~~~~ +// SDA ==\____/~~~~~ +// x | A | B | C | D | i +// +//- write SCL ____/~~~~\____ +// SDA ==X=========X= +// x | A | B | C | D | i +// +//- read SCL ____/~~~~\____ +// SDA XXXX=====XXXX +// x | A | B | C | D | i +// + +// Timing: Normal mode Fast mode +/////////////////////////////////////////////////////////////////////// +// Fscl 100KHz 400KHz +// Th_scl 4.0us 0.6us High period of SCL +// Tl_scl 4.7us 1.3us Low period of SCL +// Tsu:sta 4.7us 0.6us setup time for a repeated start condition +// Tsu:sto 4.0us 0.6us setup time for a stop conditon +// Tbuf 4.7us 1.3us Bus free time between a stop and start condition +// + +// synopsys translate_off +`include "timescale.v" +// synopsys translate_on + +`include "i2c_master_defines.v" + +module i2c_master_bit_ctrl( + clk, rst, nReset, + clk_cnt, ena, cmd, cmd_ack, busy, al, din, dout, + scl_i, scl_o, scl_oen, sda_i, sda_o, sda_oen + ); + + // + // inputs & outputs + // + input clk; + input rst; + input nReset; + input ena; // core enable signal + + input [15:0] clk_cnt; // clock prescale value + + input [3:0] cmd; + output cmd_ack; // command complete acknowledge + reg cmd_ack; + output busy; // i2c bus busy + reg busy; + output al; // i2c bus arbitration lost + reg al; + + input din; + output dout; + reg dout; + + // I2C lines + input scl_i; // i2c clock line input + output scl_o; // i2c clock line output + output scl_oen; // i2c clock line output enable (active low) + reg scl_oen; + input sda_i; // i2c data line input + output sda_o; // i2c data line output + output sda_oen; // i2c data line output enable (active low) + reg sda_oen; + + + // + // variable declarations + // + + reg sSCL, sSDA; // synchronized SCL and SDA inputs + reg dscl_oen; // delayed scl_oen + reg sda_chk; // check SDA output (Multi-master arbitration) + reg clk_en; // clock generation signals + wire slave_wait; +// reg [15:0] cnt = clk_cnt; // clock divider counter (simulation) + reg [15:0] cnt; // clock divider counter (synthesis) + + // state machine variable + reg [16:0] c_state; + + // + // module body + // + + // whenever the slave is not ready it can delay the cycle by pulling SCL low + // delay scl_oen + always @(posedge clk) + dscl_oen <= #1 scl_oen; + + assign slave_wait = dscl_oen && !sSCL; + + + // generate clk enable signal + always @(posedge clk or negedge nReset) + if(~nReset) + begin + cnt <= #1 16'h0; + clk_en <= #1 1'b1; + end + else if (rst) + begin + cnt <= #1 16'h0; + clk_en <= #1 1'b1; + end + else if ( ~|cnt || ~ena) + if (~slave_wait) + begin + cnt <= #1 clk_cnt; + clk_en <= #1 1'b1; + end + else + begin + cnt <= #1 cnt; + clk_en <= #1 1'b0; + end + else + begin + cnt <= #1 cnt - 16'h1; + clk_en <= #1 1'b0; + end + + + // generate bus status controller + reg dSCL, dSDA; + reg sta_condition; + reg sto_condition; + + // synchronize SCL and SDA inputs + // reduce metastability risc + always @(posedge clk or negedge nReset) + if (~nReset) + begin + sSCL <= #1 1'b1; + sSDA <= #1 1'b1; + + dSCL <= #1 1'b1; + dSDA <= #1 1'b1; + end + else if (rst) + begin + sSCL <= #1 1'b1; + sSDA <= #1 1'b1; + + dSCL <= #1 1'b1; + dSDA <= #1 1'b1; + end + else + begin + sSCL <= #1 scl_i; + sSDA <= #1 sda_i; + + dSCL <= #1 sSCL; + dSDA <= #1 sSDA; + end + + // detect start condition => detect falling edge on SDA while SCL is high + // detect stop condition => detect rising edge on SDA while SCL is high + always @(posedge clk or negedge nReset) + if (~nReset) + begin + sta_condition <= #1 1'b0; + sto_condition <= #1 1'b0; + end + else if (rst) + begin + sta_condition <= #1 1'b0; + sto_condition <= #1 1'b0; + end + else + begin + sta_condition <= #1 ~sSDA & dSDA & sSCL; + sto_condition <= #1 sSDA & ~dSDA & sSCL; + end + + // generate i2c bus busy signal + always @(posedge clk or negedge nReset) + if(!nReset) + busy <= #1 1'b0; + else if (rst) + busy <= #1 1'b0; + else + busy <= #1 (sta_condition | busy) & ~sto_condition; + + // generate arbitration lost signal + // aribitration lost when: + // 1) master drives SDA high, but the i2c bus is low + // 2) stop detected while not requested + reg cmd_stop; + always @(posedge clk or negedge nReset) + if (~nReset) + cmd_stop <= #1 1'b0; + else if (rst) + cmd_stop <= #1 1'b0; + else if (clk_en) + cmd_stop <= #1 cmd == `I2C_CMD_STOP; + + always @(posedge clk or negedge nReset) + if (~nReset) + al <= #1 1'b0; + else if (rst) + al <= #1 1'b0; + else + al <= #1 (sda_chk & ~sSDA & sda_oen) | (|c_state & sto_condition & ~cmd_stop); + + + // generate dout signal (store SDA on rising edge of SCL) + always @(posedge clk) + if(sSCL & ~dSCL) + dout <= #1 sSDA; + + // generate statemachine + + // nxt_state decoder + parameter [16:0] idle = 17'b0_0000_0000_0000_0000; + parameter [16:0] start_a = 17'b0_0000_0000_0000_0001; + parameter [16:0] start_b = 17'b0_0000_0000_0000_0010; + parameter [16:0] start_c = 17'b0_0000_0000_0000_0100; + parameter [16:0] start_d = 17'b0_0000_0000_0000_1000; + parameter [16:0] start_e = 17'b0_0000_0000_0001_0000; + parameter [16:0] stop_a = 17'b0_0000_0000_0010_0000; + parameter [16:0] stop_b = 17'b0_0000_0000_0100_0000; + parameter [16:0] stop_c = 17'b0_0000_0000_1000_0000; + parameter [16:0] stop_d = 17'b0_0000_0001_0000_0000; + parameter [16:0] rd_a = 17'b0_0000_0010_0000_0000; + parameter [16:0] rd_b = 17'b0_0000_0100_0000_0000; + parameter [16:0] rd_c = 17'b0_0000_1000_0000_0000; + parameter [16:0] rd_d = 17'b0_0001_0000_0000_0000; + parameter [16:0] wr_a = 17'b0_0010_0000_0000_0000; + parameter [16:0] wr_b = 17'b0_0100_0000_0000_0000; + parameter [16:0] wr_c = 17'b0_1000_0000_0000_0000; + parameter [16:0] wr_d = 17'b1_0000_0000_0000_0000; + + always @(posedge clk or negedge nReset) + if (!nReset) + begin + c_state <= #1 idle; + cmd_ack <= #1 1'b0; + scl_oen <= #1 1'b1; + sda_oen <= #1 1'b1; + sda_chk <= #1 1'b0; + end + else if (rst | al) + begin + c_state <= #1 idle; + cmd_ack <= #1 1'b0; + scl_oen <= #1 1'b1; + sda_oen <= #1 1'b1; + sda_chk <= #1 1'b0; + end + else + begin + cmd_ack <= #1 1'b0; // default no command acknowledge + assert cmd_ack only 1clk cycle + + if (clk_en) + case (c_state) + // idle state + idle: + begin + case (cmd) + `I2C_CMD_START: + c_state <= #1 start_a; + + `I2C_CMD_STOP: + c_state <= #1 stop_a; + + `I2C_CMD_WRITE: + c_state <= #1 wr_a; + + `I2C_CMD_READ: + c_state <= #1 rd_a; + + default: + c_state <= #1 idle; + endcase + + scl_oen <= #1 scl_oen; // keep SCL in same state + sda_oen <= #1 sda_oen; // keep SDA in same state + sda_chk <= #1 1'b0; // don't check SDA output + end + + // start + start_a: + begin + c_state <= #1 start_b; + scl_oen <= #1 scl_oen; // keep SCL in same state + sda_oen <= #1 1'b1; // set SDA high + sda_chk <= #1 1'b0; // don't check SDA output + end + + start_b: + begin + c_state <= #1 start_c; + scl_oen <= #1 1'b1; // set SCL high + sda_oen <= #1 1'b1; // keep SDA high + sda_chk <= #1 1'b0; // don't check SDA output + end + + start_c: + begin + c_state <= #1 start_d; + scl_oen <= #1 1'b1; // keep SCL high + sda_oen <= #1 1'b0; // set SDA low + sda_chk <= #1 1'b0; // don't check SDA output + end + + start_d: + begin + c_state <= #1 start_e; + scl_oen <= #1 1'b1; // keep SCL high + sda_oen <= #1 1'b0; // keep SDA low + sda_chk <= #1 1'b0; // don't check SDA output + end + + start_e: + begin + c_state <= #1 idle; + cmd_ack <= #1 1'b1; + scl_oen <= #1 1'b0; // set SCL low + sda_oen <= #1 1'b0; // keep SDA low + sda_chk <= #1 1'b0; // don't check SDA output + end + + // stop + stop_a: + begin + c_state <= #1 stop_b; + scl_oen <= #1 1'b0; // keep SCL low + sda_oen <= #1 1'b0; // set SDA low + sda_chk <= #1 1'b0; // don't check SDA output + end + + stop_b: + begin + c_state <= #1 stop_c; + scl_oen <= #1 1'b1; // set SCL high + sda_oen <= #1 1'b0; // keep SDA low + sda_chk <= #1 1'b0; // don't check SDA output + end + + stop_c: + begin + c_state <= #1 stop_d; + scl_oen <= #1 1'b1; // keep SCL high + sda_oen <= #1 1'b0; // keep SDA low + sda_chk <= #1 1'b0; // don't check SDA output + end + + stop_d: + begin + c_state <= #1 idle; + cmd_ack <= #1 1'b1; + scl_oen <= #1 1'b1; // keep SCL high + sda_oen <= #1 1'b1; // set SDA high + sda_chk <= #1 1'b0; // don't check SDA output + end + + // read + rd_a: + begin + c_state <= #1 rd_b; + scl_oen <= #1 1'b0; // keep SCL low + sda_oen <= #1 1'b1; // tri-state SDA + sda_chk <= #1 1'b0; // don't check SDA output + end + + rd_b: + begin + c_state <= #1 rd_c; + scl_oen <= #1 1'b1; // set SCL high + sda_oen <= #1 1'b1; // keep SDA tri-stated + sda_chk <= #1 1'b0; // don't check SDA output + end + + rd_c: + begin + c_state <= #1 rd_d; + scl_oen <= #1 1'b1; // keep SCL high + sda_oen <= #1 1'b1; // keep SDA tri-stated + sda_chk <= #1 1'b0; // don't check SDA output + end + + rd_d: + begin + c_state <= #1 idle; + cmd_ack <= #1 1'b1; + scl_oen <= #1 1'b0; // set SCL low + sda_oen <= #1 1'b1; // keep SDA tri-stated + sda_chk <= #1 1'b0; // don't check SDA output + end + + // write + wr_a: + begin + c_state <= #1 wr_b; + scl_oen <= #1 1'b0; // keep SCL low + sda_oen <= #1 din; // set SDA + sda_chk <= #1 1'b0; // don't check SDA output (SCL low) + end + + wr_b: + begin + c_state <= #1 wr_c; + scl_oen <= #1 1'b1; // set SCL high + sda_oen <= #1 din; // keep SDA + sda_chk <= #1 1'b1; // check SDA output + end + + wr_c: + begin + c_state <= #1 wr_d; + scl_oen <= #1 1'b1; // keep SCL high + sda_oen <= #1 din; + sda_chk <= #1 1'b1; // check SDA output + end + + wr_d: + begin + c_state <= #1 idle; + cmd_ack <= #1 1'b1; + scl_oen <= #1 1'b0; // set SCL low + sda_oen <= #1 din; + sda_chk <= #1 1'b0; // don't check SDA output (SCL low) + end + + default: + c_state <= #1 idle; + + endcase + end + + + // assign scl and sda output (always gnd) + wire scl_o/* synthesis keep */; + wire sda_o/* synthesis keep */; + assign scl_o = 1'b0; + assign sda_o = 1'b0; + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_byte_ctrl.v b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_byte_ctrl.v new file mode 100644 index 0000000..d091d1e --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_byte_ctrl.v @@ -0,0 +1,344 @@ +///////////////////////////////////////////////////////////////////// +//// //// +//// WISHBONE rev.B2 compliant I2C Master byte-controller //// +//// //// +//// //// +//// Author: Richard Herveille //// +//// richard@asics.ws //// +//// www.asics.ws //// +//// //// +//// Downloaded from: http://www.opencores.org/projects/i2c/ //// +//// //// +///////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2001 Richard Herveille //// +//// richard@asics.ws //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer.//// +//// //// +//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// +//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// +//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// +//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// +//// 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. //// +//// //// +///////////////////////////////////////////////////////////////////// + +// CVS Log +// +// $Id: i2c_master_byte_ctrl.v,v 1.7 2004/02/18 11:40:46 rherveille Exp $ +// +// $Date: 2004/02/18 11:40:46 $ +// $Revision: 1.7 $ +// $Author: rherveille $ +// $Locker: $ +// $State: Exp $ +// +// Change History: +// $Log: i2c_master_byte_ctrl.v,v $ +// Revision 1.7 2004/02/18 11:40:46 rherveille +// Fixed a potential bug in the statemachine. During a 'stop' 2 cmd_ack signals were generated. Possibly canceling a new start command. +// +// Revision 1.6 2003/08/09 07:01:33 rherveille +// Fixed a bug in the Arbitration Lost generation caused by delay on the (external) sda line. +// Fixed a potential bug in the byte controller's host-acknowledge generation. +// +// Revision 1.5 2002/12/26 15:02:32 rherveille +// Core is now a Multimaster I2C controller +// +// Revision 1.4 2002/11/30 22:24:40 rherveille +// Cleaned up code +// +// Revision 1.3 2001/11/05 11:59:25 rherveille +// Fixed wb_ack_o generation bug. +// Fixed bug in the byte_controller statemachine. +// Added headers. +// + +// synopsys translate_off +`include "timescale.v" +// synopsys translate_on + +`include "i2c_master_defines.v" + +module i2c_master_byte_ctrl ( + clk, rst, nReset, ena, clk_cnt, start, stop, read, write, ack_in, din, + cmd_ack, ack_out, dout, i2c_busy, i2c_al, scl_i, scl_o, scl_oen, sda_i, sda_o, sda_oen ); + + // + // inputs & outputs + // + input clk; // master clock + input rst; // synchronous active high reset + input nReset; // asynchronous active low reset + input ena; // core enable signal + + input [15:0] clk_cnt; // 4x SCL + + // control inputs + input start; + input stop; + input read; + input write; + input ack_in; + input [7:0] din; + + // status outputs + output cmd_ack; + reg cmd_ack; + output ack_out; + reg ack_out; + output i2c_busy; + output i2c_al; + output [7:0] dout; + + // I2C signals + input scl_i; + output scl_o; + output scl_oen; + input sda_i; + output sda_o; + output sda_oen; + + + // + // Variable declarations + // + + // statemachine + parameter [4:0] ST_IDLE = 5'b0_0000; + parameter [4:0] ST_START = 5'b0_0001; + parameter [4:0] ST_READ = 5'b0_0010; + parameter [4:0] ST_WRITE = 5'b0_0100; + parameter [4:0] ST_ACK = 5'b0_1000; + parameter [4:0] ST_STOP = 5'b1_0000; + + // signals for bit_controller + reg [3:0] core_cmd; + reg core_txd; + wire core_ack, core_rxd; + + // signals for shift register + reg [7:0] sr; //8bit shift register + reg shift, ld; + + // signals for state machine + wire go; + reg [2:0] dcnt; + wire cnt_done; + + // + // Module body + // + + // hookup bit_controller + i2c_master_bit_ctrl bit_controller ( + .clk ( clk ), + .rst ( rst ), + .nReset ( nReset ), + .ena ( ena ), + .clk_cnt ( clk_cnt ), + .cmd ( core_cmd ), + .cmd_ack ( core_ack ), + .busy ( i2c_busy ), + .al ( i2c_al ), + .din ( core_txd ), + .dout ( core_rxd ), + .scl_i ( scl_i ), + .scl_o ( scl_o ), + .scl_oen ( scl_oen ), + .sda_i ( sda_i ), + .sda_o ( sda_o ), + .sda_oen ( sda_oen ) + ); + + // generate go-signal + assign go = (read | write | stop) & ~cmd_ack; + + // assign dout output to shift-register + assign dout = sr; + + // generate shift register + always @(posedge clk or negedge nReset) + if (!nReset) + sr <= #1 8'h0; + else if (rst) + sr <= #1 8'h0; + else if (ld) + sr <= #1 din; + else if (shift) + sr <= #1 {sr[6:0], core_rxd}; + + // generate counter + always @(posedge clk or negedge nReset) + if (!nReset) + dcnt <= #1 3'h0; + else if (rst) + dcnt <= #1 3'h0; + else if (ld) + dcnt <= #1 3'h7; + else if (shift) + dcnt <= #1 dcnt - 3'h1; + + assign cnt_done = ~(|dcnt); + + // + // state machine + // + reg [4:0] c_state; // synopsis enum_state + + always @(posedge clk or negedge nReset) + if (!nReset) + begin + core_cmd <= #1 `I2C_CMD_NOP; + core_txd <= #1 1'b0; + shift <= #1 1'b0; + ld <= #1 1'b0; + cmd_ack <= #1 1'b0; + c_state <= #1 ST_IDLE; + ack_out <= #1 1'b0; + end + else if (rst | i2c_al) + begin + core_cmd <= #1 `I2C_CMD_NOP; + core_txd <= #1 1'b0; + shift <= #1 1'b0; + ld <= #1 1'b0; + cmd_ack <= #1 1'b0; + c_state <= #1 ST_IDLE; + ack_out <= #1 1'b0; + end + else + begin + // initially reset all signals + core_txd <= #1 sr[7]; + shift <= #1 1'b0; + ld <= #1 1'b0; + cmd_ack <= #1 1'b0; + + case (c_state) // synopsys full_case parallel_case + ST_IDLE: + if (go) + begin + if (start) + begin + c_state <= #1 ST_START; + core_cmd <= #1 `I2C_CMD_START; + end + else if (read) + begin + c_state <= #1 ST_READ; + core_cmd <= #1 `I2C_CMD_READ; + end + else if (write) + begin + c_state <= #1 ST_WRITE; + core_cmd <= #1 `I2C_CMD_WRITE; + end + else // stop + begin + c_state <= #1 ST_STOP; + core_cmd <= #1 `I2C_CMD_STOP; + end + + ld <= #1 1'b1; + end + + ST_START: + if (core_ack) + begin + if (read) + begin + c_state <= #1 ST_READ; + core_cmd <= #1 `I2C_CMD_READ; + end + else + begin + c_state <= #1 ST_WRITE; + core_cmd <= #1 `I2C_CMD_WRITE; + end + + ld <= #1 1'b1; + end + + ST_WRITE: + if (core_ack) + if (cnt_done) + begin + c_state <= #1 ST_ACK; + core_cmd <= #1 `I2C_CMD_READ; + end + else + begin + c_state <= #1 ST_WRITE; // stay in same state + core_cmd <= #1 `I2C_CMD_WRITE; // write next bit + shift <= #1 1'b1; + end + + ST_READ: + if (core_ack) + begin + if (cnt_done) + begin + c_state <= #1 ST_ACK; + core_cmd <= #1 `I2C_CMD_WRITE; + end + else + begin + c_state <= #1 ST_READ; // stay in same state + core_cmd <= #1 `I2C_CMD_READ; // read next bit + end + + shift <= #1 1'b1; + core_txd <= #1 ack_in; + end + + ST_ACK: + if (core_ack) + begin + if (stop) + begin + c_state <= #1 ST_STOP; + core_cmd <= #1 `I2C_CMD_STOP; + end + else + begin + c_state <= #1 ST_IDLE; + core_cmd <= #1 `I2C_CMD_NOP; + + // generate command acknowledge signal + cmd_ack <= #1 1'b1; + end + + // assign ack_out output to bit_controller_rxd (contains last received bit) + ack_out <= #1 core_rxd; + + core_txd <= #1 1'b1; + end + else + core_txd <= #1 ack_in; + + ST_STOP: + if (core_ack) + begin + c_state <= #1 ST_IDLE; + core_cmd <= #1 `I2C_CMD_NOP; + + // generate command acknowledge signal + cmd_ack <= #1 1'b1; + end + + endcase + end +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_defines.v b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_defines.v new file mode 100644 index 0000000..ee3b694 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_defines.v @@ -0,0 +1,64 @@ +///////////////////////////////////////////////////////////////////// +//// //// +//// WISHBONE rev.B2 compliant I2C Master controller defines //// +//// //// +//// //// +//// Author: Richard Herveille //// +//// richard@asics.ws //// +//// www.asics.ws //// +//// //// +//// Downloaded from: http://www.opencores.org/projects/i2c/ //// +//// //// +///////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2001 Richard Herveille //// +//// richard@asics.ws //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer.//// +//// //// +//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// +//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// +//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// +//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// +//// 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. //// +//// //// +///////////////////////////////////////////////////////////////////// + +// CVS Log +// +// $Id: i2c_master_defines.v,v 1.3 2001/11/05 11:59:25 rherveille Exp $ +// +// $Date: 2001/11/05 11:59:25 $ +// $Revision: 1.3 $ +// $Author: rherveille $ +// $Locker: $ +// $State: Exp $ +// +// Change History: +// $Log: i2c_master_defines.v,v $ +// Revision 1.3 2001/11/05 11:59:25 rherveille +// Fixed wb_ack_o generation bug. +// Fixed bug in the byte_controller statemachine. +// Added headers. +// + + +// I2C registers wishbone addresses + +// bitcontroller states +`define I2C_CMD_NOP 4'b0000 +`define I2C_CMD_START 4'b0001 +`define I2C_CMD_STOP 4'b0010 +`define I2C_CMD_WRITE 4'b0100 +`define I2C_CMD_READ 4'b1000 diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_top.v b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_top.v new file mode 100644 index 0000000..482bfb4 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_master_top.v @@ -0,0 +1,296 @@ +///////////////////////////////////////////////////////////////////// +//// //// +//// WISHBONE revB.2 compliant I2C Master controller Top-level //// +//// //// +//// //// +//// Author: Richard Herveille //// +//// richard@asics.ws //// +//// www.asics.ws //// +//// //// +//// Downloaded from: http://www.opencores.org/projects/i2c/ //// +//// //// +///////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2001 Richard Herveille //// +//// richard@asics.ws //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer.//// +//// //// +//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// +//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// +//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// +//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// +//// 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. //// +//// //// +///////////////////////////////////////////////////////////////////// + +// CVS Log +// +// $Id: i2c_master_top.v,v 1.10 2003/09/01 10:34:38 rherveille Exp $ +// +// $Date: 2003/09/01 10:34:38 $ +// $Revision: 1.10 $ +// $Author: rherveille $ +// $Locker: $ +// $State: Exp $ +// +// Change History: +// $Log: i2c_master_top.v,v $ +// Revision 1.10 2003/09/01 10:34:38 rherveille +// Fix a blocking vs. non-blocking error in the wb_dat output mux. +// +// Revision 1.9 2003/01/09 16:44:45 rherveille +// Fixed a bug in the Command Register declaration. +// +// Revision 1.8 2002/12/26 16:05:12 rherveille +// Small code simplifications +// +// Revision 1.7 2002/12/26 15:02:32 rherveille +// Core is now a Multimaster I2C controller +// +// Revision 1.6 2002/11/30 22:24:40 rherveille +// Cleaned up code +// +// Revision 1.5 2001/11/10 10:52:55 rherveille +// Changed PRER reset value from 0x0000 to 0xffff, conform specs. +// + +// synopsys translate_off +`include "timescale.v" +// synopsys translate_on + +`include "i2c_master_defines.v" + +module i2c_master_top( + wb_clk_i, wb_rst_i, arst_i, wb_adr_i, wb_dat_i, wb_dat_o, + wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o, wb_inta_o, + scl_pad_i, scl_pad_o, scl_padoen_o, sda_pad_i, sda_pad_o, sda_padoen_o ); + + // parameters + parameter ARST_LVL = 1'b0; // asynchronous reset level + + // + // inputs & outputs + // + + // wishbone signals + input wb_clk_i; // master clock input + input wb_rst_i; // synchronous active high reset + input arst_i; // asynchronous reset + input [2:0] wb_adr_i; // lower address bits + input [7:0] wb_dat_i; // databus input + output [7:0] wb_dat_o; // databus output + input wb_we_i; // write enable input + input wb_stb_i; // stobe/core select signal + input wb_cyc_i; // valid bus cycle input + output wb_ack_o; // bus cycle acknowledge output + output wb_inta_o; // interrupt request signal output + + reg [7:0] wb_dat_o; + reg wb_ack_o; + reg wb_inta_o; + + // I2C signals + // i2c clock line + input scl_pad_i; // SCL-line input + output scl_pad_o; // SCL-line output (always 1'b0) + output scl_padoen_o; // SCL-line output enable (active low) + + // i2c data line + input sda_pad_i; // SDA-line input + output sda_pad_o; // SDA-line output (always 1'b0) + output sda_padoen_o; // SDA-line output enable (active low) + + + // + // variable declarations + // + + // registers + reg [15:0] prer; // clock prescale register + reg [ 7:0] ctr; // control register + reg [ 7:0] txr; // transmit register + wire [ 7:0] rxr; // receive register + reg [ 7:0] cr; // command register + wire [ 7:0] sr; // status register + + // done signal: command completed, clear command register + wire done; + + // core enable signal + wire core_en; + wire ien; + + // status register signals + wire irxack; + reg rxack; // received aknowledge from slave + reg tip; // transfer in progress + reg irq_flag; // interrupt pending flag + wire i2c_busy; // bus busy (start signal detected) + wire i2c_al; // i2c bus arbitration lost + reg al; // status register arbitration lost bit + + // + // module body + // + + // generate internal reset + wire rst_i = arst_i ^ ARST_LVL; + + // generate wishbone signals + wire wb_wacc = wb_cyc_i & wb_stb_i & wb_we_i; + + // generate acknowledge output signal + always @(posedge wb_clk_i) + wb_ack_o <= #1 wb_cyc_i & wb_stb_i & ~wb_ack_o; // because timing is always honored + + // assign DAT_O + always @(posedge wb_clk_i) + begin + case (wb_adr_i) // synopsis full_case parallel_case + 3'b000: wb_dat_o <= #1 prer[ 7:0]; + 3'b001: wb_dat_o <= #1 prer[15:8]; + 3'b010: wb_dat_o <= #1 ctr; + 3'b011: wb_dat_o <= #1 rxr; // write is transmit register (txr) + 3'b100: wb_dat_o <= #1 sr; // write is command register (cr) + 3'b101: wb_dat_o <= #1 txr; + 3'b110: wb_dat_o <= #1 cr; + 3'b111: wb_dat_o <= #1 0; // reserved + endcase + end + + // generate registers + always @(posedge wb_clk_i or negedge rst_i) + if (!rst_i) + begin + prer <= #1 16'hffff; + ctr <= #1 8'h0; + txr <= #1 8'h0; + end + else if (wb_rst_i) + begin + prer <= #1 16'hffff; + ctr <= #1 8'h0; + txr <= #1 8'h0; + end + else + if (wb_wacc) + case (wb_adr_i) // synopsis full_case parallel_case + 3'b000 : prer [ 7:0] <= #1 wb_dat_i; + 3'b001 : prer [15:8] <= #1 wb_dat_i; + 3'b010 : ctr <= #1 wb_dat_i; + 3'b011 : txr <= #1 wb_dat_i; + endcase + + // generate command register (special case) + always @(posedge wb_clk_i or negedge rst_i) + if (~rst_i) + cr <= #1 8'h0; + else if (wb_rst_i) + cr <= #1 8'h0; + else if (wb_wacc) + begin + if (core_en & (wb_adr_i == 3'b100) ) + cr <= #1 wb_dat_i; + end + else + begin + if (done | i2c_al) + cr[7:4] <= #1 4'h0; // clear command bits when done + // or when aribitration lost + cr[2:1] <= #1 2'b0; // reserved bits + cr[0] <= #1 1'b0; // clear IRQ_ACK bit + end + + + // decode command register + wire sta = cr[7]; + wire sto = cr[6]; + wire rd = cr[5]; + wire wr = cr[4]; + wire ack = cr[3]; + wire iack = cr[0]; + + // decode control register + assign core_en = ctr[7]; + assign ien = ctr[6]; + + // hookup byte controller block + i2c_master_byte_ctrl byte_controller ( + .clk ( wb_clk_i ), + .rst ( wb_rst_i ), + .nReset ( rst_i ), + .ena ( core_en ), + .clk_cnt ( prer ), + .start ( sta ), + .stop ( sto ), + .read ( rd ), + .write ( wr ), + .ack_in ( ack ), + .din ( txr ), + .cmd_ack ( done ), + .ack_out ( irxack ), + .dout ( rxr ), + .i2c_busy ( i2c_busy ), + .i2c_al ( i2c_al ), + .scl_i ( scl_pad_i ), + .scl_o ( scl_pad_o ), + .scl_oen ( scl_padoen_o ), + .sda_i ( sda_pad_i ), + .sda_o ( sda_pad_o ), + .sda_oen ( sda_padoen_o ) + ); + + // status register block + interrupt request signal + always @(posedge wb_clk_i or negedge rst_i) + if (!rst_i) + begin + al <= #1 1'b0; + rxack <= #1 1'b0; + tip <= #1 1'b0; + irq_flag <= #1 1'b0; + end + else if (wb_rst_i) + begin + al <= #1 1'b0; + rxack <= #1 1'b0; + tip <= #1 1'b0; + irq_flag <= #1 1'b0; + end + else + begin + al <= #1 i2c_al | (al & ~sta); + rxack <= #1 irxack; + tip <= #1 (rd | wr); + irq_flag <= #1 (done | i2c_al | irq_flag) & ~iack; // interrupt request flag is always generated + end + + // generate interrupt request signals + always @(posedge wb_clk_i or negedge rst_i) + if (!rst_i) + wb_inta_o <= #1 1'b0; + else if (wb_rst_i) + wb_inta_o <= #1 1'b0; + else + wb_inta_o <= #1 irq_flag && ien; // interrupt signal is only generated when IEN (interrupt enable bit is set) + + // assign status register bits + assign sr[7] = rxack; + assign sr[6] = i2c_busy; + assign sr[5] = al; + assign sr[4:2] = 3'h0; // reserved + assign sr[1] = tip; + assign sr[0] = irq_flag; + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores.v b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores.v new file mode 100644 index 0000000..57d2f2f --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores.v @@ -0,0 +1,72 @@ +// +// fixed for 9.1 jan 21 2010 cruben +// +//`include "timescale.v" +//`include "i2c_master_defines.v" + +module i2c_opencores +( + wb_clk_i, wb_rst_i, wb_adr_i, wb_dat_i, wb_dat_o, + wb_we_i, wb_stb_i, /*wb_cyc_i,*/ wb_ack_o, wb_inta_o, + scl_pad_io, sda_pad_io +); + + +// Common bus signals +input wb_clk_i; // WISHBONE clock +input wb_rst_i; // WISHBONE reset + +// Slave signals +input [2:0] wb_adr_i; // WISHBONE address input +input [7:0] wb_dat_i; // WISHBONE data input +output [7:0] wb_dat_o; // WISHBONE data output +input wb_we_i; // WISHBONE write enable input +input wb_stb_i; // WISHBONE strobe input +//input wb_cyc_i; // WISHBONE cycle input +output wb_ack_o; // WISHBONE acknowledge output +output wb_inta_o; // WISHBONE interrupt output + +// I2C signals +inout scl_pad_io; // I2C clock io +inout sda_pad_io; // I2C data io + +wire wb_cyc_i; // WISHBONE cycle input +// Wire tri-state scl/sda +wire scl_pad_i; +wire scl_pad_o; +wire scl_pad_io; +wire scl_padoen_o; + +assign wb_cyc_i = wb_stb_i; +assign scl_pad_i = scl_pad_io; +assign scl_pad_io = scl_padoen_o ? 1'bZ : scl_pad_o; + +wire sda_pad_i; +wire sda_pad_o; +wire sda_pad_io; +wire sda_padoen_o; + +assign sda_pad_i = sda_pad_io; +assign sda_pad_io = sda_padoen_o ? 1'bZ : sda_pad_o; + +// Avalon doesn't have an asynchronous reset +// set it to be inactive and just use synchronous reset +// reset level is a parameter, 0 is the default (active-low reset) +wire arst_i; + +assign arst_i = 1'b1; + +// Connect the top level I2C core +i2c_master_top i2c_master_top_inst +( + .wb_clk_i(wb_clk_i), .wb_rst_i(wb_rst_i), .arst_i(arst_i), + + .wb_adr_i(wb_adr_i), .wb_dat_i(wb_dat_i), .wb_dat_o(wb_dat_o), + .wb_we_i(wb_we_i), .wb_stb_i(wb_stb_i), .wb_cyc_i(wb_cyc_i), + .wb_ack_o(wb_ack_o), .wb_inta_o(wb_inta_o), + + .scl_pad_i(scl_pad_i), .scl_pad_o(scl_pad_o), .scl_padoen_o(scl_padoen_o), + .sda_pad_i(sda_pad_i), .sda_pad_o(sda_pad_o), .sda_padoen_o(sda_padoen_o) +); + +endmodule diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores_hw.tcl b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores_hw.tcl new file mode 100644 index 0000000..6f19b92 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores_hw.tcl @@ -0,0 +1,143 @@ +# TCL File Generated by Component Editor 12.0 +# Mon Jul 16 09:24:51 CDT 2012 +# DO NOT MODIFY + + +# +# i2c_opencores "I2C Master (opencores.org)" v12.0 +# 2012.07.16.09:24:51 +# I2C Master Peripheral from opencores.org +# + +# +# request TCL package from ACDS 12.0 +# +package require -exact qsys 12.0 + + +# +# module i2c_opencores +# +set_module_property DESCRIPTION "I2C Master Peripheral from opencores.org" +set_module_property NAME i2c_opencores +set_module_property VERSION 12.0 +set_module_property INTERNAL false +set_module_property OPAQUE_ADDRESS_MAP true +set_module_property GROUP "Interface Protocols/Serial" +set_module_property AUTHOR "" +set_module_property DISPLAY_NAME "I2C Master (opencores.org)" +set_module_property INSTANTIATE_IN_SYSTEM_MODULE true +set_module_property EDITABLE true +set_module_property ANALYZE_HDL AUTO +set_module_property REPORT_TO_TALKBACK false +set_module_property ALLOW_GREYBOX_GENERATION false + + +# +# file sets +# +add_fileset quartus_synth QUARTUS_SYNTH "" "Quartus Synthesis" +set_fileset_property quartus_synth TOP_LEVEL i2c_opencores +set_fileset_property quartus_synth ENABLE_RELATIVE_INCLUDE_PATHS false +add_fileset_file i2c_opencores.v VERILOG PATH i2c_opencores.v +add_fileset_file i2c_master_top.v VERILOG PATH i2c_master_top.v +add_fileset_file i2c_master_defines.v VERILOG PATH i2c_master_defines.v +add_fileset_file i2c_master_byte_ctrl.v VERILOG PATH i2c_master_byte_ctrl.v +add_fileset_file i2c_master_bit_ctrl.v VERILOG PATH i2c_master_bit_ctrl.v + +add_fileset sim_verilog SIM_VERILOG "" "Verilog Simulation" +set_fileset_property sim_verilog TOP_LEVEL i2c_opencores +set_fileset_property sim_verilog ENABLE_RELATIVE_INCLUDE_PATHS false +add_fileset_file i2c_opencores.v VERILOG PATH i2c_opencores.v +add_fileset_file i2c_master_top.v VERILOG PATH i2c_master_top.v +add_fileset_file i2c_master_defines.v VERILOG PATH i2c_master_defines.v +add_fileset_file i2c_master_byte_ctrl.v VERILOG PATH i2c_master_byte_ctrl.v +add_fileset_file i2c_master_bit_ctrl.v VERILOG PATH i2c_master_bit_ctrl.v +add_fileset_file timescale.v VERILOG PATH timescale.v + + +# +# parameters +# + + +# +# display items +# + + +# +# connection point clock +# +add_interface clock clock end +set_interface_property clock clockRate 0 +set_interface_property clock ENABLED true + +add_interface_port clock wb_clk_i clk Input 1 + + +# +# connection point clock_reset +# +add_interface clock_reset reset end +set_interface_property clock_reset associatedClock clock +set_interface_property clock_reset synchronousEdges DEASSERT +set_interface_property clock_reset ENABLED true + +add_interface_port clock_reset wb_rst_i reset Input 1 + + +# +# connection point export +# +add_interface export conduit end +set_interface_property export associatedClock "" +set_interface_property export associatedReset "" +set_interface_property export ENABLED true + +add_interface_port export scl_pad_io export Bidir 1 +add_interface_port export sda_pad_io export Bidir 1 + + +# +# connection point avalon_slave_0 +# +add_interface avalon_slave_0 avalon end +set_interface_property avalon_slave_0 addressAlignment NATIVE +set_interface_property avalon_slave_0 addressUnits WORDS +set_interface_property avalon_slave_0 associatedClock clock +set_interface_property avalon_slave_0 associatedReset clock_reset +set_interface_property avalon_slave_0 burstOnBurstBoundariesOnly false +set_interface_property avalon_slave_0 explicitAddressSpan 0 +set_interface_property avalon_slave_0 holdTime 0 +set_interface_property avalon_slave_0 isMemoryDevice false +set_interface_property avalon_slave_0 isNonVolatileStorage false +set_interface_property avalon_slave_0 linewrapBursts false +set_interface_property avalon_slave_0 maximumPendingReadTransactions 0 +set_interface_property avalon_slave_0 printableDevice false +set_interface_property avalon_slave_0 readLatency 0 +set_interface_property avalon_slave_0 readWaitTime 1 +set_interface_property avalon_slave_0 setupTime 0 +set_interface_property avalon_slave_0 timingUnits Cycles +set_interface_property avalon_slave_0 writeWaitTime 0 +set_interface_property avalon_slave_0 ENABLED true + +add_interface_port avalon_slave_0 wb_adr_i address Input 3 +add_interface_port avalon_slave_0 wb_dat_i writedata Input 8 +add_interface_port avalon_slave_0 wb_dat_o readdata Output 8 +add_interface_port avalon_slave_0 wb_we_i write Input 1 +add_interface_port avalon_slave_0 wb_stb_i chipselect Input 1 +add_interface_port avalon_slave_0 wb_ack_o waitrequest_n Output 1 + + +# +# connection point interrupt_sender +# +add_interface interrupt_sender interrupt end +set_interface_property interrupt_sender associatedAddressablePoint avalon_slave_0 +set_interface_property interrupt_sender associatedClock clock +set_interface_property interrupt_sender associatedReset clock_reset +set_interface_property interrupt_sender ENABLED true + +add_interface_port interrupt_sender wb_inta_o irq Output 1 + diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores_sw.tcl b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores_sw.tcl new file mode 100644 index 0000000..da89a09 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/i2c_opencores_sw.tcl @@ -0,0 +1,56 @@ +# +# opencores_i2c_sw.tcl +# + +# Create a new driver +create_driver opencores_i2c_driver + +# Associate it with some hardware known as "opencores_i2c" +set_sw_property hw_class_name opencores_i2c + +# The version of this driver +set_sw_property version 11.0 + +# This driver may be incompatible with versions of hardware less +# than specified below. Updates to hardware and device drivers +# rendering the driver incompatible with older versions of +# hardware are noted with this property assignment. +# +# Multiple-Version compatibility was introduced in version 7.1; +# prior versions are therefore excluded. +set_sw_property min_compatible_hw_version 7.1 + +# Initialize the driver in alt_sys_init() +set_sw_property auto_initialize true + +# Location in generated BSP that above sources will be copied into +set_sw_property bsp_subdirectory drivers + + +# Interrupt properties: +# This peripheral has an IRQ output but the driver doesn't currently +# have any interrupt service routine. To ensure that the BSP tools +# do not otherwise limit the BSP functionality for users of the +# Nios II enhanced interrupt port, these settings advertise +# compliance with both legacy and enhanced interrupt APIs, and to state +# that any driver ISR supports preemption. If an interrupt handler +# is added to this driver, these must be re-examined for validity. +set_sw_property isr_preemption_supported true +set_sw_property supported_interrupt_apis "legacy_interrupt_api enhanced_interrupt_api" + +# +# Source file listings... +# + +# C/C++ source files +add_sw_property c_source HAL/src/opencores_i2c.c + +# Include files +add_sw_property include_source HAL/inc/opencores_i2c.h +add_sw_property include_source inc/opencores_i2c_regs.h + +# This driver supports HAL & UCOSII BSP (OS) types +add_sw_property supported_bsp_type HAL +add_sw_property supported_bsp_type UCOSII + +# End of file diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/inc/i2c_opencores_regs.h b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/inc/i2c_opencores_regs.h new file mode 100644 index 0000000..df9998a --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/inc/i2c_opencores_regs.h @@ -0,0 +1,75 @@ + + +#ifndef __I2C_OPENCORES_REGS_H__ +#define __I2C_OPENCORES_REGS_H__ + +#include +/* prescal clock/(5*desired_SCL) */ +/* all registers are 8 bits wide but on 32 bit address boundaries.*/ +/* reg definitions take from i2c_specs.pdf in the docs folder */ + +#define IOADDR_I2C_OPENCORES_PRERLO(base) __IO_CALC_ADDRESS_NATIVE(base, 0) +#define IORD_I2C_OPENCORES_PRERLO(base) IORD(base, 0) +#define IOWR_I2C_OPENCORES_PRERLO(base, data) IOWR(base, 0, data) + + +#define IOADDR_I2C_OPENCORES_PRERHI(base) __IO_CALC_ADDRESS_NATIVE(base, 0) +#define IORD_I2C_OPENCORES_PRERHI(base) IORD(base, 1) +#define IOWR_I2C_OPENCORES_PRERHI(base, data) IOWR(base, 1, data) + + +#define IOADDR_I2C_OPENCORES_CTR(base) __IO_CALC_ADDRESS_NATIVE(base, 2) +#define IORD_I2C_OPENCORES_CTR(base) IORD(base, 2) +#define IOWR_I2C_OPENCORES_CTR(base, data) IOWR(base, 2, data) +/* bit definitions*/ +#define I2C_OPENCORES_CTR_EN_MSK (0x80) +#define I2C_OPENCORES_CTR_EN_OFST (7) +#define I2C_OPENCORES_CTR_IEN_MSK (0x40) +#define I2C_OPENCORES_CTR_IEN_OFST (6) + + +#define IOADDR_I2C_OPENCORES_TXR(base) __IO_CALC_ADDRESS_NATIVE(base, 3) +#define IOWR_I2C_OPENCORES_TXR(base, data) IOWR(base, 3, data) +/* bit definitions*/ +#define I2C_OPENCORES_TXR_RD_MSK (0x1) +#define I2C_OPENCORES_TXR_RD_OFST (0) +#define I2C_OPENCORES_TXR_WR_MSK (0x0) +#define I2C_OPENCORES_TXR_WR_OFST (0) + + +#define IOADDR_I2C_OPENCORES_RXR(base) __IO_CALC_ADDRESS_NATIVE(base, 3) +#define IORD_I2C_OPENCORES_RXR(base) IORD(base, 3) + + +#define IOADDR_I2C_OPENCORES_CR(base) __IO_CALC_ADDRESS_NATIVE(base, 4) +#define IOWR_I2C_OPENCORES_CR(base, data) IOWR(base, 4, data) +/* bit definitions*/ +#define I2C_OPENCORES_CR_STA_MSK (0x80) +#define I2C_OPENCORES_CR_STA_OFST (7) +#define I2C_OPENCORES_CR_STO_MSK (0x40) +#define I2C_OPENCORES_CR_STO_OFST (6) +#define I2C_OPENCORES_CR_RD_MSK (0x20) +#define I2C_OPENCORES_CR_RD_OFST (5) +#define I2C_OPENCORES_CR_WR_MSK (0x10) +#define I2C_OPENCORES_CR_WR_OFST (4) +#define I2C_OPENCORES_CR_NACK_MSK (0x8) +#define I2C_OPENCORES_CR_NACK_OFST (3) +#define I2C_OPENCORES_CR_IACK_MSK (0x1) +#define I2C_OPENCORES_CR_IACK_OFST (0) + + +#define IOADDR_I2C_OPENCORES_SR(base) __IO_CALC_ADDRESS_NATIVE(base, 4) +#define IORD_I2C_OPENCORES_SR(base) IORD(base, 4) +/* bit definitions*/ +#define I2C_OPENCORES_SR_RXNACK_MSK (0x80) +#define I2C_OPENCORES_SR_RXNACK_OFST (7) +#define I2C_OPENCORES_SR_BUSY_MSK (0x40) +#define I2C_OPENCORES_SR_BUSY_OFST (6) +#define I2C_OPENCORES_SR_AL_MSK (0x20) +#define I2C_OPENCORES_SR_AL_OFST (5) +#define I2C_OPENCORES_SR_TIP_MSK (0x2) +#define I2C_OPENCORES_SR_TIP_OFST (1) +#define I2C_OPENCORES_SR_IF_MSK (0x1) +#define I2C_OPENCORES_SR_IF_OFST (0) + +#endif /* __I2C_OPENCORES_REGS_H__ */ diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/test.v b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/test.v new file mode 100644 index 0000000..4f2fb0d --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/test.v @@ -0,0 +1,388 @@ +`timescale 1ns / 1ps + +module i2c_drive( + clk,rst_n, + sw1,sw2, + scl,sda, + dis_data + ); + +input clk; // 50MHz +input rst_n; //å¤ä½ä¿¡å·ï¼Œä½Žæœ‰æ•ˆ +input sw1,sw2; //按键1ã€2,(1按下执行写入æ“作,2按下执行读æ“作) +output scl; // 24C02çš„æ—¶é’Ÿç«¯å£ +inout sda; // 24C02çš„æ•°æ®ç«¯å£ +output [7:0] dis_data; //输出指定å•å…ƒçš„æ•°æ® + +//-------------------------------------------- +//按键检测 +reg sw1_r,sw2_r; //键值é”存寄存器,æ¯20ms检测一次键值 +reg[19:0] cnt_20ms; //20ms计数寄存器 + +always @ (posedge clk or negedge rst_n) + if(!rst_n) + cnt_20ms <= 20'd0; + else + cnt_20ms <= cnt_20ms+1'b1; //ä¸æ–­è®¡æ•° + +always @ (posedge clk or negedge rst_n) + if(!rst_n) + begin + sw1_r <= 1'b1; //键值寄存器å¤ä½ï¼Œæ²¡æœ‰é”®ç›˜æŒ‰ä¸‹æ—¶é”®å€¼éƒ½ä¸º1 + sw2_r <= 1'b1; + end + else if(cnt_20ms == 20'hfffff) + begin + sw1_r <= sw1; //按键1值é”å­˜ + sw2_r <= sw2; //按键2值é”å­˜ + end + +//--------------------------------------------- +//分频部分 +reg[2:0] cnt; // cnt=0:scl上å‡æ²¿ï¼Œcnt=1:scl高电平中间,cnt=2:scl下é™æ²¿ï¼Œcnt=3:scl低电平中间 +reg[8:0] cnt_delay; //500循环计数,产生iic所需è¦çš„时钟 +reg scl_r; //时钟脉冲寄存器 +reg scl_en; +always @ (posedge clk or negedge rst_n) + if(!rst_n) + cnt_delay <= 9'd0; + else if(cnt_delay == 9'd499) + cnt_delay <= 9'd0; //计数到10us为scl的周期,å³100KHz + else + cnt_delay <= cnt_delay+1'b1; //时钟计数 + +always @ (posedge clk or negedge rst_n) begin + if(!rst_n) + cnt <= 3'd5; + else + begin + case (cnt_delay) + 9'd124: cnt <= 3'd1; //cnt=1:scl高电平中间,用于数æ®é‡‡æ · + 9'd249: cnt <= 3'd2; //cnt=2:scl下é™æ²¿ + 9'd374: cnt <= 3'd3; //cnt=3:scl低电平中间,用于数æ®å˜åŒ– + 9'd499: cnt <= 3'd0; //cnt=0:scl上å‡æ²¿ + default: cnt <= 3'd5; + endcase + end +end + + +`define SCL_POS (cnt==3'd0) //cnt=0:scl上å‡æ²¿ +`define SCL_HIG (cnt==3'd1) //cnt=1:scl高电平中间,用于数æ®é‡‡æ · +`define SCL_NEG (cnt==3'd2) //cnt=2:scl下é™æ²¿ +`define SCL_LOW (cnt==3'd3) //cnt=3:scl低电平中间,用于数æ®å˜åŒ– + + +always @ (posedge clk or negedge rst_n) + if(!rst_n) + scl_r <= 1'b0; + else if(cnt==3'd0) + scl_r <= 1'b1; //sclä¿¡å·ä¸Šå‡æ²¿ + else if(cnt==3'd2) + scl_r <= 1'b0; //sclä¿¡å·ä¸‹é™æ²¿ + +assign scl = scl_en?scl_r:1'bz; //产生iic所需è¦çš„时钟 +//--------------------------------------------- + +//需è¦å†™å…¥24C02的地å€å’Œæ•°æ® +`define DEVICE_READ 8'b0111_0001 //被寻å€å™¨ä»¶åœ°å€ï¼ˆè¯»æ“作) +`define DEVICE_WRITE 8'b0111_0000 //被寻å€å™¨ä»¶åœ°å€ï¼ˆå†™æ“作) + +//`define WRITE_DATA 8'b0000_0111 //写入EEPROMçš„æ•°æ® +`define BYTE_ADDR 8'b0000_0010 //写入/读出EEPROM的地å€å¯„存器 + +reg[7:0] db_r; //在IIC上传é€çš„æ•°æ®å¯„存器 +reg[7:0] read_data; //读出EEPROMçš„æ•°æ®å¯„存器 + +//--------------------------------------------- + //读ã€å†™æ—¶åº +parameter IDLE = 4'd0; +parameter START1 = 4'd1; +parameter ADD1 = 4'd2; +parameter ACK1 = 4'd3; +parameter ADD2 = 4'd4; +parameter ACK2 = 4'd5; +parameter START2 = 4'd6; +parameter ADD3 = 4'd7; +parameter ACK3 = 4'd8; +parameter DATA = 4'd9; +parameter ACK4 = 4'd10; +parameter STOP1 = 4'd11; +parameter STOP2 = 4'd12; + + +reg[3:0] cstate; //状æ€å¯„存器 +reg sda_r; //输出数æ®å¯„存器 +reg sda_link; //输出数æ®sdaä¿¡å·inoutæ–¹å‘æŽ§åˆ¶ä½ +reg[3:0] num; // + + +always @ (posedge clk or negedge rst_n) begin + if(!rst_n) + begin + cstate <= IDLE; + sda_r <= 1'b1; + sda_link <= 1'b0; + num <= 4'd0; + read_data <= 8'b0000_0000; + scl_en<=0; + end + else + case (cstate) + IDLE: + begin + sda_link <= 1'b1; //æ•°æ®çº¿sda为input + sda_r <= 1'b1; + scl_en<=0; + if(!sw1_r || !sw2_r) + begin //SW1,SW2键有一个被按下 + db_r <= `DEVICE_WRITE; //é€å™¨ä»¶åœ°å€ï¼ˆå†™æ“作) + cstate <= START1; + scl_en<=1; + end + else + cstate <= IDLE; //没有任何键被按下 + end + START1: + begin + if(`SCL_HIG) + begin //scl为高电平期间 + sda_link <= 1'b1; //æ•°æ®çº¿sda为output + sda_r <= 1'b0; //拉低数æ®çº¿sda,产生起始ä½ä¿¡å· + cstate <= ADD1; + num <= 4'd0; //num计数清零 + end + else + cstate <= START1; //等待scl高电平中间ä½ç½®åˆ°æ¥ + end + ADD1: + begin + if(`SCL_LOW) + begin + if(num == 4'd8) + begin + num <= 4'd0; //num计数清零 + sda_r <= 1'b1; + sda_link <= 1'b0; //sda置为高阻æ€(input) + cstate <= ACK1; + end + else + begin + cstate <= ADD1; + num <= num+1'b1; + case (num) + 4'd0: sda_r <= db_r[7]; + 4'd1: sda_r <= db_r[6]; + 4'd2: sda_r <= db_r[5]; + 4'd3: sda_r <= db_r[4]; + 4'd4: sda_r <= db_r[3]; + 4'd5: sda_r <= db_r[2]; + 4'd6: sda_r <= db_r[1]; + 4'd7: sda_r <= db_r[0]; + default: ; + endcase + // sda_r <= db_r[4'd7-num]; //é€å™¨ä»¶åœ°å€ï¼Œä»Žé«˜ä½å¼€å§‹ + end + end + // else if(`SCL_POS) db_r <= {db_r[6:0],1'b0}; //器件地å€å·¦ç§»1bit + else + cstate <= ADD1; + end + ACK1: + begin + if(/*!sda*/`SCL_NEG) + begin //注:24C01/02/04/08/16器件å¯ä»¥ä¸è€ƒè™‘åº”ç­”ä½ + cstate <= ADD2; //从机å“åº”ä¿¡å· + db_r <= `BYTE_ADDR; // 1åœ°å€ + end + else + cstate <= ACK1; //等待从机å“应 + end + ADD2: + begin + if(`SCL_LOW) + begin + if(num==4'd8) + begin + num <= 4'd0; //num计数清零 + sda_r <= 1'b1; + sda_link <= 1'b0; //sda置为高阻æ€(input) + cstate <= ACK2; + end + else + begin + sda_link <= 1'b1; //sda作为output + num <= num+1'b1; + case (num) + 4'd0: sda_r <= db_r[7]; + 4'd1: sda_r <= db_r[6]; + 4'd2: sda_r <= db_r[5]; + 4'd3: sda_r <= db_r[4]; + 4'd4: sda_r <= db_r[3]; + 4'd5: sda_r <= db_r[2]; + 4'd6: sda_r <= db_r[1]; + 4'd7: sda_r <= db_r[0]; + default: ; + endcase + // sda_r <= db_r[4'd7-num]; //é€EEPROM地å€ï¼ˆé«˜bit开始) + cstate <= ADD2; + end + end + // else if(`SCL_POS) db_r <= {db_r[6:0],1'b0}; //器件地å€å·¦ç§»1bit + else + cstate <= ADD2; + end + ACK2: begin + if(/*!sda*/`SCL_NEG) begin //从机å“åº”ä¿¡å· + if(!sw1_r) begin + cstate <= DATA; //写æ“作 + db_r <= `WRITE_DATA; //å†™å…¥çš„æ•°æ® + end + else if(!sw2_r) begin + db_r <= `DEVICE_READ; //é€å™¨ä»¶åœ°å€ï¼ˆè¯»æ“作),特定地å€è¯»éœ€è¦æ‰§è¡Œè¯¥æ­¥éª¤ä»¥ä¸‹æ“作 + cstate <= START2; //读æ“作 + end + end + else cstate <= ACK2; //等待从机å“应 + end + START2: begin //读æ“ä½œèµ·å§‹ä½ + if(`SCL_LOW) begin + sda_link <= 1'b1; //sda作为output + sda_r <= 1'b1; //拉高数æ®çº¿sda + cstate <= START2; + end + else if(`SCL_HIG) begin //scl为高电平中间 + sda_r <= 1'b0; //拉低数æ®çº¿sda,产生起始ä½ä¿¡å· + cstate <= ADD3; + end + else cstate <= START2; + end + ADD3: begin //é€è¯»æ“ä½œåœ°å€ + if(`SCL_LOW) begin + if(num==4'd8) begin + num <= 4'd0; //num计数清零 + sda_r <= 1'b1; + sda_link <= 1'b0; //sda置为高阻æ€(input) + cstate <= ACK3; + end + else begin + num <= num+1'b1; + case (num) + 4'd0: sda_r <= db_r[7]; + 4'd1: sda_r <= db_r[6]; + 4'd2: sda_r <= db_r[5]; + 4'd3: sda_r <= db_r[4]; + 4'd4: sda_r <= db_r[3]; + 4'd5: sda_r <= db_r[2]; + 4'd6: sda_r <= db_r[1]; + 4'd7: sda_r <= db_r[0]; + default: ; + endcase + // sda_r <= db_r[4'd7-num]; //é€EEPROM地å€ï¼ˆé«˜bit开始) + cstate <= ADD3; + end + end + // else if(`SCL_POS) db_r <= {db_r[6:0],1'b0}; //器件地å€å·¦ç§»1bit + else cstate <= ADD3; + end + ACK3: begin + if(/*!sda*/`SCL_NEG) begin + cstate <= DATA; //从机å“åº”ä¿¡å· + sda_link <= 1'b0; + end + else cstate <= ACK3; //等待从机å“应 + end + DATA: begin + if(!sw2_r) begin //读æ“作 + if(num<=4'd7) begin + cstate <= DATA; + if(`SCL_HIG) begin + num <= num+1'b1; + case (num) + 4'd0: read_data[7] <= sda; + 4'd1: read_data[6] <= sda; + 4'd2: read_data[5] <= sda; + 4'd3: read_data[4] <= sda; + 4'd4: read_data[3] <= sda; + 4'd5: read_data[2] <= sda; + 4'd6: read_data[1] <= sda; + 4'd7: read_data[0] <= sda; + default: ; + endcase + // read_data[4'd7-num] <= sda; //读数æ®ï¼ˆé«˜bit开始) + end + // else if(`SCL_NEG) read_data <= {read_data[6:0],read_data[7]}; //æ•°æ®å¾ªçŽ¯å³ç§» + end + else if((`SCL_LOW) && (num==4'd8)) begin + num <= 4'd0; //num计数清零 + cstate <= ACK4; + end + else cstate <= DATA; + end + else if(!sw1_r) begin //写æ“作 + sda_link <= 1'b1; + if(num<=4'd7) begin + cstate <= DATA; + if(`SCL_LOW) begin + sda_link <= 1'b1; //æ•°æ®çº¿sda作为output + num <= num+1'b1; + case (num) + 4'd0: sda_r <= db_r[7]; + 4'd1: sda_r <= db_r[6]; + 4'd2: sda_r <= db_r[5]; + 4'd3: sda_r <= db_r[4]; + 4'd4: sda_r <= db_r[3]; + 4'd5: sda_r <= db_r[2]; + 4'd6: sda_r <= db_r[1]; + 4'd7: sda_r <= db_r[0]; + default: ; + endcase + // sda_r <= db_r[4'd7-num]; //写入数æ®ï¼ˆé«˜bit开始) + end + // else if(`SCL_POS) db_r <= {db_r[6:0],1'b0}; //写入数æ®å·¦ç§»1bit + end + else if((`SCL_LOW) && (num==4'd8)) begin + num <= 4'd0; + sda_r <= 1'b1; + sda_link <= 1'b0; //sdaç½®ä¸ºé«˜é˜»æ€ + cstate <= ACK4; + end + else cstate <= DATA; + end + end + ACK4: begin + if(/*!sda*/`SCL_NEG) begin +// sda_r <= 1'b1; + cstate <= STOP1; + end + else cstate <= ACK4; + end + STOP1: begin + if(`SCL_LOW) begin + sda_link <= 1'b1; + sda_r <= 1'b0; + cstate <= STOP1; + end + else if(`SCL_HIG) begin + sda_r <= 1'b1; //scl为高时,sda产生上å‡æ²¿ï¼ˆç»“æŸä¿¡å·ï¼‰ + cstate <= STOP2; + end + else cstate <= STOP1; + end + STOP2: begin + if(`SCL_LOW) sda_r <= 1'b1; + else if(cnt_20ms==20'hffff0) cstate <= IDLE; + else cstate <= STOP2; + end + default: cstate <= IDLE; + endcase +end + +assign sda = sda_link ? sda_r:1'bz; +assign dis_data = read_data; + +//--------------------------------------------- + +endmodule + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/timescale.v b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/timescale.v new file mode 100644 index 0000000..60d4ecb --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/ip/i2c_opencores/timescale.v @@ -0,0 +1,2 @@ +`timescale 1ns / 10ps + diff --git a/Vision/DE10_LITE_D8M_VIP_16/readme.pdf b/Vision/DE10_LITE_D8M_VIP_16/readme.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9fd3819bc021014d8e0d2328c188bb230f907494 GIT binary patch literal 237588 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 z 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 M + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + make + + mem_init_install + true + false + false + + + make + + mem_init_generate + true + false + false + + + make + + help + true + false + false + + + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.force_rebuild b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.force_rebuild new file mode 100644 index 0000000..e69de29 diff --git a/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.force_relink b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.force_relink new file mode 100644 index 0000000..e69de29 diff --git a/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.project b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.project new file mode 100644 index 0000000..c1b033e --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.project @@ -0,0 +1,40 @@ + + + D8M_Camera_Test + + + + + + com.altera.sbtgui.project.makefileBuilder + + + + + com.altera.sbtgui.project.makefileBuilder + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + org.eclipse.cdt.core.ccnature + com.altera.sbtgui.project.SBTGUINature + com.altera.sbtgui.project.SBTGUIAppNature + com.altera.sbtgui.project.SBTGUIManagedNature + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.settings/language.settings.xml b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.settings/language.settings.xml new file mode 100644 index 0000000..1eda590 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/.settings/language.settings.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/D8M_Camera_Test.elf b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/D8M_Camera_Test.elf new file mode 100644 index 0000000000000000000000000000000000000000..af27b55d5216753fde1aa05678173955f12a0af9 GIT binary patch literal 1128331 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

SSg_e@eLYNS0D3mB9^ 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

k- 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

+qL0=3YK?!P5bC8a$jY@`a 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: +#if NIOS2_ICACHE_SIZE > 0 && defined(ALT_ALLOW_CODE_AT_RESET) && (!defined(ALT_SIM_OPTIMIZE) || defined(NIOS2_ECC_PRESENT)) + /* Assume the instruction cache size is always a power of two. */ +#if NIOS2_ICACHE_SIZE > 0x8000 + movhi r2, %hi(NIOS2_ICACHE_SIZE) +#else + movui r2, NIOS2_ICACHE_SIZE + 20000: 00840014 movui r2,4096 +#endif + +0: + initi r2 + 20004: 1001483a initi r2 + addi r2, r2, -NIOS2_ICACHE_LINE_SIZE + 20008: 10bff804 addi r2,r2,-32 + bgt r2, zero, 0b + 2000c: 00bffd16 blt zero,r2,20004 <_gp+0xfffe3acc> + * Jump to the _start entry point in the .text section if reset code + * is allowed or if optimizing for RTL simulation. + */ +#if defined(ALT_ALLOW_CODE_AT_RESET) || defined(ALT_SIM_OPTIMIZE) + /* Jump to the _start entry point in the .text section. */ + movhi r1, %hi(_start) + 20010: 004000b4 movhi at,2 + ori r1, r1, %lo(_start) + 20014: 08409114 ori at,at,580 + jmp r1 + 20018: 0800683a jmp at + 2001c: 00000000 call 0 <__alt_mem_onchip_memory2_0-0x20000> + +Disassembly of section .exceptions: + +00020020 : + +#else /* ALT_EXCEPTION_STACK disabled */ + /* + * Reserve space on normal stack for registers about to be pushed. + */ + addi sp, sp, -76 + 20020: deffed04 addi sp,sp,-76 + * documentation for details). + * + * Leave a gap in the stack frame at 4(sp) for the muldiv handler to + * store zero into. + */ + stw ra, 0(sp) + 20024: dfc00015 stw ra,0(sp) + stw r1, 8(sp) + 20028: d8400215 stw at,8(sp) + stw r2, 12(sp) + 2002c: d8800315 stw r2,12(sp) + stw r3, 16(sp) + 20030: d8c00415 stw r3,16(sp) + stw r4, 20(sp) + 20034: d9000515 stw r4,20(sp) + stw r5, 24(sp) + 20038: d9400615 stw r5,24(sp) + stw r6, 28(sp) + 2003c: d9800715 stw r6,28(sp) + stw r7, 32(sp) + 20040: d9c00815 stw r7,32(sp) + rdctl r5, estatus /* Read early to avoid usage stall */ + 20044: 000b307a rdctl r5,estatus + stw r8, 36(sp) + 20048: da000915 stw r8,36(sp) + stw r9, 40(sp) + 2004c: da400a15 stw r9,40(sp) + stw r10, 44(sp) + 20050: da800b15 stw r10,44(sp) + stw r11, 48(sp) + 20054: dac00c15 stw r11,48(sp) + stw r12, 52(sp) + 20058: db000d15 stw r12,52(sp) + stw r13, 56(sp) + 2005c: db400e15 stw r13,56(sp) + stw r14, 60(sp) + 20060: db800f15 stw r14,60(sp) + stw r15, 64(sp) + 20064: dbc01015 stw r15,64(sp) + /* + * ea-4 contains the address of the instruction being executed + * when the exception occured. For interrupt exceptions, we will + * will be re-issue the isntruction. Store it in 72(sp) + */ + stw r5, 68(sp) /* estatus */ + 20068: d9401115 stw r5,68(sp) + addi r15, ea, -4 /* instruction that caused exception */ + 2006c: ebffff04 addi r15,ea,-4 + stw r15, 72(sp) + 20070: dbc01215 stw r15,72(sp) +#else + /* + * Test to see if the exception was a software exception or caused + * by an external interrupt, and vector accordingly. + */ + rdctl r4, ipending + 20074: 0009313a rdctl r4,ipending + andi r2, r5, 1 + 20078: 2880004c andi r2,r5,1 + beq r2, zero, .Lnot_irq + 2007c: 10000326 beq r2,zero,2008c + beq r4, zero, .Lnot_irq + 20080: 20000226 beq r4,zero,2008c + /* + * Now that all necessary registers have been preserved, call + * alt_irq_handler() to process the interrupts. + */ + + call alt_irq_handler + 20084: 00200fc0 call 200fc + + .section .exceptions.irqreturn, "xa" + + br .Lexception_exit + 20088: 00000706 br 200a8 + * upon completion, so we write ea (address of instruction *after* + * the one where the exception occured) into 72(sp). The actual + * instruction that caused the exception is written in r2, which these + * handlers will utilize. + */ + stw ea, 72(sp) /* EA is PC+4 so will skip over instruction causing exception */ + 2008c: df401215 stw ea,72(sp) +.Lunknown_16bit: + addi.n r4, r4, 2 /* Need PC+2 to skip over instruction causing exception */ + stw r4, 72(sp) + +#else /* CDX is not Enabled and all instructions are 32bits */ + ldw r2, -4(ea) /* Instruction value that caused exception */ + 20090: e8bfff17 ldw r2,-4(ea) + * debugger is present) or go into an infinite loop since the + * handling behavior is undefined; in that case we will not return here. + */ + + /* Load exception-causing address as first argument (r4) */ + addi r4, ea, -4 + 20094: e93fff04 addi r4,ea,-4 + + /* Call the instruction-exception entry */ + call alt_instruction_exception_entry + 20098: 00201d00 call 201d0 + * instruction + * + * Return code was 0: Skip. The instruction after the exception is + * already stored in 72(sp). + */ + bne r2, r0, .Lexception_exit + 2009c: 1000021e bne r2,zero,200a8 + + /* + * Otherwise, modify 72(sp) to re-issue the instruction that caused the + * exception. + */ + addi r15, ea, -4 /* instruction that caused exception */ + 200a0: ebffff04 addi r15,ea,-4 + stw r15, 72(sp) + 200a4: dbc01215 stw r15,72(sp) + /* + * Restore the saved registers, so that all general purpose registers + * have been restored to their state at the time the interrupt occured. + */ + + ldw r5, 68(sp) + 200a8: d9401117 ldw r5,68(sp) + ldw ea, 72(sp) /* This becomes the PC once eret is executed */ + 200ac: df401217 ldw ea,72(sp) + ldw ra, 0(sp) + 200b0: dfc00017 ldw ra,0(sp) + + wrctl estatus, r5 + 200b4: 2801707a wrctl estatus,r5 + + ldw r1, 8(sp) + 200b8: d8400217 ldw at,8(sp) + ldw r2, 12(sp) + 200bc: d8800317 ldw r2,12(sp) + ldw r3, 16(sp) + 200c0: d8c00417 ldw r3,16(sp) + ldw r4, 20(sp) + 200c4: d9000517 ldw r4,20(sp) + ldw r5, 24(sp) + 200c8: d9400617 ldw r5,24(sp) + ldw r6, 28(sp) + 200cc: d9800717 ldw r6,28(sp) + ldw r7, 32(sp) + 200d0: d9c00817 ldw r7,32(sp) + +#if defined(ALT_EXCEPTION_STACK) && defined(ALT_STACK_CHECK) + ldw et, %gprel(alt_exception_old_stack_limit)(gp) +#endif + + ldw r8, 36(sp) + 200d4: da000917 ldw r8,36(sp) + ldw r9, 40(sp) + 200d8: da400a17 ldw r9,40(sp) + ldw r10, 44(sp) + 200dc: da800b17 ldw r10,44(sp) + ldw r11, 48(sp) + 200e0: dac00c17 ldw r11,48(sp) + ldw r12, 52(sp) + 200e4: db000d17 ldw r12,52(sp) + ldw r13, 56(sp) + 200e8: db400e17 ldw r13,56(sp) + ldw r14, 60(sp) + 200ec: db800f17 ldw r14,60(sp) + ldw r15, 64(sp) + 200f0: dbc01017 ldw r15,64(sp) + stw et, %gprel(alt_stack_limit_value)(gp) + stw zero, %gprel(alt_exception_old_stack_limit)(gp) +#endif /* ALT_STACK_CHECK */ + ldw sp, 76(sp) +#else /* ALT_EXCEPTION_STACK disabled */ + addi sp, sp, 76 + 200f4: dec01304 addi sp,sp,76 + + /* + * Return to the interrupted instruction. + */ + + eret + 200f8: ef80083a eret + +000200fc : + * instruction is present if the macro ALT_CI_INTERRUPT_VECTOR defined. + */ + +void alt_irq_handler (void) __attribute__ ((section (".exceptions"))); +void alt_irq_handler (void) +{ + 200fc: defff904 addi sp,sp,-28 + 20100: dfc00615 stw ra,24(sp) + 20104: df000515 stw fp,20(sp) + 20108: df000504 addi fp,sp,20 + + /* + * Notify the operating system that we are at interrupt level. + */ + + ALT_OS_INT_ENTER(); + 2010c: 0001883a nop +#ifndef NIOS2_EIC_PRESENT +static ALT_INLINE alt_u32 ALT_ALWAYS_INLINE alt_irq_pending (void) +{ + alt_u32 active; + + NIOS2_READ_IPENDING (active); + 20110: 0005313a rdctl r2,ipending + 20114: e0bffe15 stw r2,-8(fp) + + return active; + 20118: e0bffe17 ldw r2,-8(fp) + * Consider the case where the high priority interupt is asserted during + * the interrupt entry sequence for a lower priority interrupt to see why + * this is the case. + */ + + active = alt_irq_pending (); + 2011c: e0bffb15 stw r2,-20(fp) + + do + { + i = 0; + 20120: e03ffd15 stw zero,-12(fp) + mask = 1; + 20124: 00800044 movi r2,1 + 20128: e0bffc15 stw r2,-16(fp) + * called to clear the interrupt condition. + */ + + do + { + if (active & mask) + 2012c: e0fffb17 ldw r3,-20(fp) + 20130: e0bffc17 ldw r2,-16(fp) + 20134: 1884703a and r2,r3,r2 + 20138: 10001426 beq r2,zero,2018c + { +#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT + alt_irq[i].handler(alt_irq[i].context); + 2013c: 008000f4 movhi r2,3 + 20140: 109a2104 addi r2,r2,26756 + 20144: e0fffd17 ldw r3,-12(fp) + 20148: 180690fa slli r3,r3,3 + 2014c: 10c5883a add r2,r2,r3 + 20150: 10c00017 ldw r3,0(r2) + 20154: 008000f4 movhi r2,3 + 20158: 109a2104 addi r2,r2,26756 + 2015c: e13ffd17 ldw r4,-12(fp) + 20160: 200890fa slli r4,r4,3 + 20164: 1105883a add r2,r2,r4 + 20168: 10800104 addi r2,r2,4 + 2016c: 10800017 ldw r2,0(r2) + 20170: 1009883a mov r4,r2 + 20174: 183ee83a callr r3 +#else + alt_irq[i].handler(alt_irq[i].context, i); +#endif + break; + 20178: 0001883a nop +#ifndef NIOS2_EIC_PRESENT +static ALT_INLINE alt_u32 ALT_ALWAYS_INLINE alt_irq_pending (void) +{ + alt_u32 active; + + NIOS2_READ_IPENDING (active); + 2017c: 0005313a rdctl r2,ipending + 20180: e0bfff15 stw r2,-4(fp) + + return active; + 20184: e0bfff17 ldw r2,-4(fp) + 20188: 00000706 br 201a8 + } + mask <<= 1; + 2018c: e0bffc17 ldw r2,-16(fp) + 20190: 1085883a add r2,r2,r2 + 20194: e0bffc15 stw r2,-16(fp) + i++; + 20198: e0bffd17 ldw r2,-12(fp) + 2019c: 10800044 addi r2,r2,1 + 201a0: e0bffd15 stw r2,-12(fp) + + } while (1); + 201a4: 003fe106 br 2012c <_gp+0xfffe3bf4> + + active = alt_irq_pending (); + 201a8: e0bffb15 stw r2,-20(fp) + + } while (active); + 201ac: e0bffb17 ldw r2,-20(fp) + 201b0: 103fdb1e bne r2,zero,20120 <_gp+0xfffe3be8> + + /* + * Notify the operating system that interrupt processing is complete. + */ + + ALT_OS_INT_EXIT(); + 201b4: 0001883a nop +} + 201b8: 0001883a nop + 201bc: e037883a mov sp,fp + 201c0: dfc00117 ldw ra,4(sp) + 201c4: df000017 ldw fp,0(sp) + 201c8: dec00204 addi sp,sp,8 + 201cc: f800283a ret + +000201d0 : + * that handler if it has been registered. Absent a handler, it will + * break break or hang as discussed below. + */ +int +alt_instruction_exception_entry (alt_u32 exception_pc) +{ + 201d0: defffb04 addi sp,sp,-20 + 201d4: dfc00415 stw ra,16(sp) + 201d8: df000315 stw fp,12(sp) + 201dc: df000304 addi fp,sp,12 + 201e0: e13fff15 stw r4,-4(fp) + * NIOS2_EXCEPTION_CAUSE_NOT_PRESENT. Your handling routine should + * check the validity of the cause argument before proceeding. + */ +#ifdef NIOS2_HAS_EXTRA_EXCEPTION_INFO + /* Get exception cause & "badaddr" */ + NIOS2_READ_EXCEPTION(cause); + 201e4: 000531fa rdctl r2,exception + 201e8: e0bffd15 stw r2,-12(fp) + cause = ( (cause & NIOS2_EXCEPTION_REG_CAUSE_MASK) >> + 201ec: e0bffd17 ldw r2,-12(fp) + 201f0: 10801f0c andi r2,r2,124 + 201f4: 1004d0ba srli r2,r2,2 + 201f8: e0bffd15 stw r2,-12(fp) + NIOS2_EXCEPTION_REG_CAUSE_OFST ); + + NIOS2_READ_BADADDR(badaddr); + 201fc: 0005333a rdctl r2,badaddr + 20200: e0bffe15 stw r2,-8(fp) +#else + cause = NIOS2_EXCEPTION_CAUSE_NOT_PRESENT; + badaddr = 0; +#endif /* NIOS2_HAS_EXTRA_EXCEPTION_INFO */ + + if(alt_instruction_exception_handler) { + 20204: d0a8c817 ldw r2,-23776(gp) + 20208: 10000726 beq r2,zero,20228 + * Call handler. Its return value indicates whether the exception-causing + * instruction should be re-issued. The code that called us, + * alt_eceptions_entry.S, will look at this value and adjust the ea + * register as necessary + */ + return alt_instruction_exception_handler(cause, exception_pc, badaddr); + 2020c: d0a8c817 ldw r2,-23776(gp) + 20210: e0fffd17 ldw r3,-12(fp) + 20214: e1bffe17 ldw r6,-8(fp) + 20218: e17fff17 ldw r5,-4(fp) + 2021c: 1809883a mov r4,r3 + 20220: 103ee83a callr r2 + 20224: 00000206 br 20230 + * (a peripheral which negates its interrupt output before its + * interrupt handler has been executed will cause spurious interrupts) + */ + else { +#ifdef NIOS2_HAS_DEBUG_STUB + NIOS2_BREAK(); + 20228: 003da03a break 0 + ; +#endif /* NIOS2_HAS_DEBUG_STUB */ + } + + /* We should not get here. Remove compiler warning. */ + return NIOS2_EXCEPTION_RETURN_REISSUE_INST; + 2022c: 0005883a mov r2,zero +} + 20230: e037883a mov sp,fp + 20234: dfc00117 ldw ra,4(sp) + 20238: df000017 ldw fp,0(sp) + 2023c: dec00204 addi sp,sp,8 + 20240: f800283a ret + +Disassembly of section .text: + +00020244 <_start>: + + /* Assume the data cache size is always a power of two. */ +#if NIOS2_DCACHE_SIZE > 0x8000 + movhi r2, %hi(NIOS2_DCACHE_SIZE) +#else + movui r2, NIOS2_DCACHE_SIZE + 20244: 00820014 movui r2,2048 +#endif + +0: + initd 0(r2) + 20248: 10000033 initd 0(r2) +#ifdef NIOS2_ECC_PRESENT + addi r2, r2, -4 +#else + addi r2, r2, -NIOS2_DCACHE_LINE_SIZE + 2024c: 10bff804 addi r2,r2,-32 +#endif + bgt r2, zero, 0b + 20250: 00bffd16 blt zero,r2,20248 <_gp+0xfffe3d10> + + /* + * Now that the caches are initialized, set up the stack pointer and global pointer. + * The values provided by the linker are assumed to be correctly aligned. + */ + movhi sp, %hi(__alt_stack_pointer) + 20254: 06c000f4 movhi sp,3 + ori sp, sp, %lo(__alt_stack_pointer) + 20258: dee1a814 ori sp,sp,34464 + movhi gp, %hi(_gp) + 2025c: 068000f4 movhi gp,3 + ori gp, gp, %lo(_gp) + 20260: d6b14e14 ori gp,gp,50488 + */ +#ifndef ALT_SIM_OPTIMIZE + /* Log that the BSS is about to be cleared. */ + ALT_LOG_PUTS(alt_log_msg_bss) + + movhi r2, %hi(__bss_start) + 20264: 008000f4 movhi r2,3 + ori r2, r2, %lo(__bss_start) + 20268: 109a0914 ori r2,r2,26660 + + movhi r3, %hi(__bss_end) + 2026c: 00c000f4 movhi r3,3 + ori r3, r3, %lo(__bss_end) + 20270: 18da6114 ori r3,r3,27012 + + beq r2, r3, 1f + 20274: 10c00326 beq r2,r3,20284 <_start+0x40> + +0: + stw zero, (r2) + 20278: 10000015 stw zero,0(r2) + addi r2, r2, 4 + 2027c: 10800104 addi r2,r2,4 + bltu r2, r3, 0b + 20280: 10fffd36 bltu r2,r3,20278 <_gp+0xfffe3d40> + * section aren't defined until alt_load() has been called). + */ + mov et, zero +#endif + + call alt_load + 20284: 002f35c0 call 2f35c + + /* Log that alt_main is about to be called. */ + ALT_LOG_PUTS(alt_log_msg_alt_main) + + /* Call the C entry point. It should never return. */ + call alt_main + 20288: 002f5040 call 2f504 + +0002028c : + + /* Wait in infinite loop in case alt_main does return. */ +alt_after_alt_main: + br alt_after_alt_main + 2028c: 003fff06 br 2028c <_gp+0xfffe3d54> + +00020290 : +#define SLEEP_TIME 250 //us +#define ACK_SLEEP_TIME 250 //us +#define TRUE 1 +#define FALSE 0 + +bool Write32_Data(alt_32 base_address, alt_32 offset_address, alt_32 Data){ + 20290: defffb04 addi sp,sp,-20 + 20294: df000415 stw fp,16(sp) + 20298: df000404 addi fp,sp,16 + 2029c: e13ffd15 stw r4,-12(fp) + 202a0: e17ffe15 stw r5,-8(fp) + 202a4: e1bfff15 stw r6,-4(fp) + bool bPass; + IOWR(base_address, offset_address,Data); + 202a8: e0bffe17 ldw r2,-8(fp) + 202ac: 1085883a add r2,r2,r2 + 202b0: 1085883a add r2,r2,r2 + 202b4: 1007883a mov r3,r2 + 202b8: e0bffd17 ldw r2,-12(fp) + 202bc: 1885883a add r2,r3,r2 + 202c0: 1007883a mov r3,r2 + 202c4: e0bfff17 ldw r2,-4(fp) + 202c8: 18800035 stwio r2,0(r3) + bPass=TRUE; + 202cc: 00800044 movi r2,1 + 202d0: e0bffc15 stw r2,-16(fp) + return bPass; + 202d4: e0bffc17 ldw r2,-16(fp) +} + 202d8: e037883a mov sp,fp + 202dc: df000017 ldw fp,0(sp) + 202e0: dec00104 addi sp,sp,4 + 202e4: f800283a ret + +000202e8 : + + + +bool Read32_Data(alt_32 base_address, alt_32 offset_address, alt_32 *pData32){ + 202e8: defffb04 addi sp,sp,-20 + 202ec: df000415 stw fp,16(sp) + 202f0: df000404 addi fp,sp,16 + 202f4: e13ffd15 stw r4,-12(fp) + 202f8: e17ffe15 stw r5,-8(fp) + 202fc: e1bfff15 stw r6,-4(fp) + bool bPass; + *pData32 =IORD(base_address ,offset_address ); + 20300: e0bffe17 ldw r2,-8(fp) + 20304: 1085883a add r2,r2,r2 + 20308: 1085883a add r2,r2,r2 + 2030c: 1007883a mov r3,r2 + 20310: e0bffd17 ldw r2,-12(fp) + 20314: 1885883a add r2,r3,r2 + 20318: 10c00037 ldwio r3,0(r2) + 2031c: e0bfff17 ldw r2,-4(fp) + 20320: 10c00015 stw r3,0(r2) + bPass=TRUE; + 20324: 00800044 movi r2,1 + 20328: e0bffc15 stw r2,-16(fp) + return bPass; + 2032c: e0bffc17 ldw r2,-16(fp) +} + 20330: e037883a mov sp,fp + 20334: df000017 ldw fp,0(sp) + 20338: dec00104 addi sp,sp,4 + 2033c: f800283a ret + +00020340 : + +bool oc_i2c_init(alt_32 i2c_base){ + 20340: defffa04 addi sp,sp,-24 + 20344: dfc00515 stw ra,20(sp) + 20348: df000415 stw fp,16(sp) + 2034c: df000404 addi fp,sp,16 + 20350: e13fff15 stw r4,-4(fp) + bool bSuccess; + const alt_32 ref_clk = 50*1000*1000; // 50MHz + 20354: 0080bef4 movhi r2,763 + 20358: 10bc2004 addi r2,r2,-3968 + 2035c: e0bffc15 stw r2,-16(fp) + const alt_32 i2c_clk = 400*1000; // 400KHz + 20360: 008001b4 movhi r2,6 + 20364: 1086a004 addi r2,r2,6784 + 20368: e0bffd15 stw r2,-12(fp) + + bSuccess = oc_i2c_init_ex(i2c_base, ref_clk, i2c_clk); + 2036c: e1bffd17 ldw r6,-12(fp) + 20370: e17ffc17 ldw r5,-16(fp) + 20374: e13fff17 ldw r4,-4(fp) + 20378: 00203980 call 20398 + 2037c: e0bffe15 stw r2,-8(fp) + + return bSuccess; + 20380: e0bffe17 ldw r2,-8(fp) +} + 20384: e037883a mov sp,fp + 20388: dfc00117 ldw ra,4(sp) + 2038c: df000017 ldw fp,0(sp) + 20390: dec00204 addi sp,sp,8 + 20394: f800283a ret + +00020398 : + +bool oc_i2c_init_ex(alt_32 i2c_base, alt_32 ref_clk, alt_32 i2c_clk) +{ + 20398: defff604 addi sp,sp,-40 + 2039c: dfc00915 stw ra,36(sp) + 203a0: df000815 stw fp,32(sp) + 203a4: df000804 addi fp,sp,32 + 203a8: e13ffd15 stw r4,-12(fp) + 203ac: e17ffe15 stw r5,-8(fp) + 203b0: e1bfff15 stw r6,-4(fp) + bool bSuccess=TRUE; + 203b4: 00800044 movi r2,1 + 203b8: e0bff815 stw r2,-32(fp) + alt_32 read_data; + alt_32 prescale; + alt_u8 prescale_high; + alt_u8 prescale_low; + const alt_u8 ControlValue = 0x80; + 203bc: 00bfe004 movi r2,-128 + 203c0: e0bff905 stb r2,-28(fp) + + // I2c sysclock =50M hz + // i2c scl max 400k + //scl =sysclock/(prescale*5) + prescale = (ref_clk/(5*i2c_clk))-1; + 203c4: e0bfff17 ldw r2,-4(fp) + 203c8: 10800164 muli r2,r2,5 + 203cc: 100b883a mov r5,r2 + 203d0: e13ffe17 ldw r4,-8(fp) + 203d4: 00224e40 call 224e4 <__divsi3> + 203d8: 10bfffc4 addi r2,r2,-1 + 203dc: e0bffa15 stw r2,-24(fp) + prescale_low = prescale & 0xFF; + 203e0: e0bffa17 ldw r2,-24(fp) + 203e4: e0bffb05 stb r2,-20(fp) + prescale_high = (prescale >> 8) & 0xFF; + 203e8: e0bffa17 ldw r2,-24(fp) + 203ec: 1005d23a srai r2,r2,8 + 203f0: e0bffb45 stb r2,-19(fp) + + IOWR(i2c_base, 0, prescale_low);//write low byte of prescale (reg 0) + 203f4: e0bffd17 ldw r2,-12(fp) + 203f8: e0fffb03 ldbu r3,-20(fp) + 203fc: 10c00035 stwio r3,0(r2) + IOWR(i2c_base, 1, prescale_high);//write high byte of prescale (reg 1) + 20400: e0bffd17 ldw r2,-12(fp) + 20404: 10800104 addi r2,r2,4 + 20408: 1007883a mov r3,r2 + 2040c: e0bffb43 ldbu r2,-19(fp) + 20410: 18800035 stwio r2,0(r3) + + //enable the I2C core, but disable the IRQ + IOWR( i2c_base, 2, ControlValue); + 20414: e0bffd17 ldw r2,-12(fp) + 20418: 10800204 addi r2,r2,8 + 2041c: 1007883a mov r3,r2 + 20420: e0bff903 ldbu r2,-28(fp) + 20424: 18800035 stwio r2,0(r3) + + + // check prescale low byte + if (bSuccess){ + 20428: e0bff817 ldw r2,-32(fp) + 2042c: 10000826 beq r2,zero,20450 + read_data =IORD(i2c_base, 0); + 20430: e0bffd17 ldw r2,-12(fp) + 20434: 10800037 ldwio r2,0(r2) + 20438: e0bffc15 stw r2,-16(fp) + if( (read_data & 0x00ff) != prescale_low ){ + 2043c: e0bffc17 ldw r2,-16(fp) + 20440: 10c03fcc andi r3,r2,255 + 20444: e0bffb03 ldbu r2,-20(fp) + 20448: 18800126 beq r3,r2,20450 + bSuccess = FALSE; + 2044c: e03ff815 stw zero,-32(fp) + } + } + + // check prescale high byte + if (bSuccess){ + 20450: e0bff817 ldw r2,-32(fp) + 20454: 10000926 beq r2,zero,2047c + read_data =IORD(i2c_base, 1); + 20458: e0bffd17 ldw r2,-12(fp) + 2045c: 10800104 addi r2,r2,4 + 20460: 10800037 ldwio r2,0(r2) + 20464: e0bffc15 stw r2,-16(fp) + if( (read_data & 0x00ff) != prescale_high ){ + 20468: e0bffc17 ldw r2,-16(fp) + 2046c: 10c03fcc andi r3,r2,255 + 20470: e0bffb43 ldbu r2,-19(fp) + 20474: 18800126 beq r3,r2,2047c + bSuccess = FALSE; + 20478: e03ff815 stw zero,-32(fp) + } + } + + // check control + if (bSuccess){ + 2047c: e0bff817 ldw r2,-32(fp) + 20480: 10000926 beq r2,zero,204a8 + read_data =IORD(i2c_base, 2); + 20484: e0bffd17 ldw r2,-12(fp) + 20488: 10800204 addi r2,r2,8 + 2048c: 10800037 ldwio r2,0(r2) + 20490: e0bffc15 stw r2,-16(fp) + if( (read_data & 0x00ff) != ControlValue ){ + 20494: e0bffc17 ldw r2,-16(fp) + 20498: 10c03fcc andi r3,r2,255 + 2049c: e0bff903 ldbu r2,-28(fp) + 204a0: 18800126 beq r3,r2,204a8 + bSuccess = FALSE; + 204a4: e03ff815 stw zero,-32(fp) + } + } + + if (bSuccess){ + 204a8: e0bff817 ldw r2,-32(fp) + 204ac: 1000031e bne r2,zero,204bc +// printf("\nI2C core is enabled! \r\n"); + } + else + printf("\nI2C core is not enabled successfully! \r\n"); + 204b0: 010000f4 movhi r4,3 + 204b4: 21068704 addi r4,r4,6684 + 204b8: 00231400 call 23140 + + return bSuccess; + 204bc: e0bff817 ldw r2,-32(fp) + +} + 204c0: e037883a mov sp,fp + 204c4: dfc00117 ldw ra,4(sp) + 204c8: df000017 ldw fp,0(sp) + 204cc: dec00204 addi sp,sp,8 + 204d0: f800283a ret + +000204d4 : + +bool oc_i2c_uninit(alt_32 i2c_base) +{ + 204d4: defffa04 addi sp,sp,-24 + 204d8: dfc00515 stw ra,20(sp) + 204dc: df000415 stw fp,16(sp) + 204e0: df000404 addi fp,sp,16 + 204e4: e13fff15 stw r4,-4(fp) + bool bSuccess=TRUE; + 204e8: 00800044 movi r2,1 + 204ec: e0bffc15 stw r2,-16(fp) + alt_32 read_data; + const alt_u8 ControlValue = 0x00; + 204f0: e03ffd05 stb zero,-12(fp) + + IOWR( i2c_base, 2, ControlValue); + 204f4: e0bfff17 ldw r2,-4(fp) + 204f8: 10800204 addi r2,r2,8 + 204fc: 1007883a mov r3,r2 + 20500: e0bffd03 ldbu r2,-12(fp) + 20504: 18800035 stwio r2,0(r3) + read_data =IORD(i2c_base, 2); + 20508: e0bfff17 ldw r2,-4(fp) + 2050c: 10800204 addi r2,r2,8 + 20510: 10800037 ldwio r2,0(r2) + 20514: e0bffe15 stw r2,-8(fp) + if( (read_data & 0x00ff) != ControlValue ){ + 20518: e0bffe17 ldw r2,-8(fp) + 2051c: 10c03fcc andi r3,r2,255 + 20520: e0bffd03 ldbu r2,-12(fp) + 20524: 18800126 beq r3,r2,2052c + bSuccess = FALSE; + 20528: e03ffc15 stw zero,-16(fp) + } + + if (bSuccess){ + 2052c: e0bffc17 ldw r2,-16(fp) + 20530: 1000031e bne r2,zero,20540 +// printf("\I2C core is disabled! \r\n"); + } + else + printf("\I2C core is failed to disable! \r\n"); + 20534: 010000f4 movhi r4,3 + 20538: 21069204 addi r4,r4,6728 + 2053c: 00231400 call 23140 + + return bSuccess; + 20540: e0bffc17 ldw r2,-16(fp) + +} + 20544: e037883a mov sp,fp + 20548: dfc00117 ldw ra,4(sp) + 2054c: df000017 ldw fp,0(sp) + 20550: dec00204 addi sp,sp,8 + 20554: f800283a ret + +00020558 : + + + + +bool ACK_single_check(alt_32 i2c_base) +{ + 20558: defffb04 addi sp,sp,-20 + 2055c: dfc00415 stw ra,16(sp) + 20560: df000315 stw fp,12(sp) + 20564: df000304 addi fp,sp,12 + 20568: e13fff15 stw r4,-4(fp) + bool bSuccess=TRUE; + 2056c: 00800044 movi r2,1 + 20570: e0bffd15 stw r2,-12(fp) + alt_32 read_data; + + usleep(ACK_SLEEP_TIME); + 20574: 01003e84 movi r4,250 + 20578: 002f9cc0 call 2f9cc + read_data =IORD(i2c_base, 4); + 2057c: e0bfff17 ldw r2,-4(fp) + 20580: 10800404 addi r2,r2,16 + 20584: 10800037 ldwio r2,0(r2) + 20588: e0bffe15 stw r2,-8(fp) + if(read_data & 0x02) + 2058c: e0bffe17 ldw r2,-8(fp) + 20590: 1080008c andi r2,r2,2 + 20594: 10000126 beq r2,zero,2059c + bSuccess = FALSE; + 20598: e03ffd15 stw zero,-12(fp) + if (bSuccess){ + 2059c: e0bffd17 ldw r2,-12(fp) + 205a0: 10000a26 beq r2,zero,205cc + usleep(ACK_SLEEP_TIME); + 205a4: 01003e84 movi r4,250 + 205a8: 002f9cc0 call 2f9cc + read_data =IORD(i2c_base, 4); + 205ac: e0bfff17 ldw r2,-4(fp) + 205b0: 10800404 addi r2,r2,16 + 205b4: 10800037 ldwio r2,0(r2) + 205b8: e0bffe15 stw r2,-8(fp) + if(read_data & 0x80) + 205bc: e0bffe17 ldw r2,-8(fp) + 205c0: 1080200c andi r2,r2,128 + 205c4: 10000126 beq r2,zero,205cc + bSuccess = FALSE; + 205c8: e03ffd15 stw zero,-12(fp) + } + return bSuccess; + 205cc: e0bffd17 ldw r2,-12(fp) +} + 205d0: e037883a mov sp,fp + 205d4: dfc00117 ldw ra,4(sp) + 205d8: df000017 ldw fp,0(sp) + 205dc: dec00204 addi sp,sp,8 + 205e0: f800283a ret + +000205e4 : + + +bool ACK_check(alt_32 i2c_base){ + 205e4: defffb04 addi sp,sp,-20 + 205e8: dfc00415 stw ra,16(sp) + 205ec: df000315 stw fp,12(sp) + 205f0: df000304 addi fp,sp,12 + 205f4: e13fff15 stw r4,-4(fp) + bool bSuccess = FALSE; + 205f8: e03ffd15 stw zero,-12(fp) + int i=0; + 205fc: e03ffe15 stw zero,-8(fp) + + while(!bSuccess && i++ < 10){ + 20600: 00000306 br 20610 + bSuccess = ACK_single_check(i2c_base); + 20604: e13fff17 ldw r4,-4(fp) + 20608: 00205580 call 20558 + 2060c: e0bffd15 stw r2,-12(fp) + +bool ACK_check(alt_32 i2c_base){ + bool bSuccess = FALSE; + int i=0; + + while(!bSuccess && i++ < 10){ + 20610: e0bffd17 ldw r2,-12(fp) + 20614: 1000051e bne r2,zero,2062c + 20618: e0bffe17 ldw r2,-8(fp) + 2061c: 10c00044 addi r3,r2,1 + 20620: e0fffe15 stw r3,-8(fp) + 20624: 10800290 cmplti r2,r2,10 + 20628: 103ff61e bne r2,zero,20604 <_gp+0xfffe40cc> + bSuccess = ACK_single_check(i2c_base); + } + + return bSuccess; + 2062c: e0bffd17 ldw r2,-12(fp) +} + 20630: e037883a mov sp,fp + 20634: dfc00117 ldw ra,4(sp) + 20638: df000017 ldw fp,0(sp) + 2063c: dec00204 addi sp,sp,8 + 20640: f800283a ret + +00020644 : + +bool OC_I2C_Write(alt_32 i2c_base,alt_u8 device_address,alt_u8 sub_address, alt_u8 *pData, int nWriteLength) +{ + 20644: defff904 addi sp,sp,-28 + 20648: dfc00615 stw ra,24(sp) + 2064c: df000515 stw fp,20(sp) + 20650: df000504 addi fp,sp,20 + 20654: e13ffc15 stw r4,-16(fp) + 20658: 2807883a mov r3,r5 + 2065c: 3005883a mov r2,r6 + 20660: e1ffff15 stw r7,-4(fp) + 20664: e0fffd05 stb r3,-12(fp) + 20668: e0bffe05 stb r2,-8(fp) + //DWORD reg_data = 0x0; + int i; + + //set the tx reg audio chip dev address with write bit + if (!Write32_Data( i2c_base, 3,device_address)){ + 2066c: e0bffd03 ldbu r2,-12(fp) + 20670: 100d883a mov r6,r2 + 20674: 014000c4 movi r5,3 + 20678: e13ffc17 ldw r4,-16(fp) + 2067c: 00202900 call 20290 + 20680: 1000051e bne r2,zero,20698 + printf("OC_I2C_Write error[0]\r\n"); + 20684: 010000f4 movhi r4,3 + 20688: 21069b04 addi r4,r4,6764 + 2068c: 00231400 call 23140 + return FALSE; + 20690: 0005883a mov r2,zero + 20694: 00006606 br 20830 + } + //set STA and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x90)){ + 20698: 01802404 movi r6,144 + 2069c: 01400104 movi r5,4 + 206a0: e13ffc17 ldw r4,-16(fp) + 206a4: 00202900 call 20290 + 206a8: 1000051e bne r2,zero,206c0 + printf("OC_I2C_Write error[1]\r\n"); + 206ac: 010000f4 movhi r4,3 + 206b0: 2106a104 addi r4,r4,6788 + 206b4: 00231400 call 23140 + return FALSE; + 206b8: 0005883a mov r2,zero + 206bc: 00005c06 br 20830 + } + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 206c0: e13ffc17 ldw r4,-16(fp) + 206c4: 00205e40 call 205e4 + 206c8: 1000051e bne r2,zero,206e0 + printf("OC_I2C_Write error[2]\r\n"); + 206cc: 010000f4 movhi r4,3 + 206d0: 2106a704 addi r4,r4,6812 + 206d4: 00231400 call 23140 + return FALSE; + 206d8: 0005883a mov r2,zero + 206dc: 00005406 br 20830 + } + // printf("\n receive ACK-device address! \n"); + + //set the txr reg data with reg address + 1 data MSB + if (!Write32_Data( i2c_base, 3,sub_address)){ + 206e0: e0bffe03 ldbu r2,-8(fp) + 206e4: 100d883a mov r6,r2 + 206e8: 014000c4 movi r5,3 + 206ec: e13ffc17 ldw r4,-16(fp) + 206f0: 00202900 call 20290 + 206f4: 1000051e bne r2,zero,2070c + printf("OC_I2C_Write error[3]\r\n"); + 206f8: 010000f4 movhi r4,3 + 206fc: 2106ad04 addi r4,r4,6836 + 20700: 00231400 call 23140 + return FALSE; + 20704: 0005883a mov r2,zero + 20708: 00004906 br 20830 + } + + //set WR bits(bit4) + if (!Write32_Data( i2c_base, 4,0x10)){ + 2070c: 01800404 movi r6,16 + 20710: 01400104 movi r5,4 + 20714: e13ffc17 ldw r4,-16(fp) + 20718: 00202900 call 20290 + 2071c: 1000051e bne r2,zero,20734 + printf("OC_I2C_Write error[4]\r\n"); + 20720: 010000f4 movhi r4,3 + 20724: 2106b304 addi r4,r4,6860 + 20728: 00231400 call 23140 + return FALSE; + 2072c: 0005883a mov r2,zero + 20730: 00003f06 br 20830 + } + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 20734: e13ffc17 ldw r4,-16(fp) + 20738: 00205e40 call 205e4 + 2073c: 1000051e bne r2,zero,20754 + printf("OC_I2C_Write error[5]\r\n"); + 20740: 010000f4 movhi r4,3 + 20744: 2106b904 addi r4,r4,6884 + 20748: 00231400 call 23140 + return FALSE; + 2074c: 0005883a mov r2,zero + 20750: 00003706 br 20830 + } + // printf("\n receive ACK-reg address! \n"); + +#if 1 + for( i=nWriteLength-1;i>=0;i--){ + 20754: e0800217 ldw r2,8(fp) + 20758: 10bfffc4 addi r2,r2,-1 + 2075c: e0bffb15 stw r2,-20(fp) + 20760: 00002406 br 207f4 + //set the txr reg data with the data + if (!Write32_Data( i2c_base, 3,*(pData+i))){ + 20764: e0bffb17 ldw r2,-20(fp) + 20768: e0ffff17 ldw r3,-4(fp) + 2076c: 1885883a add r2,r3,r2 + 20770: 10800003 ldbu r2,0(r2) + 20774: 10803fcc andi r2,r2,255 + 20778: 100d883a mov r6,r2 + 2077c: 014000c4 movi r5,3 + 20780: e13ffc17 ldw r4,-16(fp) + 20784: 00202900 call 20290 + 20788: 1000051e bne r2,zero,207a0 + printf("OC_I2C_Write error[6]\r\n"); + 2078c: 010000f4 movhi r4,3 + 20790: 2106bf04 addi r4,r4,6908 + 20794: 00231400 call 23140 + return FALSE; + 20798: 0005883a mov r2,zero + 2079c: 00002406 br 20830 + } + + //set STO and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x10)){ + 207a0: 01800404 movi r6,16 + 207a4: 01400104 movi r5,4 + 207a8: e13ffc17 ldw r4,-16(fp) + 207ac: 00202900 call 20290 + 207b0: 1000051e bne r2,zero,207c8 + printf("OC_I2C_Write error[7]\r\n"); + 207b4: 010000f4 movhi r4,3 + 207b8: 2106c504 addi r4,r4,6932 + 207bc: 00231400 call 23140 + return FALSE; + 207c0: 0005883a mov r2,zero + 207c4: 00001a06 br 20830 + } + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 207c8: e13ffc17 ldw r4,-16(fp) + 207cc: 00205e40 call 205e4 + 207d0: 1000051e bne r2,zero,207e8 + printf("OC_I2C_Write error[8]\r\n"); + 207d4: 010000f4 movhi r4,3 + 207d8: 2106cb04 addi r4,r4,6956 + 207dc: 00231400 call 23140 + return FALSE; + 207e0: 0005883a mov r2,zero + 207e4: 00001206 br 20830 + return FALSE; + } + // printf("\n receive ACK-reg address! \n"); + +#if 1 + for( i=nWriteLength-1;i>=0;i--){ + 207e8: e0bffb17 ldw r2,-20(fp) + 207ec: 10bfffc4 addi r2,r2,-1 + 207f0: e0bffb15 stw r2,-20(fp) + 207f4: e0bffb17 ldw r2,-20(fp) + 207f8: 103fda0e bge r2,zero,20764 <_gp+0xfffe422c> + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)) + return false; +#endif + + if (!Write32_Data( i2c_base, 4,0x40)){ + 207fc: 01801004 movi r6,64 + 20800: 01400104 movi r5,4 + 20804: e13ffc17 ldw r4,-16(fp) + 20808: 00202900 call 20290 + 2080c: 1000051e bne r2,zero,20824 + printf("OC_I2C_Write error[9]\r\n"); + 20810: 010000f4 movhi r4,3 + 20814: 2106d104 addi r4,r4,6980 + 20818: 00231400 call 23140 + return FALSE; + 2081c: 0005883a mov r2,zero + 20820: 00000306 br 20830 + } + //Sleep(10); + //OS_msleep(1); + usleep(SLEEP_TIME); + 20824: 01003e84 movi r4,250 + 20828: 002f9cc0 call 2f9cc + + // printf("\n receive ACK-data! \n"); + + return TRUE; + 2082c: 00800044 movi r2,1 + +} + 20830: e037883a mov sp,fp + 20834: dfc00117 ldw ra,4(sp) + 20838: df000017 ldw fp,0(sp) + 2083c: dec00204 addi sp,sp,8 + 20840: f800283a ret + +00020844 : + + +bool ACK_judge_for_read(alt_32 i2c_base) +{ + 20844: defffb04 addi sp,sp,-20 + 20848: dfc00415 stw ra,16(sp) + 2084c: df000315 stw fp,12(sp) + 20850: df000304 addi fp,sp,12 + 20854: e13fff15 stw r4,-4(fp) + bool bSuccess; + alt_32 this_data; + + // OS_msleep( SLEEP_TIME ); + usleep(ACK_SLEEP_TIME); + 20858: 01003e84 movi r4,250 + 2085c: 002f9cc0 call 2f9cc + // while(this_data & 0x02) +// { +// this_data = Read32_Data ( hPCIe, i2c_base, 4); +// } + bSuccess = Read32_Data ( i2c_base, 4, &this_data); + 20860: e0bffe04 addi r2,fp,-8 + 20864: 100d883a mov r6,r2 + 20868: 01400104 movi r5,4 + 2086c: e13fff17 ldw r4,-4(fp) + 20870: 00202e80 call 202e8 + 20874: e0bffd15 stw r2,-12(fp) + if (bSuccess){ + 20878: e0bffd17 ldw r2,-12(fp) + 2087c: 10000426 beq r2,zero,20890 + if(this_data & 0x02) + 20880: e0bffe17 ldw r2,-8(fp) + 20884: 1080008c andi r2,r2,2 + 20888: 10000126 beq r2,zero,20890 + bSuccess = FALSE; + 2088c: e03ffd15 stw zero,-12(fp) + } + //wait the rx ACK signal 0-valid + + return bSuccess; + 20890: e0bffd17 ldw r2,-12(fp) + +} + 20894: e037883a mov sp,fp + 20898: dfc00117 ldw ra,4(sp) + 2089c: df000017 ldw fp,0(sp) + 208a0: dec00204 addi sp,sp,8 + 208a4: f800283a ret + +000208a8 : + +bool OC_I2C_Read(alt_32 i2c_base,alt_u8 device_address,alt_u8 sub_address, alt_u8 *pData8, int nReadLength){ + 208a8: defff804 addi sp,sp,-32 + 208ac: dfc00715 stw ra,28(sp) + 208b0: df000615 stw fp,24(sp) + 208b4: df000604 addi fp,sp,24 + 208b8: e13ffc15 stw r4,-16(fp) + 208bc: 2807883a mov r3,r5 + 208c0: 3005883a mov r2,r6 + 208c4: e1ffff15 stw r7,-4(fp) + 208c8: e0fffd05 stb r3,-12(fp) + 208cc: e0bffe05 stb r2,-8(fp) + //BYTE data = 0x0; + alt_32 Data32; + int i; + + //set the tx reg audio chip dev address with write bit + IOWR( i2c_base, 3,device_address); + 208d0: e0bffc17 ldw r2,-16(fp) + 208d4: 10800304 addi r2,r2,12 + 208d8: 1007883a mov r3,r2 + 208dc: e0bffd03 ldbu r2,-12(fp) + 208e0: 18800035 stwio r2,0(r3) + //set STA and WR bits(bit7 and bit4) + IOWR( i2c_base, 4,0x90); + 208e4: e0bffc17 ldw r2,-16(fp) + 208e8: 10800404 addi r2,r2,16 + 208ec: 1007883a mov r3,r2 + 208f0: 00802404 movi r2,144 + 208f4: 18800035 stwio r2,0(r3) + //wait TIP bit go to 0 to end Tx + if (!ACK_check( i2c_base)){ + 208f8: e13ffc17 ldw r4,-16(fp) + 208fc: 00205e40 call 205e4 + 20900: 1000051e bne r2,zero,20918 + printf("OC_I2C_Read error[2]\r\n"); + 20904: 010000f4 movhi r4,3 + 20908: 2106d704 addi r4,r4,7004 + 2090c: 00231400 call 23140 + return FALSE; + 20910: 0005883a mov r2,zero + 20914: 00005206 br 20a60 + } + IOWR(i2c_base, 3,sub_address); + 20918: e0bffc17 ldw r2,-16(fp) + 2091c: 10800304 addi r2,r2,12 + 20920: 1007883a mov r3,r2 + 20924: e0bffe03 ldbu r2,-8(fp) + 20928: 18800035 stwio r2,0(r3) + + //set WR bits(bit4) + IOWR( i2c_base, 4,0x10); + 2092c: e0bffc17 ldw r2,-16(fp) + 20930: 10800404 addi r2,r2,16 + 20934: 1007883a mov r3,r2 + 20938: 00800404 movi r2,16 + 2093c: 18800035 stwio r2,0(r3) + //wait TIP bit go to 0 to end Tx + if (!ACK_check( i2c_base)){ + 20940: e13ffc17 ldw r4,-16(fp) + 20944: 00205e40 call 205e4 + 20948: 1000051e bne r2,zero,20960 + printf("OC_I2C_Read error[5]\r\n"); + 2094c: 010000f4 movhi r4,3 + 20950: 2106dd04 addi r4,r4,7028 + 20954: 00231400 call 23140 + return FALSE; + 20958: 0005883a mov r2,zero + 2095c: 00004006 br 20a60 + // printf("\n read receive ACK-reg address! \n"); + + //read + //set the tx reg audio chip dev address with read bit 1 + + IOWR(i2c_base, 3,device_address|0x01); + 20960: e0bffc17 ldw r2,-16(fp) + 20964: 10800304 addi r2,r2,12 + 20968: 1007883a mov r3,r2 + 2096c: e0bffd03 ldbu r2,-12(fp) + 20970: 10800054 ori r2,r2,1 + 20974: 10803fcc andi r2,r2,255 + 20978: 18800035 stwio r2,0(r3) + + //set STA and WR bits(bit7 and bit4) + IOWR( i2c_base, 4,0x90); + 2097c: e0bffc17 ldw r2,-16(fp) + 20980: 10800404 addi r2,r2,16 + 20984: 1007883a mov r3,r2 + 20988: 00802404 movi r2,144 + 2098c: 18800035 stwio r2,0(r3) + + //wait TIP bit go to 0 to end Tx + if (!ACK_check( i2c_base)){ + 20990: e13ffc17 ldw r4,-16(fp) + 20994: 00205e40 call 205e4 + 20998: 1000051e bne r2,zero,209b0 + printf("OC_I2C_Read error[8]\r\n"); + 2099c: 010000f4 movhi r4,3 + 209a0: 2106e304 addi r4,r4,7052 + 209a4: 00231400 call 23140 + return FALSE; + 209a8: 0005883a mov r2,zero + 209ac: 00002c06 br 20a60 + } + + for(i=0;i + // printf("\n read receive ACK-device address(read)! \n"); + //set the RD and ACK bit(bit5 and bit3) + IOWR( i2c_base, 4,((i+1) == nReadLength)?0x28:0x20); + 209b8: e0bffc17 ldw r2,-16(fp) + 209bc: 10800404 addi r2,r2,16 + 209c0: 1009883a mov r4,r2 + 209c4: e0bffa17 ldw r2,-24(fp) + 209c8: 10c00044 addi r3,r2,1 + 209cc: e0800217 ldw r2,8(fp) + 209d0: 1880021e bne r3,r2,209dc + 209d4: 00800a04 movi r2,40 + 209d8: 00000106 br 209e0 + 209dc: 00800804 movi r2,32 + 209e0: 20800035 stwio r2,0(r4) + + if (!ACK_judge_for_read( i2c_base)){ + 209e4: e13ffc17 ldw r4,-16(fp) + 209e8: 00208440 call 20844 + 209ec: 1000051e bne r2,zero,20a04 + printf("OC_I2C_Read error[10]\r\n"); + 209f0: 010000f4 movhi r4,3 + 209f4: 2106e904 addi r4,r4,7076 + 209f8: 00231400 call 23140 + return FALSE; + 209fc: 0005883a mov r2,zero + 20a00: 00001706 br 20a60 + } + // printf("\n read receive ACK-device address(read)! \n"); + + Data32=IORD( i2c_base, 3); + 20a04: e0bffc17 ldw r2,-16(fp) + 20a08: 10800304 addi r2,r2,12 + 20a0c: 10800037 ldwio r2,0(r2) + 20a10: e0bffb15 stw r2,-20(fp) + *(pData8+i) = Data32 & 0xff; + 20a14: e0bffa17 ldw r2,-24(fp) + 20a18: e0ffff17 ldw r3,-4(fp) + 20a1c: 1885883a add r2,r3,r2 + 20a20: e0fffb17 ldw r3,-20(fp) + 20a24: 10c00005 stb r3,0(r2) + if (!ACK_check( i2c_base)){ + printf("OC_I2C_Read error[8]\r\n"); + return FALSE; + } + + for(i=0;i + + Data32=IORD( i2c_base, 3); + *(pData8+i) = Data32 & 0xff; + } + + IOWR( i2c_base, 4,0x40); + 20a40: e0bffc17 ldw r2,-16(fp) + 20a44: 10800404 addi r2,r2,16 + 20a48: 1007883a mov r3,r2 + 20a4c: 00801004 movi r2,64 + 20a50: 18800035 stwio r2,0(r3) + + // Sleep(10); + //OS_msleep(1); + usleep(SLEEP_TIME); + 20a54: 01003e84 movi r4,250 + 20a58: 002f9cc0 call 2f9cc + // printf(" Read [%02X] = %02Xh\r\n", sub_address, data); + + + return TRUE; + 20a5c: 00800044 movi r2,1 + +} + 20a60: e037883a mov sp,fp + 20a64: dfc00117 ldw ra,4(sp) + 20a68: df000017 ldw fp,0(sp) + 20a6c: dec00204 addi sp,sp,8 + 20a70: f800283a ret + +00020a74 : + + +bool OC_I2C_Read_Continue(alt_32 i2c_base,alt_u8 device_address, alt_u8 *pData8, int nReadLength){ + 20a74: defff804 addi sp,sp,-32 + 20a78: dfc00715 stw ra,28(sp) + 20a7c: df000615 stw fp,24(sp) + 20a80: df000604 addi fp,sp,24 + 20a84: e13ffc15 stw r4,-16(fp) + 20a88: 2805883a mov r2,r5 + 20a8c: e1bffe15 stw r6,-8(fp) + 20a90: e1ffff15 stw r7,-4(fp) + 20a94: e0bffd05 stb r2,-12(fp) + int i; + alt_u32 Data32; + + IOWR(i2c_base, 3,device_address|0x01); + 20a98: e0bffc17 ldw r2,-16(fp) + 20a9c: 10800304 addi r2,r2,12 + 20aa0: 1007883a mov r3,r2 + 20aa4: e0bffd03 ldbu r2,-12(fp) + 20aa8: 10800054 ori r2,r2,1 + 20aac: 10803fcc andi r2,r2,255 + 20ab0: 18800035 stwio r2,0(r3) + + //set STA and WR bits(bit7 and bit4) + IOWR( i2c_base, 4,0x90); + 20ab4: e0bffc17 ldw r2,-16(fp) + 20ab8: 10800404 addi r2,r2,16 + 20abc: 1007883a mov r3,r2 + 20ac0: 00802404 movi r2,144 + 20ac4: 18800035 stwio r2,0(r3) +//usleep(5*1000); + //wait TIP bit go to 0 to end Tx + if (!ACK_check( i2c_base)){ + 20ac8: e13ffc17 ldw r4,-16(fp) + 20acc: 00205e40 call 205e4 + 20ad0: 1000051e bne r2,zero,20ae8 + printf("OC_I2C_Read error[8]\r\n"); + 20ad4: 010000f4 movhi r4,3 + 20ad8: 2106e304 addi r4,r4,7052 + 20adc: 00231400 call 23140 + return FALSE; + 20ae0: 0005883a mov r2,zero + 20ae4: 00002c06 br 20b98 + } + + for(i=0;i + // printf("\n read receive ACK-device address(read)! \n"); + //set the RD and ACK bit(bit5 and bit3) + IOWR( i2c_base, 4,((i+1) == nReadLength)?0x28:0x20); + 20af0: e0bffc17 ldw r2,-16(fp) + 20af4: 10800404 addi r2,r2,16 + 20af8: 1009883a mov r4,r2 + 20afc: e0bffa17 ldw r2,-24(fp) + 20b00: 10c00044 addi r3,r2,1 + 20b04: e0bfff17 ldw r2,-4(fp) + 20b08: 1880021e bne r3,r2,20b14 + 20b0c: 00800a04 movi r2,40 + 20b10: 00000106 br 20b18 + 20b14: 00800804 movi r2,32 + 20b18: 20800035 stwio r2,0(r4) + + if (!ACK_judge_for_read( i2c_base)){ + 20b1c: e13ffc17 ldw r4,-16(fp) + 20b20: 00208440 call 20844 + 20b24: 1000051e bne r2,zero,20b3c + printf("OC_I2C_Read error[10]\r\n"); + 20b28: 010000f4 movhi r4,3 + 20b2c: 2106e904 addi r4,r4,7076 + 20b30: 00231400 call 23140 + return FALSE; + 20b34: 0005883a mov r2,zero + 20b38: 00001706 br 20b98 + } + // printf("\n read receive ACK-device address(read)! \n"); + + Data32=IORD( i2c_base, 3); + 20b3c: e0bffc17 ldw r2,-16(fp) + 20b40: 10800304 addi r2,r2,12 + 20b44: 10800037 ldwio r2,0(r2) + 20b48: e0bffb15 stw r2,-20(fp) + *(pData8+i) = Data32 & 0xff; + 20b4c: e0bffa17 ldw r2,-24(fp) + 20b50: e0fffe17 ldw r3,-8(fp) + 20b54: 1885883a add r2,r3,r2 + 20b58: e0fffb17 ldw r3,-20(fp) + 20b5c: 10c00005 stb r3,0(r2) + if (!ACK_check( i2c_base)){ + printf("OC_I2C_Read error[8]\r\n"); + return FALSE; + } + + for(i=0;i + + Data32=IORD( i2c_base, 3); + *(pData8+i) = Data32 & 0xff; + } + + IOWR( i2c_base, 4,0x40); + 20b78: e0bffc17 ldw r2,-16(fp) + 20b7c: 10800404 addi r2,r2,16 + 20b80: 1007883a mov r3,r2 + 20b84: 00801004 movi r2,64 + 20b88: 18800035 stwio r2,0(r3) + + // Sleep(10); + //OS_msleep(1); + usleep(SLEEP_TIME); + 20b8c: 01003e84 movi r4,250 + 20b90: 002f9cc0 call 2f9cc + // printf(" Read [%02X] = %02Xh\r\n", sub_address, data); + + + return TRUE; + 20b94: 00800044 movi r2,1 + +} + 20b98: e037883a mov sp,fp + 20b9c: dfc00117 ldw ra,4(sp) + 20ba0: df000017 ldw fp,0(sp) + 20ba4: dec00204 addi sp,sp,8 + 20ba8: f800283a ret + +00020bac : + + +// size > 2Kb +bool OC_I2CL_Write(alt_32 i2c_base,alt_u8 device_address,alt_u16 sub_address,alt_u8 *pData, int nWriteLength) + { + 20bac: defff804 addi sp,sp,-32 + 20bb0: dfc00715 stw ra,28(sp) + 20bb4: df000615 stw fp,24(sp) + 20bb8: df000604 addi fp,sp,24 + 20bbc: e13ffc15 stw r4,-16(fp) + 20bc0: 2807883a mov r3,r5 + 20bc4: 3005883a mov r2,r6 + 20bc8: e1ffff15 stw r7,-4(fp) + 20bcc: e0fffd05 stb r3,-12(fp) + 20bd0: e0bffe0d sth r2,-8(fp) + //DWORD reg_data = 0x0; + alt_u8 AddrHigh, AddrLow; + //int count= 0; + + AddrHigh = (sub_address >> 8) & 0xFF; + 20bd4: e0bffe0b ldhu r2,-8(fp) + 20bd8: 1004d23a srli r2,r2,8 + 20bdc: e0bffb05 stb r2,-20(fp) + AddrLow = sub_address & 0xFF; + 20be0: e0bffe0b ldhu r2,-8(fp) + 20be4: e0bffb45 stb r2,-19(fp) + + int i; + + //set the tx reg audio chip dev address with write bit + if (!Write32_Data( i2c_base, 3,device_address)) + 20be8: e0bffd03 ldbu r2,-12(fp) + 20bec: 100d883a mov r6,r2 + 20bf0: 014000c4 movi r5,3 + 20bf4: e13ffc17 ldw r4,-16(fp) + 20bf8: 00202900 call 20290 + 20bfc: 1000021e bne r2,zero,20c08 + return FALSE; + 20c00: 0005883a mov r2,zero + 20c04: 00006806 br 20da8 + //set STA and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x90))//0x90 + 20c08: 01802404 movi r6,144 + 20c0c: 01400104 movi r5,4 + 20c10: e13ffc17 ldw r4,-16(fp) + 20c14: 00202900 call 20290 + 20c18: 1000021e bne r2,zero,20c24 + return FALSE; + 20c1c: 0005883a mov r2,zero + 20c20: 00006106 br 20da8 + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 20c24: e13ffc17 ldw r4,-16(fp) + 20c28: 00205e40 call 205e4 + 20c2c: 1000051e bne r2,zero,20c44 + printf("OC_I2CL_Write error[0]\r\n"); + 20c30: 010000f4 movhi r4,3 + 20c34: 2106ef04 addi r4,r4,7100 + 20c38: 00231400 call 23140 + return FALSE; + 20c3c: 0005883a mov r2,zero + 20c40: 00005906 br 20da8 + // printf("\n receive ACK-device address! \n"); + + //set the txr reg data with reg address + 1 data MSB + // reg_data = (sub_address << 1) & 0xFE; + //reg_data |= ((data >> 8) & 0x01); + if (!Write32_Data( i2c_base, 3,AddrHigh))//reg_data&0xff); + 20c44: e0bffb03 ldbu r2,-20(fp) + 20c48: 100d883a mov r6,r2 + 20c4c: 014000c4 movi r5,3 + 20c50: e13ffc17 ldw r4,-16(fp) + 20c54: 00202900 call 20290 + 20c58: 1000021e bne r2,zero,20c64 + return FALSE; + 20c5c: 0005883a mov r2,zero + 20c60: 00005106 br 20da8 + + //set WR bits(bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + 20c64: 01800404 movi r6,16 + 20c68: 01400104 movi r5,4 + 20c6c: e13ffc17 ldw r4,-16(fp) + 20c70: 00202900 call 20290 + 20c74: 1000021e bne r2,zero,20c80 + return FALSE; + 20c78: 0005883a mov r2,zero + 20c7c: 00004a06 br 20da8 + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 20c80: e13ffc17 ldw r4,-16(fp) + 20c84: 00205e40 call 205e4 + 20c88: 1000051e bne r2,zero,20ca0 + printf("OC_I2CL_Write error[1]\r\n"); + 20c8c: 010000f4 movhi r4,3 + 20c90: 2106f504 addi r4,r4,7124 + 20c94: 00231400 call 23140 + return FALSE; + 20c98: 0005883a mov r2,zero + 20c9c: 00004206 br 20da8 + } + // printf("\n receive ACK-reg high address! \n"); + + //set the txr reg data with reg address + 1 data MSB + if (!Write32_Data( i2c_base, 3,AddrLow))//reg_data&0xff); + 20ca0: e0bffb43 ldbu r2,-19(fp) + 20ca4: 100d883a mov r6,r2 + 20ca8: 014000c4 movi r5,3 + 20cac: e13ffc17 ldw r4,-16(fp) + 20cb0: 00202900 call 20290 + 20cb4: 1000021e bne r2,zero,20cc0 + return FALSE; + 20cb8: 0005883a mov r2,zero + 20cbc: 00003a06 br 20da8 + + //set WR bits(bit4) + Write32_Data( i2c_base, 4,0x10); + 20cc0: 01800404 movi r6,16 + 20cc4: 01400104 movi r5,4 + 20cc8: e13ffc17 ldw r4,-16(fp) + 20ccc: 00202900 call 20290 + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 20cd0: e13ffc17 ldw r4,-16(fp) + 20cd4: 00205e40 call 205e4 + 20cd8: 1000051e bne r2,zero,20cf0 + printf("OC_I2CL_Write error[2]\r\n"); + 20cdc: 010000f4 movhi r4,3 + 20ce0: 2106fb04 addi r4,r4,7148 + 20ce4: 00231400 call 23140 + return FALSE; + 20ce8: 0005883a mov r2,zero + 20cec: 00002e06 br 20da8 + } + // printf("\n receive ACK-reg low address! \n"); + +#if 1 + for( i=nWriteLength-1;i>=0;i--){ + 20cf0: e0800217 ldw r2,8(fp) + 20cf4: 10bfffc4 addi r2,r2,-1 + 20cf8: e0bffa15 stw r2,-24(fp) + 20cfc: 00001e06 br 20d78 + //set the txr reg data with the other data 8 bit LSB + if (!Write32_Data( i2c_base, 3,*(pData+i))) + 20d00: e0bffa17 ldw r2,-24(fp) + 20d04: e0ffff17 ldw r3,-4(fp) + 20d08: 1885883a add r2,r3,r2 + 20d0c: 10800003 ldbu r2,0(r2) + 20d10: 10803fcc andi r2,r2,255 + 20d14: 100d883a mov r6,r2 + 20d18: 014000c4 movi r5,3 + 20d1c: e13ffc17 ldw r4,-16(fp) + 20d20: 00202900 call 20290 + 20d24: 1000021e bne r2,zero,20d30 + return FALSE; + 20d28: 0005883a mov r2,zero + 20d2c: 00001e06 br 20da8 + + //set STO and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + 20d30: 01800404 movi r6,16 + 20d34: 01400104 movi r5,4 + 20d38: e13ffc17 ldw r4,-16(fp) + 20d3c: 00202900 call 20290 + 20d40: 1000021e bne r2,zero,20d4c + return FALSE; + 20d44: 0005883a mov r2,zero + 20d48: 00001706 br 20da8 + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 20d4c: e13ffc17 ldw r4,-16(fp) + 20d50: 00205e40 call 205e4 + 20d54: 1000051e bne r2,zero,20d6c + printf("OC_I2CL_Write error[3]\r\n"); + 20d58: 010000f4 movhi r4,3 + 20d5c: 21070104 addi r4,r4,7172 + 20d60: 00231400 call 23140 + return FALSE; + 20d64: 0005883a mov r2,zero + 20d68: 00000f06 br 20da8 + return FALSE; + } + // printf("\n receive ACK-reg low address! \n"); + +#if 1 + for( i=nWriteLength-1;i>=0;i--){ + 20d6c: e0bffa17 ldw r2,-24(fp) + 20d70: 10bfffc4 addi r2,r2,-1 + 20d74: e0bffa15 stw r2,-24(fp) + 20d78: e0bffa17 ldw r2,-24(fp) + 20d7c: 103fe00e bge r2,zero,20d00 <_gp+0xfffe47c8> + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)) + return FALSE; + +#endif + if (!Write32_Data( i2c_base, 4,0x40)) + 20d80: 01801004 movi r6,64 + 20d84: 01400104 movi r5,4 + 20d88: e13ffc17 ldw r4,-16(fp) + 20d8c: 00202900 call 20290 + 20d90: 1000021e bne r2,zero,20d9c + return FALSE; + 20d94: 0005883a mov r2,zero + 20d98: 00000306 br 20da8 + + //OS_msleep(1); + usleep(SLEEP_TIME); + 20d9c: 01003e84 movi r4,250 + 20da0: 002f9cc0 call 2f9cc + // printf("\n receive ACK-data! \n"); + + return TRUE; + 20da4: 00800044 movi r2,1 +} + 20da8: e037883a mov sp,fp + 20dac: dfc00117 ldw ra,4(sp) + 20db0: df000017 ldw fp,0(sp) + 20db4: dec00204 addi sp,sp,8 + 20db8: f800283a ret + +00020dbc : + + return TRUE; + +} */ + +bool OC_I2CL_Read(alt_32 i2c_base,alt_u8 device_address, alt_u16 sub_address, alt_u8 *pData8, int nReadLength){ + 20dbc: defff704 addi sp,sp,-36 + 20dc0: dfc00815 stw ra,32(sp) + 20dc4: df000715 stw fp,28(sp) + 20dc8: df000704 addi fp,sp,28 + 20dcc: e13ffc15 stw r4,-16(fp) + 20dd0: 2807883a mov r3,r5 + 20dd4: 3005883a mov r2,r6 + 20dd8: e1ffff15 stw r7,-4(fp) + 20ddc: e0fffd05 stb r3,-12(fp) + 20de0: e0bffe0d sth r2,-8(fp) + int i; + + alt_u8 AddrHigh, AddrLow; + alt_u8 DataHigh, DataLow; + + AddrHigh = (sub_address >> 8) & 0xFF; + 20de4: e0bffe0b ldhu r2,-8(fp) + 20de8: 1004d23a srli r2,r2,8 + 20dec: e0bffa05 stb r2,-24(fp) + AddrLow = sub_address & 0xFF; + 20df0: e0bffe0b ldhu r2,-8(fp) + 20df4: e0bffa45 stb r2,-23(fp) + + + //set the tx reg audio chip dev address with write bit + if (!Write32_Data( i2c_base, 3,device_address)) + 20df8: e0bffd03 ldbu r2,-12(fp) + 20dfc: 100d883a mov r6,r2 + 20e00: 014000c4 movi r5,3 + 20e04: e13ffc17 ldw r4,-16(fp) + 20e08: 00202900 call 20290 + 20e0c: 1000021e bne r2,zero,20e18 + return FALSE; + 20e10: 0005883a mov r2,zero + 20e14: 00008406 br 21028 + + //set STA and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x90)) + 20e18: 01802404 movi r6,144 + 20e1c: 01400104 movi r5,4 + 20e20: e13ffc17 ldw r4,-16(fp) + 20e24: 00202900 call 20290 + 20e28: 1000021e bne r2,zero,20e34 + return FALSE; + 20e2c: 0005883a mov r2,zero + 20e30: 00007d06 br 21028 + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 20e34: e13ffc17 ldw r4,-16(fp) + 20e38: 00205e40 call 205e4 + 20e3c: 1000051e bne r2,zero,20e54 + printf("OC_I2CL_Read error[0]\r\n"); + 20e40: 010000f4 movhi r4,3 + 20e44: 21070704 addi r4,r4,7196 + 20e48: 00231400 call 23140 + return FALSE; + 20e4c: 0005883a mov r2,zero + 20e50: 00007506 br 21028 + // printf("\n receive ACK-device address! \n"); + + + //set the txr reg data with reg address + 0 + + if (!Write32_Data( i2c_base, 3,AddrHigh))//reg_data&0xff); + 20e54: e0bffa03 ldbu r2,-24(fp) + 20e58: 100d883a mov r6,r2 + 20e5c: 014000c4 movi r5,3 + 20e60: e13ffc17 ldw r4,-16(fp) + 20e64: 00202900 call 20290 + 20e68: 1000021e bne r2,zero,20e74 + return FALSE; + 20e6c: 0005883a mov r2,zero + 20e70: 00006d06 br 21028 + + //set WR bits(bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + 20e74: 01800404 movi r6,16 + 20e78: 01400104 movi r5,4 + 20e7c: e13ffc17 ldw r4,-16(fp) + 20e80: 00202900 call 20290 + 20e84: 1000021e bne r2,zero,20e90 + return FALSE; + 20e88: 0005883a mov r2,zero + 20e8c: 00006606 br 21028 + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 20e90: e13ffc17 ldw r4,-16(fp) + 20e94: 00205e40 call 205e4 + 20e98: 1000051e bne r2,zero,20eb0 + printf("OC_I2CL_Read error[1]\r\n"); + 20e9c: 010000f4 movhi r4,3 + 20ea0: 21070d04 addi r4,r4,7220 + 20ea4: 00231400 call 23140 + return FALSE; + 20ea8: 0005883a mov r2,zero + 20eac: 00005e06 br 21028 + } +// printf("\n read receive ACK-reg High address! \n"); + + //set the txr reg data with reg address + 0 + if (!Write32_Data( i2c_base, 3,AddrLow)) //;//reg_data&0xff); + 20eb0: e0bffa43 ldbu r2,-23(fp) + 20eb4: 100d883a mov r6,r2 + 20eb8: 014000c4 movi r5,3 + 20ebc: e13ffc17 ldw r4,-16(fp) + 20ec0: 00202900 call 20290 + 20ec4: 1000021e bne r2,zero,20ed0 + return FALSE; + 20ec8: 0005883a mov r2,zero + 20ecc: 00005606 br 21028 + //set WR bits(bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + 20ed0: 01800404 movi r6,16 + 20ed4: 01400104 movi r5,4 + 20ed8: e13ffc17 ldw r4,-16(fp) + 20edc: 00202900 call 20290 + 20ee0: 1000021e bne r2,zero,20eec + return FALSE; + 20ee4: 0005883a mov r2,zero + 20ee8: 00004f06 br 21028 + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 20eec: e13ffc17 ldw r4,-16(fp) + 20ef0: 00205e40 call 205e4 + 20ef4: 1000051e bne r2,zero,20f0c + printf("OC_I2CL_Read error[2]\r\n"); + 20ef8: 010000f4 movhi r4,3 + 20efc: 21071304 addi r4,r4,7244 + 20f00: 00231400 call 23140 + return FALSE; + 20f04: 0005883a mov r2,zero + 20f08: 00004706 br 21028 + + // printf("\n read receive ACK-reg Low address! \n"); + + //read + //set the tx reg audio chip dev address with read bit 1 + if (!Write32_Data( i2c_base, 3,device_address|0x01)) + 20f0c: e0bffd03 ldbu r2,-12(fp) + 20f10: 10800054 ori r2,r2,1 + 20f14: 10803fcc andi r2,r2,255 + 20f18: 100d883a mov r6,r2 + 20f1c: 014000c4 movi r5,3 + 20f20: e13ffc17 ldw r4,-16(fp) + 20f24: 00202900 call 20290 + 20f28: 1000021e bne r2,zero,20f34 + return FALSE; + 20f2c: 0005883a mov r2,zero + 20f30: 00003d06 br 21028 + + //set STA and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x90)) + 20f34: 01802404 movi r6,144 + 20f38: 01400104 movi r5,4 + 20f3c: e13ffc17 ldw r4,-16(fp) + 20f40: 00202900 call 20290 + 20f44: 1000021e bne r2,zero,20f50 + return FALSE; + 20f48: 0005883a mov r2,zero + 20f4c: 00003606 br 21028 + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + 20f50: e13ffc17 ldw r4,-16(fp) + 20f54: 00205e40 call 205e4 + 20f58: 1000051e bne r2,zero,20f70 + printf("OC_I2CL_Read error[3]\r\n"); + 20f5c: 010000f4 movhi r4,3 + 20f60: 21071904 addi r4,r4,7268 + 20f64: 00231400 call 23140 + return FALSE; + 20f68: 0005883a mov r2,zero + 20f6c: 00002e06 br 21028 +// printf("\n read receive ACK-device address(read)! \n"); + + //read the rxr data + +#if 1 + for(i=0;i + // printf("\n read receive ACK-device address(read)! \n"); + //set the RD and ACK bit(bit5 and bit3) + IOWR( i2c_base, 4,((i+1) == nReadLength)?0x28:0x20); + 20f78: e0bffc17 ldw r2,-16(fp) + 20f7c: 10800404 addi r2,r2,16 + 20f80: 1009883a mov r4,r2 + 20f84: e0bff917 ldw r2,-28(fp) + 20f88: 10c00044 addi r3,r2,1 + 20f8c: e0800217 ldw r2,8(fp) + 20f90: 1880021e bne r3,r2,20f9c + 20f94: 00800a04 movi r2,40 + 20f98: 00000106 br 20fa0 + 20f9c: 00800804 movi r2,32 + 20fa0: 20800035 stwio r2,0(r4) + + if (!ACK_judge_for_read( i2c_base)){ + 20fa4: e13ffc17 ldw r4,-16(fp) + 20fa8: 00208440 call 20844 + 20fac: 1000051e bne r2,zero,20fc4 + printf("OC_I2CL_Read error[4]\r\n"); + 20fb0: 010000f4 movhi r4,3 + 20fb4: 21071f04 addi r4,r4,7292 + 20fb8: 00231400 call 23140 + return FALSE; + 20fbc: 0005883a mov r2,zero + 20fc0: 00001906 br 21028 + } + // printf("\n read receive ACK-device address(read)! \n"); + + Data32=IORD( i2c_base, 3); + 20fc4: e0bffc17 ldw r2,-16(fp) + 20fc8: 10800304 addi r2,r2,12 + 20fcc: 10800037 ldwio r2,0(r2) + 20fd0: e0bffb15 stw r2,-20(fp) + *(pData8+i) = Data32 & 0xff; + 20fd4: e0bff917 ldw r2,-28(fp) + 20fd8: e0ffff17 ldw r3,-4(fp) + 20fdc: 1885883a add r2,r3,r2 + 20fe0: e0fffb17 ldw r3,-20(fp) + 20fe4: 10c00005 stb r3,0(r2) +// printf("\n read receive ACK-device address(read)! \n"); + + //read the rxr data + +#if 1 + for(i=0;i + DataLow = Data32 & 0xff; + + pData16 = (DataHigh << 8) | DataLow; +#endif + + if (!Write32_Data( i2c_base, 4,0x40)) + 21000: 01801004 movi r6,64 + 21004: 01400104 movi r5,4 + 21008: e13ffc17 ldw r4,-16(fp) + 2100c: 00202900 call 20290 + 21010: 1000021e bne r2,zero,2101c + return FALSE; + 21014: 0005883a mov r2,zero + 21018: 00000306 br 21028 + + //OS_msleep(1); + usleep(SLEEP_TIME); + 2101c: 01003e84 movi r4,250 + 21020: 002f9cc0 call 2f9cc + + return TRUE; + 21024: 00800044 movi r2,1 + +} + 21028: e037883a mov sp,fp + 2102c: dfc00117 ldw ra,4(sp) + 21030: df000017 ldw fp,0(sp) + 21034: dec00204 addi sp,sp,8 + 21038: f800283a ret + +0002103c : +// please observe focus performance when change the scal ,scal_f. or when change camera frame rate +alt_u8 focus_scal = 4; // scan 0 -> 1023 , step: SCAL , to find STEP_UP +alt_u8 focus_scal_f = 1; // scan STEP_UP + - SCAL/2 , step: SCAL_F +alt_u8 focus_th = 20; + +void Focus_Init(void){ + 2103c: defffe04 addi sp,sp,-8 + 21040: dfc00115 stw ra,4(sp) + 21044: df000015 stw fp,0(sp) + 21048: d839883a mov fp,sp + // please look at TERASIC_AUTO_FOCUS IP to see register's detail. + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_CTRL, 0);// focus mode : 1: window-screen, 0: full-screen + 2104c: 0007883a mov r3,zero + 21050: 00800134 movhi r2,4 + 21054: 10840904 addi r2,r2,4132 + 21058: 10c00035 stwio r3,0(r2) + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_FOCUS_W, focus_width);// focus_width + 2105c: d0a0010b ldhu r2,-32764(gp) + 21060: 10ffffcc andi r3,r2,65535 + 21064: 00800134 movhi r2,4 + 21068: 10840a04 addi r2,r2,4136 + 2106c: 10c00035 stwio r3,0(r2) + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_FOCUS_H, focus_height);// focus_height + 21070: d0a0018b ldhu r2,-32762(gp) + 21074: 10ffffcc andi r3,r2,65535 + 21078: 00800134 movhi r2,4 + 2107c: 10840b04 addi r2,r2,4140 + 21080: 10c00035 stwio r3,0(r2) + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_FOCUS_X_START, video_w/2-focus_width/2);//x_start + 21084: d0a0000b ldhu r2,-32768(gp) + 21088: 10bfffcc andi r2,r2,65535 + 2108c: 1004d07a srli r2,r2,1 + 21090: 10ffffcc andi r3,r2,65535 + 21094: d0a0010b ldhu r2,-32764(gp) + 21098: 10bfffcc andi r2,r2,65535 + 2109c: 1004d07a srli r2,r2,1 + 210a0: 10bfffcc andi r2,r2,65535 + 210a4: 1887c83a sub r3,r3,r2 + 210a8: 00800134 movhi r2,4 + 210ac: 10840c04 addi r2,r2,4144 + 210b0: 10c00035 stwio r3,0(r2) + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_FOCUS_Y_START, video_h/2-focus_height/2);// y_start + 210b4: d0a0008b ldhu r2,-32766(gp) + 210b8: 10bfffcc andi r2,r2,65535 + 210bc: 1004d07a srli r2,r2,1 + 210c0: 10ffffcc andi r3,r2,65535 + 210c4: d0a0018b ldhu r2,-32762(gp) + 210c8: 10bfffcc andi r2,r2,65535 + 210cc: 1004d07a srli r2,r2,1 + 210d0: 10bfffcc andi r2,r2,65535 + 210d4: 1887c83a sub r3,r3,r2 + 210d8: 00800134 movhi r2,4 + 210dc: 10840d04 addi r2,r2,4148 + 210e0: 10c00035 stwio r3,0(r2) + + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_SCAL, focus_scal*256 + focus_scal_f); // scan 0 -> 1023 , step: SCAL , to find STEP_UP + 210e4: d0a00203 ldbu r2,-32760(gp) + 210e8: 10803fcc andi r2,r2,255 + 210ec: 1006923a slli r3,r2,8 + 210f0: d0a00243 ldbu r2,-32759(gp) + 210f4: 10803fcc andi r2,r2,255 + 210f8: 1887883a add r3,r3,r2 + 210fc: 00800134 movhi r2,4 + 21100: 10840e04 addi r2,r2,4152 + 21104: 10c00035 stwio r3,0(r2) + // scan STEP_UP + - SCAL/2 , step: SCAL_F + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_TH, focus_th); + 21108: d0a00283 ldbu r2,-32758(gp) + 2110c: 10c03fcc andi r3,r2,255 + 21110: 00800134 movhi r2,4 + 21114: 10840f04 addi r2,r2,4156 + 21118: 10c00035 stwio r3,0(r2) + + //////////// focus at initial time + usleep(100); + 2111c: 01001904 movi r4,100 + 21120: 002f9cc0 call 2f9cc + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_GO, 1); + 21124: 00c00044 movi r3,1 + 21128: 00800134 movhi r2,4 + 2112c: 10840804 addi r2,r2,4128 + 21130: 10c00035 stwio r3,0(r2) + usleep(2); + 21134: 01000084 movi r4,2 + 21138: 002f9cc0 call 2f9cc + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_GO, 0); + 2113c: 0007883a mov r3,zero + 21140: 00800134 movhi r2,4 + 21144: 10840804 addi r2,r2,4128 + 21148: 10c00035 stwio r3,0(r2) +} + 2114c: 0001883a nop + 21150: e037883a mov sp,fp + 21154: dfc00117 ldw ra,4(sp) + 21158: df000017 ldw fp,0(sp) + 2115c: dec00204 addi sp,sp,8 + 21160: f800283a ret + +00021164 : + +alt_u16 Focus_Window(int x,int y){ + 21164: defffa04 addi sp,sp,-24 + 21168: dfc00515 stw ra,20(sp) + 2116c: df000415 stw fp,16(sp) + 21170: df000404 addi fp,sp,16 + 21174: e13ffe15 stw r4,-8(fp) + 21178: e17fff15 stw r5,-4(fp) + alt_u16 x_start,y_start; + alt_u16 end_focus; + + if(Focus_Released()) { // pre focus done + 2117c: 00213440 call 21344 + 21180: 10006a26 beq r2,zero,2132c + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_CTRL, 1);// focus mode : 1: window-screen, 0: full-screen + 21184: 00c00044 movi r3,1 + 21188: 00800134 movhi r2,4 + 2118c: 10840904 addi r2,r2,4132 + 21190: 10c00035 stwio r3,0(r2) + + if(( x - focus_width/2) < 0 ) x_start = 0; + 21194: d0a0010b ldhu r2,-32764(gp) + 21198: 10bfffcc andi r2,r2,65535 + 2119c: 1004d07a srli r2,r2,1 + 211a0: 10bfffcc andi r2,r2,65535 + 211a4: e0fffe17 ldw r3,-8(fp) + 211a8: 1885c83a sub r2,r3,r2 + 211ac: 1000020e bge r2,zero,211b8 + 211b0: e03ffc0d sth zero,-16(fp) + 211b4: 00001606 br 21210 + else if(( x + focus_width/2 ) > video_w ) x_start = video_w -1 -focus_width; + 211b8: d0a0010b ldhu r2,-32764(gp) + 211bc: 10bfffcc andi r2,r2,65535 + 211c0: 1004d07a srli r2,r2,1 + 211c4: 10ffffcc andi r3,r2,65535 + 211c8: e0bffe17 ldw r2,-8(fp) + 211cc: 1885883a add r2,r3,r2 + 211d0: d0e0000b ldhu r3,-32768(gp) + 211d4: 18ffffcc andi r3,r3,65535 + 211d8: 1880060e bge r3,r2,211f4 + 211dc: d0e0000b ldhu r3,-32768(gp) + 211e0: d0a0010b ldhu r2,-32764(gp) + 211e4: 1885c83a sub r2,r3,r2 + 211e8: 10bfffc4 addi r2,r2,-1 + 211ec: e0bffc0d sth r2,-16(fp) + 211f0: 00000706 br 21210 + else x_start = x - focus_width/2; + 211f4: e0bffe17 ldw r2,-8(fp) + 211f8: 1007883a mov r3,r2 + 211fc: d0a0010b ldhu r2,-32764(gp) + 21200: 10bfffcc andi r2,r2,65535 + 21204: 1004d07a srli r2,r2,1 + 21208: 1885c83a sub r2,r3,r2 + 2120c: e0bffc0d sth r2,-16(fp) + + if(( y - focus_height/2) < 0 ) y_start = 0; + 21210: d0a0018b ldhu r2,-32762(gp) + 21214: 10bfffcc andi r2,r2,65535 + 21218: 1004d07a srli r2,r2,1 + 2121c: 10bfffcc andi r2,r2,65535 + 21220: e0ffff17 ldw r3,-4(fp) + 21224: 1885c83a sub r2,r3,r2 + 21228: 1000020e bge r2,zero,21234 + 2122c: e03ffc8d sth zero,-14(fp) + 21230: 00001606 br 2128c + else if(( y + focus_height/2 ) > video_h ) y_start = video_h -1 -focus_height; + 21234: d0a0018b ldhu r2,-32762(gp) + 21238: 10bfffcc andi r2,r2,65535 + 2123c: 1004d07a srli r2,r2,1 + 21240: 10ffffcc andi r3,r2,65535 + 21244: e0bfff17 ldw r2,-4(fp) + 21248: 1885883a add r2,r3,r2 + 2124c: d0e0008b ldhu r3,-32766(gp) + 21250: 18ffffcc andi r3,r3,65535 + 21254: 1880060e bge r3,r2,21270 + 21258: d0e0008b ldhu r3,-32766(gp) + 2125c: d0a0018b ldhu r2,-32762(gp) + 21260: 1885c83a sub r2,r3,r2 + 21264: 10bfffc4 addi r2,r2,-1 + 21268: e0bffc8d sth r2,-14(fp) + 2126c: 00000706 br 2128c + else y_start = y - focus_height/2; + 21270: e0bfff17 ldw r2,-4(fp) + 21274: 1007883a mov r3,r2 + 21278: d0a0018b ldhu r2,-32762(gp) + 2127c: 10bfffcc andi r2,r2,65535 + 21280: 1004d07a srli r2,r2,1 + 21284: 1885c83a sub r2,r3,r2 + 21288: e0bffc8d sth r2,-14(fp) + + printf("x_start= %d,y_start= %d\n",x_start,y_start); + 2128c: e0bffc0b ldhu r2,-16(fp) + 21290: e0fffc8b ldhu r3,-14(fp) + 21294: 180d883a mov r6,r3 + 21298: 100b883a mov r5,r2 + 2129c: 010000f4 movhi r4,3 + 212a0: 21072504 addi r4,r4,7316 + 212a4: 00230240 call 23024 + + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_FOCUS_X_START, x_start);//x_start + 212a8: e0fffc0b ldhu r3,-16(fp) + 212ac: 00800134 movhi r2,4 + 212b0: 10840c04 addi r2,r2,4144 + 212b4: 10c00035 stwio r3,0(r2) + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_FOCUS_Y_START, y_start);//y_start + 212b8: e0fffc8b ldhu r3,-14(fp) + 212bc: 00800134 movhi r2,4 + 212c0: 10840d04 addi r2,r2,4148 + 212c4: 10c00035 stwio r3,0(r2) + + usleep(10); + 212c8: 01000284 movi r4,10 + 212cc: 002f9cc0 call 2f9cc + + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_GO, 1); + 212d0: 00c00044 movi r3,1 + 212d4: 00800134 movhi r2,4 + 212d8: 10840804 addi r2,r2,4128 + 212dc: 10c00035 stwio r3,0(r2) + usleep(2); + 212e0: 01000084 movi r4,2 + 212e4: 002f9cc0 call 2f9cc + IOWR(TERASIC_AUTO_FOCUS_0_BASE,REG_GO, 0); + 212e8: 0007883a mov r3,zero + 212ec: 00800134 movhi r2,4 + 212f0: 10840804 addi r2,r2,4128 + 212f4: 10c00035 stwio r3,0(r2) + Focus_Released(); + 212f8: 00213440 call 21344 + + end_focus = IORD(TERASIC_AUTO_FOCUS_0_BASE,REG_STATUS)&0x0FFF; + 212fc: 00800134 movhi r2,4 + 21300: 10840804 addi r2,r2,4128 + 21304: 10800037 ldwio r2,0(r2) + 21308: 1083ffcc andi r2,r2,4095 + 2130c: e0bffd0d sth r2,-12(fp) + printf("end_focus = %d \n",end_focus); + 21310: e0bffd0b ldhu r2,-12(fp) + 21314: 100b883a mov r5,r2 + 21318: 010000f4 movhi r4,3 + 2131c: 21072c04 addi r4,r4,7344 + 21320: 00230240 call 23024 + + return end_focus; + 21324: e0bffd0b ldhu r2,-12(fp) + 21328: 00000106 br 21330 + + } + return end_focus; + 2132c: e0bffd0b ldhu r2,-12(fp) + +} + 21330: e037883a mov sp,fp + 21334: dfc00117 ldw ra,4(sp) + 21338: df000017 ldw fp,0(sp) + 2133c: dec00204 addi sp,sp,8 + 21340: f800283a ret + +00021344 : + +int Focus_Released(void){ + 21344: defffc04 addi sp,sp,-16 + 21348: dfc00315 stw ra,12(sp) + 2134c: df000215 stw fp,8(sp) + 21350: df000204 addi fp,sp,8 + int Released = FALSE; + 21354: e03ffe15 stw zero,-8(fp) + * alt_nticks() returns the elapsed number of system clock ticks since reset. + */ + +static ALT_INLINE alt_u32 ALT_ALWAYS_INLINE alt_nticks (void) +{ + return _alt_nticks; + 21358: 008000f4 movhi r2,3 + 2135c: 109a1404 addi r2,r2,26704 + 21360: 10c00017 ldw r3,0(r2) + * Obtain the system clock rate in ticks/s. + */ + +static ALT_INLINE alt_u32 ALT_ALWAYS_INLINE alt_ticks_per_second (void) +{ + return _alt_tick_rate; + 21364: 008000f4 movhi r2,3 + 21368: 109a1304 addi r2,r2,26700 + 2136c: 10800017 ldw r2,0(r2) + alt_u32 TimeOut; + + TimeOut = alt_nticks() + alt_ticks_per_second()*8; + 21370: 100490fa slli r2,r2,3 + 21374: 1885883a add r2,r3,r2 + 21378: e0bfff15 stw r2,-4(fp) + + while((IORD(TERASIC_AUTO_FOCUS_0_BASE,REG_STATUS)&0x8000) ==0 && alt_nticks() < TimeOut ); // waiting for VCM release I2C bus + 2137c: 0001883a nop + 21380: 00800134 movhi r2,4 + 21384: 10840804 addi r2,r2,4128 + 21388: 10800037 ldwio r2,0(r2) + 2138c: 10a0000c andi r2,r2,32768 + 21390: 1000051e bne r2,zero,213a8 + * alt_nticks() returns the elapsed number of system clock ticks since reset. + */ + +static ALT_INLINE alt_u32 ALT_ALWAYS_INLINE alt_nticks (void) +{ + return _alt_nticks; + 21394: 008000f4 movhi r2,3 + 21398: 109a1404 addi r2,r2,26704 + 2139c: 10c00017 ldw r3,0(r2) + 213a0: e0bfff17 ldw r2,-4(fp) + 213a4: 18bff636 bltu r3,r2,21380 <_gp+0xfffe4e48> + 213a8: 008000f4 movhi r2,3 + 213ac: 109a1404 addi r2,r2,26704 + 213b0: 10c00017 ldw r3,0(r2) + + if(alt_nticks() < TimeOut ) Released = TRUE; + 213b4: e0bfff17 ldw r2,-4(fp) + 213b8: 1880032e bgeu r3,r2,213c8 + 213bc: 00800044 movi r2,1 + 213c0: e0bffe15 stw r2,-8(fp) + 213c4: 00000306 br 213d4 + else printf("\n =>¡¡Released check TimeOut!\n"); + 213c8: 010000f4 movhi r4,3 + 213cc: 21073104 addi r4,r4,7364 + 213d0: 00231400 call 23140 + + usleep(10000); + 213d4: 0109c404 movi r4,10000 + 213d8: 002f9cc0 call 2f9cc + + return Released; + 213dc: e0bffe17 ldw r2,-8(fp) +} + 213e0: e037883a mov sp,fp + 213e4: dfc00117 ldw ra,4(sp) + 213e8: df000017 ldw fp,0(sp) + 213ec: dec00204 addi sp,sp,8 + 213f0: f800283a ret + +000213f4 : +#define MIPI_REG_CSIErrEn 0x0066 +#define MIPI_REG_MDLSynErr 0x0068 +#define MIPI_REG_FrmErrCnt 0x0080 +#define MIPI_REG_MDLErrCnt 0x0090 + +void mipi_clear_error(void){ + 213f4: defffe04 addi sp,sp,-8 + 213f8: dfc00115 stw ra,4(sp) + 213fc: df000015 stw fp,0(sp) + 21400: d839883a mov fp,sp + MipiBridgeRegWrite(MIPI_REG_CSIStatus,0x01FF); // clear error + 21404: 01407fc4 movi r5,511 + 21408: 01001904 movi r4,100 + 2140c: 00219c80 call 219c8 + MipiBridgeRegWrite(MIPI_REG_MDLSynErr,0x0000); // clear error + 21410: 000b883a mov r5,zero + 21414: 01001a04 movi r4,104 + 21418: 00219c80 call 219c8 + MipiBridgeRegWrite(MIPI_REG_FrmErrCnt,0x0000); // clear error + 2141c: 000b883a mov r5,zero + 21420: 01002004 movi r4,128 + 21424: 00219c80 call 219c8 + MipiBridgeRegWrite(MIPI_REG_MDLErrCnt, 0x0000); // clear error + 21428: 000b883a mov r5,zero + 2142c: 01002404 movi r4,144 + 21430: 00219c80 call 219c8 + + MipiBridgeRegWrite(0x0082,0x00); + 21434: 000b883a mov r5,zero + 21438: 01002084 movi r4,130 + 2143c: 00219c80 call 219c8 + MipiBridgeRegWrite(0x0084,0x00); + 21440: 000b883a mov r5,zero + 21444: 01002104 movi r4,132 + 21448: 00219c80 call 219c8 + MipiBridgeRegWrite(0x0086,0x00); + 2144c: 000b883a mov r5,zero + 21450: 01002184 movi r4,134 + 21454: 00219c80 call 219c8 + MipiBridgeRegWrite(0x0088,0x00); + 21458: 000b883a mov r5,zero + 2145c: 01002204 movi r4,136 + 21460: 00219c80 call 219c8 + MipiBridgeRegWrite(0x008A,0x00); + 21464: 000b883a mov r5,zero + 21468: 01002284 movi r4,138 + 2146c: 00219c80 call 219c8 + MipiBridgeRegWrite(0x008C,0x00); + 21470: 000b883a mov r5,zero + 21474: 01002304 movi r4,140 + 21478: 00219c80 call 219c8 + MipiBridgeRegWrite(0x008E,0x00); + 2147c: 000b883a mov r5,zero + 21480: 01002384 movi r4,142 + 21484: 00219c80 call 219c8 + MipiBridgeRegWrite(0x0090,0x00); + 21488: 000b883a mov r5,zero + 2148c: 01002404 movi r4,144 + 21490: 00219c80 call 219c8 +} + 21494: 0001883a nop + 21498: e037883a mov sp,fp + 2149c: dfc00117 ldw ra,4(sp) + 214a0: df000017 ldw fp,0(sp) + 214a4: dec00204 addi sp,sp,8 + 214a8: f800283a ret + +000214ac : + +void mipi_show_error_info(void){ + 214ac: defff904 addi sp,sp,-28 + 214b0: dfc00615 stw ra,24(sp) + 214b4: df000515 stw fp,20(sp) + 214b8: df000504 addi fp,sp,20 + + alt_u16 PHY_status, SCI_status, MDLSynErr, FrmErrCnt, MDLErrCnt; + + PHY_status = MipiBridgeRegRead(MIPI_REG_PHYSta); + 214bc: 01001884 movi r4,98 + 214c0: 0021a340 call 21a34 + 214c4: e0bffd0d sth r2,-12(fp) + SCI_status = MipiBridgeRegRead(MIPI_REG_CSIStatus); + 214c8: 01001904 movi r4,100 + 214cc: 0021a340 call 21a34 + 214d0: e0bffd8d sth r2,-10(fp) + MDLSynErr = MipiBridgeRegRead(MIPI_REG_MDLSynErr); + 214d4: 01001a04 movi r4,104 + 214d8: 0021a340 call 21a34 + 214dc: e0bffe0d sth r2,-8(fp) + FrmErrCnt = MipiBridgeRegRead(MIPI_REG_FrmErrCnt); + 214e0: 01002004 movi r4,128 + 214e4: 0021a340 call 21a34 + 214e8: e0bffe8d sth r2,-6(fp) + MDLErrCnt = MipiBridgeRegRead(MIPI_REG_MDLErrCnt); + 214ec: 01002404 movi r4,144 + 214f0: 0021a340 call 21a34 + 214f4: e0bfff0d sth r2,-4(fp) + printf("PHY_status=%xh, CSI_status=%xh, MDLSynErr=%xh, FrmErrCnt=%xh, MDLErrCnt=%xh\r\n", PHY_status, SCI_status, MDLSynErr,FrmErrCnt, MDLErrCnt); + 214f8: e13ffd0b ldhu r4,-12(fp) + 214fc: e17ffd8b ldhu r5,-10(fp) + 21500: e1bffe0b ldhu r6,-8(fp) + 21504: e0bffe8b ldhu r2,-6(fp) + 21508: e0ffff0b ldhu r3,-4(fp) + 2150c: d8c00115 stw r3,4(sp) + 21510: d8800015 stw r2,0(sp) + 21514: 300f883a mov r7,r6 + 21518: 280d883a mov r6,r5 + 2151c: 200b883a mov r5,r4 + 21520: 010000f4 movhi r4,3 + 21524: 21073904 addi r4,r4,7396 + 21528: 00230240 call 23024 +} + 2152c: 0001883a nop + 21530: e037883a mov sp,fp + 21534: dfc00117 ldw ra,4(sp) + 21538: df000017 ldw fp,0(sp) + 2153c: dec00204 addi sp,sp,8 + 21540: f800283a ret + +00021544 : + +void mipi_show_error_info_more(void){ + 21544: defffe04 addi sp,sp,-8 + 21548: dfc00115 stw ra,4(sp) + 2154c: df000015 stw fp,0(sp) + 21550: d839883a mov fp,sp + printf("FrmErrCnt = %d\n",MipiBridgeRegRead(0x0080)); + 21554: 01002004 movi r4,128 + 21558: 0021a340 call 21a34 + 2155c: 10bfffcc andi r2,r2,65535 + 21560: 100b883a mov r5,r2 + 21564: 010000f4 movhi r4,3 + 21568: 21074d04 addi r4,r4,7476 + 2156c: 00230240 call 23024 + printf("CRCErrCnt = %d\n",MipiBridgeRegRead(0x0082)); + 21570: 01002084 movi r4,130 + 21574: 0021a340 call 21a34 + 21578: 10bfffcc andi r2,r2,65535 + 2157c: 100b883a mov r5,r2 + 21580: 010000f4 movhi r4,3 + 21584: 21075104 addi r4,r4,7492 + 21588: 00230240 call 23024 + printf("CorErrCnt = %d\n",MipiBridgeRegRead(0x0084)); + 2158c: 01002104 movi r4,132 + 21590: 0021a340 call 21a34 + 21594: 10bfffcc andi r2,r2,65535 + 21598: 100b883a mov r5,r2 + 2159c: 010000f4 movhi r4,3 + 215a0: 21075504 addi r4,r4,7508 + 215a4: 00230240 call 23024 + printf("HdrErrCnt = %d\n",MipiBridgeRegRead(0x0086)); + 215a8: 01002184 movi r4,134 + 215ac: 0021a340 call 21a34 + 215b0: 10bfffcc andi r2,r2,65535 + 215b4: 100b883a mov r5,r2 + 215b8: 010000f4 movhi r4,3 + 215bc: 21075904 addi r4,r4,7524 + 215c0: 00230240 call 23024 + printf("EIDErrCnt = %d\n",MipiBridgeRegRead(0x0088)); + 215c4: 01002204 movi r4,136 + 215c8: 0021a340 call 21a34 + 215cc: 10bfffcc andi r2,r2,65535 + 215d0: 100b883a mov r5,r2 + 215d4: 010000f4 movhi r4,3 + 215d8: 21075d04 addi r4,r4,7540 + 215dc: 00230240 call 23024 + printf("CtlErrCnt = %d\n",MipiBridgeRegRead(0x008A)); + 215e0: 01002284 movi r4,138 + 215e4: 0021a340 call 21a34 + 215e8: 10bfffcc andi r2,r2,65535 + 215ec: 100b883a mov r5,r2 + 215f0: 010000f4 movhi r4,3 + 215f4: 21076104 addi r4,r4,7556 + 215f8: 00230240 call 23024 + printf("SoTErrCnt = %d\n",MipiBridgeRegRead(0x008C)); + 215fc: 01002304 movi r4,140 + 21600: 0021a340 call 21a34 + 21604: 10bfffcc andi r2,r2,65535 + 21608: 100b883a mov r5,r2 + 2160c: 010000f4 movhi r4,3 + 21610: 21076504 addi r4,r4,7572 + 21614: 00230240 call 23024 + printf("SynErrCnt = %d\n",MipiBridgeRegRead(0x008E)); + 21618: 01002384 movi r4,142 + 2161c: 0021a340 call 21a34 + 21620: 10bfffcc andi r2,r2,65535 + 21624: 100b883a mov r5,r2 + 21628: 010000f4 movhi r4,3 + 2162c: 21076904 addi r4,r4,7588 + 21630: 00230240 call 23024 + printf("MDLErrCnt = %d\n",MipiBridgeRegRead(0x0090)); + 21634: 01002404 movi r4,144 + 21638: 0021a340 call 21a34 + 2163c: 10bfffcc andi r2,r2,65535 + 21640: 100b883a mov r5,r2 + 21644: 010000f4 movhi r4,3 + 21648: 21076d04 addi r4,r4,7604 + 2164c: 00230240 call 23024 + printf("FIFOSTATUS = %d\n",MipiBridgeRegRead(0x00F8)); + 21650: 01003e04 movi r4,248 + 21654: 0021a340 call 21a34 + 21658: 10bfffcc andi r2,r2,65535 + 2165c: 100b883a mov r5,r2 + 21660: 010000f4 movhi r4,3 + 21664: 21077104 addi r4,r4,7620 + 21668: 00230240 call 23024 + printf("DataType = 0x%04x\n",MipiBridgeRegRead(0x006A)); + 2166c: 01001a84 movi r4,106 + 21670: 0021a340 call 21a34 + 21674: 10bfffcc andi r2,r2,65535 + 21678: 100b883a mov r5,r2 + 2167c: 010000f4 movhi r4,3 + 21680: 21077604 addi r4,r4,7640 + 21684: 00230240 call 23024 + printf("CSIPktLen = %d\n",MipiBridgeRegRead(0x006E)); + 21688: 01001b84 movi r4,110 + 2168c: 0021a340 call 21a34 + 21690: 10bfffcc andi r2,r2,65535 + 21694: 100b883a mov r5,r2 + 21698: 010000f4 movhi r4,3 + 2169c: 21077b04 addi r4,r4,7660 + 216a0: 00230240 call 23024 +} + 216a4: 0001883a nop + 216a8: e037883a mov sp,fp + 216ac: dfc00117 ldw ra,4(sp) + 216b0: df000017 ldw fp,0(sp) + 216b4: dec00204 addi sp,sp,8 + 216b8: f800283a ret + +000216bc : + + + +bool MIPI_Init(void){ + 216bc: defffd04 addi sp,sp,-12 + 216c0: dfc00215 stw ra,8(sp) + 216c4: df000115 stw fp,4(sp) + 216c8: df000104 addi fp,sp,4 + bool bSuccess; + + + bSuccess = oc_i2c_init_ex(I2C_OPENCORES_MIPI_BASE, 50*1000*1000,400*1000); //I2C: 400K + 216cc: 018001b4 movhi r6,6 + 216d0: 3186a004 addi r6,r6,6784 + 216d4: 0140bef4 movhi r5,763 + 216d8: 297c2004 addi r5,r5,-3968 + 216dc: 01000134 movhi r4,4 + 216e0: 21041804 addi r4,r4,4192 + 216e4: 00203980 call 20398 + 216e8: e0bfff15 stw r2,-4(fp) + if (!bSuccess) + 216ec: e0bfff17 ldw r2,-4(fp) + 216f0: 1000031e bne r2,zero,21700 + printf("failed to init MIPI- Bridge i2c\r\n"); + 216f4: 010000f4 movhi r4,3 + 216f8: 21077f04 addi r4,r4,7676 + 216fc: 00231400 call 23140 + + usleep(50*1000); + 21700: 0130d414 movui r4,50000 + 21704: 002f9cc0 call 2f9cc + MipiBridgeInit(); + 21708: 0021aac0 call 21aac + + usleep(500*1000); + 2170c: 01000234 movhi r4,8 + 21710: 21284804 addi r4,r4,-24288 + 21714: 002f9cc0 call 2f9cc + +// bSuccess = oc_i2c_init_ex(I2C_OPENCORES_CAMERA_BASE, 50*1000*1000,400*1000); //I2C: 400K +// if (!bSuccess) +// printf("failed to init MIPI- Camera i2c\r\n"); + + MipiCameraInit(); + 21718: 002203c0 call 2203c + MIPI_BIN_LEVEL(DEFAULT_LEVEL); + 2171c: 01000084 movi r4,2 + 21720: 0021e7c0 call 21e7c +// OV8865_FOCUS_Move_to(340); + +// oc_i2c_uninit(I2C_OPENCORES_CAMERA_BASE); // Release I2C bus , due to two I2C master shared! + + + usleep(1000); + 21724: 0100fa04 movi r4,1000 + 21728: 002f9cc0 call 2f9cc + + +// oc_i2c_uninit(I2C_OPENCORES_MIPI_BASE); + + return bSuccess; + 2172c: e0bfff17 ldw r2,-4(fp) +} + 21730: e037883a mov sp,fp + 21734: dfc00117 ldw ra,4(sp) + 21738: df000017 ldw fp,0(sp) + 2173c: dec00204 addi sp,sp,8 + 21740: f800283a ret + +00021744

: + + + + +int main() +{ + 21744: defffa04 addi sp,sp,-24 + 21748: dfc00515 stw ra,20(sp) + 2174c: df000415 stw fp,16(sp) + 21750: df000404 addi fp,sp,16 + int boundingBoxColour = 0; + 21754: e03ffc15 stw zero,-16(fp) + + + printf("DE10-LITE D8M VGA Demo\n"); + 21758: 010000f4 movhi r4,3 + 2175c: 21078804 addi r4,r4,7712 + 21760: 00231400 call 23140 + printf("Imperial College EEE2 Project version\n"); + 21764: 010000f4 movhi r4,3 + 21768: 21078e04 addi r4,r4,7736 + 2176c: 00231400 call 23140 + IOWR(MIPI_PWDN_N_BASE, 0x00, 0x00); + 21770: 0007883a mov r3,zero + 21774: 00800134 movhi r2,4 + 21778: 10842004 addi r2,r2,4224 + 2177c: 10c00035 stwio r3,0(r2) + IOWR(MIPI_RESET_N_BASE, 0x00, 0x00); + 21780: 0007883a mov r3,zero + 21784: 00800134 movhi r2,4 + 21788: 10842404 addi r2,r2,4240 + 2178c: 10c00035 stwio r3,0(r2) + + usleep(2000); + 21790: 0101f404 movi r4,2000 + 21794: 002f9cc0 call 2f9cc + IOWR(MIPI_PWDN_N_BASE, 0x00, 0xFF); + 21798: 00c03fc4 movi r3,255 + 2179c: 00800134 movhi r2,4 + 217a0: 10842004 addi r2,r2,4224 + 217a4: 10c00035 stwio r3,0(r2) + usleep(2000); + 217a8: 0101f404 movi r4,2000 + 217ac: 002f9cc0 call 2f9cc + IOWR(MIPI_RESET_N_BASE, 0x00, 0xFF); + 217b0: 00c03fc4 movi r3,255 + 217b4: 00800134 movhi r2,4 + 217b8: 10842404 addi r2,r2,4240 + 217bc: 10c00035 stwio r3,0(r2) + + printf("Image Processor ID: %x\n",IORD(0x42000,EEE_IMGPROC_ID)); + 217c0: 00800134 movhi r2,4 + 217c4: 10880204 addi r2,r2,8200 + 217c8: 10800037 ldwio r2,0(r2) + 217cc: 100b883a mov r5,r2 + 217d0: 010000f4 movhi r4,3 + 217d4: 21079804 addi r4,r4,7776 + 217d8: 00230240 call 23024 + //printf("Image Processor ID: %x\n",IORD(EEE_IMGPROC_0_BASE,EEE_IMGPROC_ID)); //Don't know why this doesn't work - definition is in system.h in BSP + + + usleep(2000); + 217dc: 0101f404 movi r4,2000 + 217e0: 002f9cc0 call 2f9cc + + + // MIPI Init + if (!MIPI_Init()){ + 217e4: 00216bc0 call 216bc + 217e8: 1000041e bne r2,zero,217fc + printf("MIPI_Init Init failed!\r\n"); + 217ec: 010000f4 movhi r4,3 + 217f0: 21079e04 addi r4,r4,7800 + 217f4: 00231400 call 23140 + 217f8: 00000306 br 21808 + }else{ + printf("MIPI_Init Init successfully!\r\n"); + 217fc: 010000f4 movhi r4,3 + 21800: 2107a404 addi r4,r4,7824 + 21804: 00231400 call 23140 + } + +// while(1){ + mipi_clear_error(); + 21808: 00213f40 call 213f4 + usleep(50*1000); + 2180c: 0130d414 movui r4,50000 + 21810: 002f9cc0 call 2f9cc + mipi_clear_error(); + 21814: 00213f40 call 213f4 + usleep(1000*1000); + 21818: 010003f4 movhi r4,15 + 2181c: 21109004 addi r4,r4,16960 + 21820: 002f9cc0 call 2f9cc + mipi_show_error_info(); + 21824: 00214ac0 call 214ac +// mipi_show_error_info_more(); + printf("\n"); + 21828: 01000284 movi r4,10 + 2182c: 00230680 call 23068 + + + + + ////////////////////////////////////////////////////////// + alt_u16 bin_level = DEFAULT_LEVEL; + 21830: 00800084 movi r2,2 + 21834: e0bffd0d sth r2,-12(fp) + alt_u8 manual_focus_step = 10; + 21838: 00800284 movi r2,10 + 2183c: e0bffd85 stb r2,-10(fp) + alt_u16 current_focus = 300; + 21840: 00804b04 movi r2,300 + 21844: e0bffe0d sth r2,-8(fp) + Focus_Init(); + 21848: 002103c0 call 2103c + while(1){ + + // touch KEY0 to trigger Auto focus + if((IORD(KEY_BASE,0)&0x03) == 0x02){ + 2184c: 00800134 movhi r2,4 + 21850: 10842804 addi r2,r2,4256 + 21854: 10800037 ldwio r2,0(r2) + 21858: 108000cc andi r2,r2,3 + 2185c: 10800098 cmpnei r2,r2,2 + 21860: 1000041e bne r2,zero,21874 + + current_focus = Focus_Window(320,240); + 21864: 01403c04 movi r5,240 + 21868: 01005004 movi r4,320 + 2186c: 00211640 call 21164 + 21870: e0bffe0d sth r2,-8(fp) + } + // touch KEY1 to ZOOM + if((IORD(KEY_BASE,0)&0x03) == 0x01){ + 21874: 00800134 movhi r2,4 + 21878: 10842804 addi r2,r2,4256 + 2187c: 10800037 ldwio r2,0(r2) + 21880: 108000cc andi r2,r2,3 + 21884: 10800058 cmpnei r2,r2,1 + 21888: 1000241e bne r2,zero,2191c + if(bin_level == 3 )bin_level = 1; + 2188c: e0bffd0b ldhu r2,-12(fp) + 21890: 108000d8 cmpnei r2,r2,3 + 21894: 1000031e bne r2,zero,218a4 + 21898: 00800044 movi r2,1 + 2189c: e0bffd0d sth r2,-12(fp) + 218a0: 00000306 br 218b0 + else bin_level ++; + 218a4: e0bffd0b ldhu r2,-12(fp) + 218a8: 10800044 addi r2,r2,1 + 218ac: e0bffd0d sth r2,-12(fp) + printf("set bin level to %d\n",bin_level); + 218b0: e0bffd0b ldhu r2,-12(fp) + 218b4: 100b883a mov r5,r2 + 218b8: 010000f4 movhi r4,3 + 218bc: 2107ac04 addi r4,r4,7856 + 218c0: 00230240 call 23024 + MIPI_BIN_LEVEL(bin_level); + 218c4: e0bffd0b ldhu r2,-12(fp) + 218c8: 10803fcc andi r2,r2,255 + 218cc: 1009883a mov r4,r2 + 218d0: 0021e7c0 call 21e7c + usleep(500000); + 218d4: 01000234 movhi r4,8 + 218d8: 21284804 addi r4,r4,-24288 + 218dc: 002f9cc0 call 2f9cc + + } + #endif + + //Read messages from the image processor and print them on the terminal + while ((IORD(0x42000,EEE_IMGPROC_STATUS)>>8) & 0xff) { //Find out if there are words to read + 218e0: 00000e06 br 2191c + int word = IORD(0x42000,EEE_IMGPROC_MSG); //Get next word from message buffer + 218e4: 00800134 movhi r2,4 + 218e8: 10880104 addi r2,r2,8196 + 218ec: 10800037 ldwio r2,0(r2) + 218f0: e0bfff15 stw r2,-4(fp) + if (word == EEE_IMGPROC_MSG_START){ //Newline on message identifier + 218f4: e0ffff17 ldw r3,-4(fp) + 218f8: 008014b4 movhi r2,82 + 218fc: 10909084 addi r2,r2,16962 + 21900: 1880021e bne r3,r2,2190c + printf("\n"); + 21904: 01000284 movi r4,10 + 21908: 00230680 call 23068 + } + printf("%08x ",word); + 2190c: e17fff17 ldw r5,-4(fp) + 21910: 010000f4 movhi r4,3 + 21914: 2107b204 addi r4,r4,7880 + 21918: 00230240 call 23024 + + } + #endif + + //Read messages from the image processor and print them on the terminal + while ((IORD(0x42000,EEE_IMGPROC_STATUS)>>8) & 0xff) { //Find out if there are words to read + 2191c: 00800134 movhi r2,4 + 21920: 10880004 addi r2,r2,8192 + 21924: 10800037 ldwio r2,0(r2) + 21928: 1005d23a srai r2,r2,8 + 2192c: 10803fcc andi r2,r2,255 + 21930: 103fec1e bne r2,zero,218e4 <_gp+0xfffe53ac> + } + printf("%08x ",word); + } + + //Update the bounding box colour + boundingBoxColour = (++boundingBoxColour & 0xff); + 21934: e0bffc17 ldw r2,-16(fp) + 21938: 10800044 addi r2,r2,1 + 2193c: e0bffc15 stw r2,-16(fp) + 21940: e0bffc17 ldw r2,-16(fp) + 21944: 10803fcc andi r2,r2,255 + 21948: e0bffc15 stw r2,-16(fp) + IOWR(0x42000, EEE_IMGPROC_BBCOL, (boundingBoxColour << 8) | (0xff - boundingBoxColour)); + 2194c: e0bffc17 ldw r2,-16(fp) + 21950: 1006923a slli r3,r2,8 + 21954: 01003fc4 movi r4,255 + 21958: e0bffc17 ldw r2,-16(fp) + 2195c: 2085c83a sub r2,r4,r2 + 21960: 1886b03a or r3,r3,r2 + 21964: 00800134 movhi r2,4 + 21968: 10880304 addi r2,r2,8204 + 2196c: 10c00035 stwio r3,0(r2) + + + + //Main loop delay + usleep(10000); + 21970: 0109c404 movi r4,10000 + 21974: 002f9cc0 call 2f9cc + + }; + 21978: 003fb406 br 2184c <_gp+0xfffe5314> + +0002197c : + {0x0004,0x8047} // Configuration Control Register + +}; + + +alt_u16 nSWAP16(alt_u16 x){ + 2197c: defffd04 addi sp,sp,-12 + 21980: df000215 stw fp,8(sp) + 21984: df000204 addi fp,sp,8 + 21988: 2005883a mov r2,r4 + 2198c: e0bfff0d sth r2,-4(fp) + alt_u16 y; + //y = (((x) >> 8) & 0xff) | (((x) & 0xff) << 8); + +// y = x; + y = (x >> 8) & 0x00ff; + 21990: e0bfff0b ldhu r2,-4(fp) + 21994: 1004d23a srli r2,r2,8 + 21998: e0bffe0d sth r2,-8(fp) + y |= (x << 8) & 0xff00; + 2199c: e0bfff0b ldhu r2,-4(fp) + 219a0: 1004923a slli r2,r2,8 + 219a4: 1007883a mov r3,r2 + 219a8: e0bffe0b ldhu r2,-8(fp) + 219ac: 1884b03a or r2,r3,r2 + 219b0: e0bffe0d sth r2,-8(fp) + return y; + 219b4: e0bffe0b ldhu r2,-8(fp) +} + 219b8: e037883a mov sp,fp + 219bc: df000017 ldw fp,0(sp) + 219c0: dec00104 addi sp,sp,4 + 219c4: f800283a ret + +000219c8 : + + +void MipiBridgeRegWrite(alt_u16 Addr, alt_u16 Value){ + 219c8: defffa04 addi sp,sp,-24 + 219cc: dfc00515 stw ra,20(sp) + 219d0: df000415 stw fp,16(sp) + 219d4: df000404 addi fp,sp,16 + 219d8: 2007883a mov r3,r4 + 219dc: 2805883a mov r2,r5 + 219e0: e0fffe0d sth r3,-8(fp) + 219e4: e0bfff0d sth r2,-4(fp) + const alt_u8 device_address = MIPI_BRIDGE_I2C_ADDR; + 219e8: 00800704 movi r2,28 + 219ec: e0bffd05 stb r2,-12(fp) + OC_I2CL_Write(I2C_OPENCORES_MIPI_BASE, device_address, Addr, (alt_u8 *)&Value, sizeof(Value)); + 219f0: e0fffd03 ldbu r3,-12(fp) + 219f4: e13ffe0b ldhu r4,-8(fp) + 219f8: e17fff04 addi r5,fp,-4 + 219fc: 00800084 movi r2,2 + 21a00: d8800015 stw r2,0(sp) + 21a04: 280f883a mov r7,r5 + 21a08: 200d883a mov r6,r4 + 21a0c: 180b883a mov r5,r3 + 21a10: 01000134 movhi r4,4 + 21a14: 21041804 addi r4,r4,4192 + 21a18: 0020bac0 call 20bac +} + 21a1c: 0001883a nop + 21a20: e037883a mov sp,fp + 21a24: dfc00117 ldw ra,4(sp) + 21a28: df000017 ldw fp,0(sp) + 21a2c: dec00204 addi sp,sp,8 + 21a30: f800283a ret + +00021a34 : + +alt_u16 MipiBridgeRegRead(alt_u16 Addr){ + 21a34: defffa04 addi sp,sp,-24 + 21a38: dfc00515 stw ra,20(sp) + 21a3c: df000415 stw fp,16(sp) + 21a40: df000404 addi fp,sp,16 + 21a44: 2005883a mov r2,r4 + 21a48: e0bfff0d sth r2,-4(fp) + alt_u16 Value,tValue; + const alt_u8 device_address = MIPI_BRIDGE_I2C_ADDR; + 21a4c: 00800704 movi r2,28 + 21a50: e0bffd05 stb r2,-12(fp) + + OC_I2CL_Read(I2C_OPENCORES_MIPI_BASE,device_address, Addr,(alt_u8 *)&Value,sizeof(Value)); + 21a54: e0fffd03 ldbu r3,-12(fp) + 21a58: e13fff0b ldhu r4,-4(fp) + 21a5c: e17ffe04 addi r5,fp,-8 + 21a60: 00800084 movi r2,2 + 21a64: d8800015 stw r2,0(sp) + 21a68: 280f883a mov r7,r5 + 21a6c: 200d883a mov r6,r4 + 21a70: 180b883a mov r5,r3 + 21a74: 01000134 movhi r4,4 + 21a78: 21041804 addi r4,r4,4192 + 21a7c: 0020dbc0 call 20dbc + + tValue = nSWAP16(Value); + 21a80: e0bffe0b ldhu r2,-8(fp) + 21a84: 10bfffcc andi r2,r2,65535 + 21a88: 1009883a mov r4,r2 + 21a8c: 002197c0 call 2197c + 21a90: e0bffd8d sth r2,-10(fp) + + return (tValue); + 21a94: e0bffd8b ldhu r2,-10(fp) +} + 21a98: e037883a mov sp,fp + 21a9c: dfc00117 ldw ra,4(sp) + 21aa0: df000017 ldw fp,0(sp) + 21aa4: dec00204 addi sp,sp,8 + 21aa8: f800283a ret + +00021aac : + + + + +void MipiBridgeInit(void){ + 21aac: defffb04 addi sp,sp,-20 + 21ab0: dfc00415 stw ra,16(sp) + 21ab4: df000315 stw fp,12(sp) + 21ab8: df000304 addi fp,sp,12 + + alt_u16 data; + int i, num; + + printf("\nStart MipiBridgeInit!\n"); + 21abc: 010000f4 movhi r4,3 + 21ac0: 2107b404 addi r4,r4,7888 + 21ac4: 00231400 call 23140 + + data = MipiBridgeRegRead(0x0000); // read chip and revision id; + 21ac8: 0009883a mov r4,zero + 21acc: 0021a340 call 21a34 + 21ad0: e0bffe0d sth r2,-8(fp) + + printf("Chip and Revision ID is 0x%04xh(expected: 0x4401);\n",data); + 21ad4: e0bffe0b ldhu r2,-8(fp) + 21ad8: 100b883a mov r5,r2 + 21adc: 010000f4 movhi r4,3 + 21ae0: 2107ba04 addi r4,r4,7912 + 21ae4: 00230240 call 23024 + + + num = sizeof(MipiBridgeReg)/sizeof(MipiBridgeReg[0]); + 21ae8: 00800344 movi r2,13 + 21aec: e0bfff15 stw r2,-4(fp) + + for(i=0;i + if (MipiBridgeReg[i].Addr == 0xFFFF) usleep(MipiBridgeReg[i].Data*1000); + 21af8: 008000f4 movhi r2,3 + 21afc: 1088b904 addi r2,r2,8932 + 21b00: e0fffd17 ldw r3,-12(fp) + 21b04: 18c7883a add r3,r3,r3 + 21b08: 18c7883a add r3,r3,r3 + 21b0c: 10c5883a add r2,r2,r3 + 21b10: 1080000b ldhu r2,0(r2) + 21b14: 10ffffcc andi r3,r2,65535 + 21b18: 00bfffd4 movui r2,65535 + 21b1c: 18800d1e bne r3,r2,21b54 + 21b20: 008000f4 movhi r2,3 + 21b24: 1088b904 addi r2,r2,8932 + 21b28: e0fffd17 ldw r3,-12(fp) + 21b2c: 18c7883a add r3,r3,r3 + 21b30: 18c7883a add r3,r3,r3 + 21b34: 10c5883a add r2,r2,r3 + 21b38: 10800084 addi r2,r2,2 + 21b3c: 1080000b ldhu r2,0(r2) + 21b40: 10bfffcc andi r2,r2,65535 + 21b44: 1080fa24 muli r2,r2,1000 + 21b48: 1009883a mov r4,r2 + 21b4c: 002f9cc0 call 2f9cc + 21b50: 00001306 br 21ba0 + else MipiBridgeRegWrite(MipiBridgeReg[i].Addr, MipiBridgeReg[i].Data); + 21b54: 008000f4 movhi r2,3 + 21b58: 1088b904 addi r2,r2,8932 + 21b5c: e0fffd17 ldw r3,-12(fp) + 21b60: 18c7883a add r3,r3,r3 + 21b64: 18c7883a add r3,r3,r3 + 21b68: 10c5883a add r2,r2,r3 + 21b6c: 1080000b ldhu r2,0(r2) + 21b70: 113fffcc andi r4,r2,65535 + 21b74: 008000f4 movhi r2,3 + 21b78: 1088b904 addi r2,r2,8932 + 21b7c: e0fffd17 ldw r3,-12(fp) + 21b80: 18c7883a add r3,r3,r3 + 21b84: 18c7883a add r3,r3,r3 + 21b88: 10c5883a add r2,r2,r3 + 21b8c: 10800084 addi r2,r2,2 + 21b90: 1080000b ldhu r2,0(r2) + 21b94: 10bfffcc andi r2,r2,65535 + 21b98: 100b883a mov r5,r2 + 21b9c: 00219c80 call 219c8 + printf("Chip and Revision ID is 0x%04xh(expected: 0x4401);\n",data); + + + num = sizeof(MipiBridgeReg)/sizeof(MipiBridgeReg[0]); + + for(i=0;i +// MipiBridgeRegWrite(0x005A,((cap<<6) + (HsRxRs<<4) + ClkDly_data)); +// MipiBridgeRegWrite(0x005C,((cap<<6) + (HsRxRs<<4) + ClkDly_data)); +// MipiBridgeRegWrite(0x005E,((cap<<6) + (HsRxRs<<4) + ClkDly_data)); +// + + printf("End MipiBridgeInit!\n\n"); + 21bb8: 010000f4 movhi r4,3 + 21bbc: 2107c704 addi r4,r4,7964 + 21bc0: 00231400 call 23140 + +} + 21bc4: 0001883a nop + 21bc8: e037883a mov sp,fp + 21bcc: dfc00117 ldw ra,4(sp) + 21bd0: df000017 ldw fp,0(sp) + 21bd4: dec00204 addi sp,sp,8 + 21bd8: f800283a ret + +00021bdc : + }; + + + + +alt_u8 OV8865_read_cmos_sensor_8(alt_u16 Addr){ + 21bdc: defffb04 addi sp,sp,-20 + 21be0: dfc00415 stw ra,16(sp) + 21be4: df000315 stw fp,12(sp) + 21be8: df000304 addi fp,sp,12 + 21bec: 2005883a mov r2,r4 + 21bf0: e0bfff0d sth r2,-4(fp) + const alt_u8 device_address = MIPI_I2C_ADDR; + 21bf4: 00801b04 movi r2,108 + 21bf8: e0bffe05 stb r2,-8(fp) + alt_u8 Value; + + //OC_I2CL_Write(I2C_OPENCORES_CAMERA_BASE, device_address, SWAP16(Addr), (alt_u8 *)&Value, sizeof(Value)); + OC_I2CL_Read(I2C_OPENCORES_CAMERA_BASE, device_address, Addr, (alt_u8 *)&Value, sizeof(Value)); + 21bfc: e0fffe03 ldbu r3,-8(fp) + 21c00: e13fff0b ldhu r4,-4(fp) + 21c04: e17ffe44 addi r5,fp,-7 + 21c08: 00800044 movi r2,1 + 21c0c: d8800015 stw r2,0(sp) + 21c10: 280f883a mov r7,r5 + 21c14: 200d883a mov r6,r4 + 21c18: 180b883a mov r5,r3 + 21c1c: 01000134 movhi r4,4 + 21c20: 21041004 addi r4,r4,4160 + 21c24: 0020dbc0 call 20dbc + + return (Value); + 21c28: e0bffe43 ldbu r2,-7(fp) +} + 21c2c: e037883a mov sp,fp + 21c30: dfc00117 ldw ra,4(sp) + 21c34: df000017 ldw fp,0(sp) + 21c38: dec00204 addi sp,sp,8 + 21c3c: f800283a ret + +00021c40 : + + +void OV8865_write_cmos_sensor_8(alt_u16 Addr, alt_u8 Value){ + 21c40: defffa04 addi sp,sp,-24 + 21c44: dfc00515 stw ra,20(sp) + 21c48: df000415 stw fp,16(sp) + 21c4c: df000404 addi fp,sp,16 + 21c50: 2007883a mov r3,r4 + 21c54: 2805883a mov r2,r5 + 21c58: e0fffe0d sth r3,-8(fp) + 21c5c: e0bfff05 stb r2,-4(fp) + const alt_u8 device_address = MIPI_I2C_ADDR; + 21c60: 00801b04 movi r2,108 + 21c64: e0bffd05 stb r2,-12(fp) + //OC_I2CL_Write(I2C_OPENCORES_CAMERA_BASE, device_address, SWAP16(Addr), (alt_u8 *)&Value, sizeof(Value)); + OC_I2CL_Write(I2C_OPENCORES_CAMERA_BASE, device_address, Addr, (alt_u8 *)&Value, sizeof(Value)); + 21c68: e0fffd03 ldbu r3,-12(fp) + 21c6c: e13ffe0b ldhu r4,-8(fp) + 21c70: e17fff04 addi r5,fp,-4 + 21c74: 00800044 movi r2,1 + 21c78: d8800015 stw r2,0(sp) + 21c7c: 280f883a mov r7,r5 + 21c80: 200d883a mov r6,r4 + 21c84: 180b883a mov r5,r3 + 21c88: 01000134 movhi r4,4 + 21c8c: 21041004 addi r4,r4,4160 + 21c90: 0020bac0 call 20bac +} + 21c94: 0001883a nop + 21c98: e037883a mov sp,fp + 21c9c: dfc00117 ldw ra,4(sp) + 21ca0: df000017 ldw fp,0(sp) + 21ca4: dec00204 addi sp,sp,8 + 21ca8: f800283a ret + +00021cac : + + +void OV8865_write_AF(alt_u8 msb, alt_u8 lsb){ + 21cac: defffa04 addi sp,sp,-24 + 21cb0: dfc00515 stw ra,20(sp) + 21cb4: df000415 stw fp,16(sp) + 21cb8: df000404 addi fp,sp,16 + 21cbc: 2007883a mov r3,r4 + 21cc0: 2805883a mov r2,r5 + 21cc4: e0fffe05 stb r3,-8(fp) + 21cc8: e0bfff05 stb r2,-4(fp) + // VCM149C + const alt_u8 device_address = MIPI_AF_I2C_ADDR; + 21ccc: 00800604 movi r2,24 + 21cd0: e0bffd05 stb r2,-12(fp) + OC_I2C_Write(I2C_OPENCORES_CAMERA_BASE, device_address, msb, (alt_u8 *)&lsb, sizeof(lsb)); + 21cd4: e0fffd03 ldbu r3,-12(fp) + 21cd8: e13ffe03 ldbu r4,-8(fp) + 21cdc: e17fff04 addi r5,fp,-4 + 21ce0: 00800044 movi r2,1 + 21ce4: d8800015 stw r2,0(sp) + 21ce8: 280f883a mov r7,r5 + 21cec: 200d883a mov r6,r4 + 21cf0: 180b883a mov r5,r3 + 21cf4: 01000134 movhi r4,4 + 21cf8: 21041004 addi r4,r4,4160 + 21cfc: 00206440 call 20644 +} + 21d00: 0001883a nop + 21d04: e037883a mov sp,fp + 21d08: dfc00117 ldw ra,4(sp) + 21d0c: df000017 ldw fp,0(sp) + 21d10: dec00204 addi sp,sp,8 + 21d14: f800283a ret + +00021d18 : + +void OV8865_read_AF(void){ + 21d18: defffb04 addi sp,sp,-20 + 21d1c: dfc00415 stw ra,16(sp) + 21d20: df000315 stw fp,12(sp) + 21d24: df000304 addi fp,sp,12 + // VCM149C + const alt_u8 device_address = MIPI_AF_I2C_ADDR; + 21d28: 00800604 movi r2,24 + 21d2c: e0bffd05 stb r2,-12(fp) + alt_u8 szData8[2]; + bool bSuccess; + + bSuccess = OC_I2C_Read_Continue(I2C_OPENCORES_CAMERA_BASE, device_address, szData8, sizeof(szData8)); + 21d30: e0bffd03 ldbu r2,-12(fp) + 21d34: e0ffff04 addi r3,fp,-4 + 21d38: 01c00084 movi r7,2 + 21d3c: 180d883a mov r6,r3 + 21d40: 100b883a mov r5,r2 + 21d44: 01000134 movhi r4,4 + 21d48: 21041004 addi r4,r4,4160 + 21d4c: 0020a740 call 20a74 + 21d50: e0bffe15 stw r2,-8(fp) + if (bSuccess) + 21d54: e0bffe17 ldw r2,-8(fp) + 21d58: 10000926 beq r2,zero,21d80 + printf("Read MSB=%xh, LSB=%xh\r\n", szData8[0], szData8[1]); + 21d5c: e0bfff03 ldbu r2,-4(fp) + 21d60: 10803fcc andi r2,r2,255 + 21d64: e0ffff43 ldbu r3,-3(fp) + 21d68: 18c03fcc andi r3,r3,255 + 21d6c: 180d883a mov r6,r3 + 21d70: 100b883a mov r5,r2 + 21d74: 010000f4 movhi r4,3 + 21d78: 2107cd04 addi r4,r4,7988 + 21d7c: 00230240 call 23024 +} + 21d80: 0001883a nop + 21d84: e037883a mov sp,fp + 21d88: dfc00117 ldw ra,4(sp) + 21d8c: df000017 ldw fp,0(sp) + 21d90: dec00204 addi sp,sp,8 + 21d94: f800283a ret + +00021d98 : + +void OV8865_FOCUS_Move_to(alt_u16 a_u2MovePosition) +{ + 21d98: defffb04 addi sp,sp,-20 + 21d9c: dfc00415 stw ra,16(sp) + 21da0: df000315 stw fp,12(sp) + 21da4: df000304 addi fp,sp,12 + 21da8: 2005883a mov r2,r4 + 21dac: e0bfff0d sth r2,-4(fp) + if (a_u2MovePosition > 1023) {a_u2MovePosition = 1023;} + 21db0: e0bfff0b ldhu r2,-4(fp) + 21db4: 10810030 cmpltui r2,r2,1024 + 21db8: 1000021e bne r2,zero,21dc4 + 21dbc: 0080ffc4 movi r2,1023 + 21dc0: e0bfff0d sth r2,-4(fp) + if (a_u2MovePosition < 0) {a_u2MovePosition = 0;} + int bSuccess; + + Focus_Released(); // waiting for VCM release I2C bus + 21dc4: 00213440 call 21344 + + bSuccess = oc_i2c_init_ex(I2C_OPENCORES_CAMERA_BASE, 50*1000*1000,400*1000); //I2C: 400K + 21dc8: 018001b4 movhi r6,6 + 21dcc: 3186a004 addi r6,r6,6784 + 21dd0: 0140bef4 movhi r5,763 + 21dd4: 297c2004 addi r5,r5,-3968 + 21dd8: 01000134 movhi r4,4 + 21ddc: 21041004 addi r4,r4,4160 + 21de0: 00203980 call 20398 + 21de4: e0bffd15 stw r2,-12(fp) + if (!bSuccess) + 21de8: e0bffd17 ldw r2,-12(fp) + 21dec: 1000031e bne r2,zero,21dfc + printf("failed to init MIPI- Camera i2c\r\n"); + 21df0: 010000f4 movhi r4,3 + 21df4: 2107d304 addi r4,r4,8012 + 21df8: 00231400 call 23140 + + printf("Manual set focus to %d\r\n",a_u2MovePosition); + 21dfc: e0bfff0b ldhu r2,-4(fp) + 21e00: 100b883a mov r5,r2 + 21e04: 010000f4 movhi r4,3 + 21e08: 2107dc04 addi r4,r4,8048 + 21e0c: 00230240 call 23024 + alt_u8 msb,lsb; + msb = (a_u2MovePosition >> 4)&0x00FF; + 21e10: e0bfff0b ldhu r2,-4(fp) + 21e14: 1004d13a srli r2,r2,4 + 21e18: e0bffe05 stb r2,-8(fp) + lsb = (a_u2MovePosition << 4 )&0x00F0; + 21e1c: e0bfff0b ldhu r2,-4(fp) + 21e20: 1004913a slli r2,r2,4 + 21e24: e0bffe45 stb r2,-7(fp) + lsb += 0x06; + 21e28: e0bffe43 ldbu r2,-7(fp) + 21e2c: 10800184 addi r2,r2,6 + 21e30: e0bffe45 stb r2,-7(fp) +// printf("Write MSB=%xh, LSB=%xh\r\n", msb, lsb); + OV8865_write_AF(msb, lsb+0x6); + 21e34: e0fffe03 ldbu r3,-8(fp) + 21e38: e0bffe43 ldbu r2,-7(fp) + 21e3c: 10800184 addi r2,r2,6 + 21e40: 10803fcc andi r2,r2,255 + 21e44: 100b883a mov r5,r2 + 21e48: 1809883a mov r4,r3 + 21e4c: 0021cac0 call 21cac + usleep(1000); + 21e50: 0100fa04 movi r4,1000 + 21e54: 002f9cc0 call 2f9cc +// OV8865_read_AF(); + + oc_i2c_uninit(I2C_OPENCORES_CAMERA_BASE); // Release I2C bus , due to two I2C master shared! + 21e58: 01000134 movhi r4,4 + 21e5c: 21041004 addi r4,r4,4160 + 21e60: 00204d40 call 204d4 + +} + 21e64: 0001883a nop + 21e68: e037883a mov sp,fp + 21e6c: dfc00117 ldw ra,4(sp) + 21e70: df000017 ldw fp,0(sp) + 21e74: dec00204 addi sp,sp,8 + 21e78: f800283a ret + +00021e7c : + + + + +//ZOOM +void MIPI_BIN_LEVEL(alt_u8 level){ + 21e7c: defffc04 addi sp,sp,-16 + 21e80: dfc00315 stw ra,12(sp) + 21e84: df000215 stw fp,8(sp) + 21e88: df000204 addi fp,sp,8 + 21e8c: 2005883a mov r2,r4 + 21e90: e0bfff05 stb r2,-4(fp) + if(level <= 1) level = 1; + 21e94: e0bfff03 ldbu r2,-4(fp) + 21e98: 108000a8 cmpgeui r2,r2,2 + 21e9c: 1000021e bne r2,zero,21ea8 + 21ea0: 00800044 movi r2,1 + 21ea4: e0bfff05 stb r2,-4(fp) + if(level >= 3) level = 3; + 21ea8: e0bfff03 ldbu r2,-4(fp) + 21eac: 108000f0 cmpltui r2,r2,3 + 21eb0: 1000021e bne r2,zero,21ebc + 21eb4: 008000c4 movi r2,3 + 21eb8: e0bfff05 stb r2,-4(fp) + + Focus_Released(); // waiting for VCM release I2C bus + 21ebc: 00213440 call 21344 + + int bSuccess; + bSuccess = oc_i2c_init_ex(I2C_OPENCORES_CAMERA_BASE, 50*1000*1000,400*1000); //I2C: 400K + 21ec0: 018001b4 movhi r6,6 + 21ec4: 3186a004 addi r6,r6,6784 + 21ec8: 0140bef4 movhi r5,763 + 21ecc: 297c2004 addi r5,r5,-3968 + 21ed0: 01000134 movhi r4,4 + 21ed4: 21041004 addi r4,r4,4160 + 21ed8: 00203980 call 20398 + 21edc: e0bffe15 stw r2,-8(fp) + if (!bSuccess) + 21ee0: e0bffe17 ldw r2,-8(fp) + 21ee4: 1000031e bne r2,zero,21ef4 + printf("failed to init MIPI- Camera i2c\r\n"); + 21ee8: 010000f4 movhi r4,3 + 21eec: 2107d304 addi r4,r4,8012 + 21ef0: 00231400 call 23140 + + + OV8865_write_cmos_sensor_8(0x0100, 0x00); + 21ef4: 000b883a mov r5,zero + 21ef8: 01004004 movi r4,256 + 21efc: 0021c400 call 21c40 + + if(level == 1){ + 21f00: e0bfff03 ldbu r2,-4(fp) + 21f04: 10800058 cmpnei r2,r2,1 + 21f08: 1000131e bne r2,zero,21f58 + + OV8865_write_cmos_sensor_8(0x3814, 0x01); + 21f0c: 01400044 movi r5,1 + 21f10: 010e0504 movi r4,14356 + 21f14: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x3815, 0x01); + 21f18: 01400044 movi r5,1 + 21f1c: 010e0544 movi r4,14357 + 21f20: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x382a, 0x01); + 21f24: 01400044 movi r5,1 + 21f28: 010e0a84 movi r4,14378 + 21f2c: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x382b, 0x01); + 21f30: 01400044 movi r5,1 + 21f34: 010e0ac4 movi r4,14379 + 21f38: 0021c400 call 21c40 + + OV8865_write_cmos_sensor_8(0x3830, 8); + 21f3c: 01400204 movi r5,8 + 21f40: 010e0c04 movi r4,14384 + 21f44: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x3836, 2); + 21f48: 01400084 movi r5,2 + 21f4c: 010e0d84 movi r4,14390 + 21f50: 0021c400 call 21c40 + 21f54: 00002b06 br 22004 + } + else if(level == 2){ + 21f58: e0bfff03 ldbu r2,-4(fp) + 21f5c: 10800098 cmpnei r2,r2,2 + 21f60: 1000131e bne r2,zero,21fb0 + + OV8865_write_cmos_sensor_8(0x3814, 0x03); + 21f64: 014000c4 movi r5,3 + 21f68: 010e0504 movi r4,14356 + 21f6c: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x3815, 0x01); + 21f70: 01400044 movi r5,1 + 21f74: 010e0544 movi r4,14357 + 21f78: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x382a, 0x03); + 21f7c: 014000c4 movi r5,3 + 21f80: 010e0a84 movi r4,14378 + 21f84: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x382b, 0x01); + 21f88: 01400044 movi r5,1 + 21f8c: 010e0ac4 movi r4,14379 + 21f90: 0021c400 call 21c40 + + OV8865_write_cmos_sensor_8(0x3830, 4); + 21f94: 01400104 movi r5,4 + 21f98: 010e0c04 movi r4,14384 + 21f9c: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x3836, 1); + 21fa0: 01400044 movi r5,1 + 21fa4: 010e0d84 movi r4,14390 + 21fa8: 0021c400 call 21c40 + 21fac: 00001506 br 22004 + + } + else if(level == 3){ + 21fb0: e0bfff03 ldbu r2,-4(fp) + 21fb4: 108000d8 cmpnei r2,r2,3 + 21fb8: 1000121e bne r2,zero,22004 + + OV8865_write_cmos_sensor_8(0x3814, 0x07); + 21fbc: 014001c4 movi r5,7 + 21fc0: 010e0504 movi r4,14356 + 21fc4: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x3815, 0x01); + 21fc8: 01400044 movi r5,1 + 21fcc: 010e0544 movi r4,14357 + 21fd0: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x382a, 0x07); + 21fd4: 014001c4 movi r5,7 + 21fd8: 010e0a84 movi r4,14378 + 21fdc: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x382b, 0x01); + 21fe0: 01400044 movi r5,1 + 21fe4: 010e0ac4 movi r4,14379 + 21fe8: 0021c400 call 21c40 + + OV8865_write_cmos_sensor_8(0x3830, 8); + 21fec: 01400204 movi r5,8 + 21ff0: 010e0c04 movi r4,14384 + 21ff4: 0021c400 call 21c40 + OV8865_write_cmos_sensor_8(0x3836, 2); + 21ff8: 01400084 movi r5,2 + 21ffc: 010e0d84 movi r4,14390 + 22000: 0021c400 call 21c40 + } + usleep(10000); + 22004: 0109c404 movi r4,10000 + 22008: 002f9cc0 call 2f9cc + OV8865_write_cmos_sensor_8(0x0100, 0x01); + 2200c: 01400044 movi r5,1 + 22010: 01004004 movi r4,256 + 22014: 0021c400 call 21c40 + + oc_i2c_uninit(I2C_OPENCORES_CAMERA_BASE); // Release I2C bus , due to two I2C master shared! + 22018: 01000134 movhi r4,4 + 2201c: 21041004 addi r4,r4,4160 + 22020: 00204d40 call 204d4 + +} + 22024: 0001883a nop + 22028: e037883a mov sp,fp + 2202c: dfc00117 ldw ra,4(sp) + 22030: df000017 ldw fp,0(sp) + 22034: dec00204 addi sp,sp,8 + 22038: f800283a ret + +0002203c : +// OV8865_write_cmos_sensor_8(0x0100, 0x01); +//} + + +void MipiCameraInit(void) +{ + 2203c: defffb04 addi sp,sp,-20 + 22040: dfc00415 stw ra,16(sp) + 22044: df000315 stw fp,12(sp) + 22048: df000304 addi fp,sp,12 + + int i, num; + int bSuccess; + + Focus_Released(); // waiting for VCM release I2C bus + 2204c: 00213440 call 21344 + + + bSuccess = oc_i2c_init_ex(I2C_OPENCORES_CAMERA_BASE, 50*1000*1000,400*1000); //I2C: 400K + 22050: 018001b4 movhi r6,6 + 22054: 3186a004 addi r6,r6,6784 + 22058: 0140bef4 movhi r5,763 + 2205c: 297c2004 addi r5,r5,-3968 + 22060: 01000134 movhi r4,4 + 22064: 21041004 addi r4,r4,4160 + 22068: 00203980 call 20398 + 2206c: e0bffe15 stw r2,-8(fp) + if (!bSuccess) + 22070: e0bffe17 ldw r2,-8(fp) + 22074: 1000031e bne r2,zero,22084 + printf("failed to init MIPI- Camera i2c\r\n"); + 22078: 010000f4 movhi r4,3 + 2207c: 2107d304 addi r4,r4,8012 + 22080: 00231400 call 23140 +// usleep(10000); +// } +// + + + OV8865DB("\nStart MipiCameraInit -OV8865!\r\n"); + 22084: 010000f4 movhi r4,3 + 22088: 2107e304 addi r4,r4,8076 + 2208c: 00231400 call 23140 + OV8865DB("Write Read Test!\n"); + 22090: 010000f4 movhi r4,3 + 22094: 2107eb04 addi r4,r4,8108 + 22098: 00231400 call 23140 + + for(i=0;i<10;i++){ + 2209c: e03ffd15 stw zero,-12(fp) + 220a0: 00001406 br 220f4 + OV8865_write_cmos_sensor_8(0x3809,i); + 220a4: e0bffd17 ldw r2,-12(fp) + 220a8: 10803fcc andi r2,r2,255 + 220ac: 100b883a mov r5,r2 + 220b0: 010e0244 movi r4,14345 + 220b4: 0021c400 call 21c40 + usleep(100); + 220b8: 01001904 movi r4,100 + 220bc: 002f9cc0 call 2f9cc + printf("%d (%d)\n",OV8865_read_cmos_sensor_8(0x3809),i); + 220c0: 010e0244 movi r4,14345 + 220c4: 0021bdc0 call 21bdc + 220c8: 10803fcc andi r2,r2,255 + 220cc: e1bffd17 ldw r6,-12(fp) + 220d0: 100b883a mov r5,r2 + 220d4: 010000f4 movhi r4,3 + 220d8: 2107f004 addi r4,r4,8128 + 220dc: 00230240 call 23024 + usleep(100); + 220e0: 01001904 movi r4,100 + 220e4: 002f9cc0 call 2f9cc + + + OV8865DB("\nStart MipiCameraInit -OV8865!\r\n"); + OV8865DB("Write Read Test!\n"); + + for(i=0;i<10;i++){ + 220e8: e0bffd17 ldw r2,-12(fp) + 220ec: 10800044 addi r2,r2,1 + 220f0: e0bffd15 stw r2,-12(fp) + 220f4: e0bffd17 ldw r2,-12(fp) + 220f8: 10800290 cmplti r2,r2,10 + 220fc: 103fe91e bne r2,zero,220a4 <_gp+0xfffe5b6c> + OV8865_write_cmos_sensor_8(0x3809,i); + usleep(100); + printf("%d (%d)\n",OV8865_read_cmos_sensor_8(0x3809),i); + usleep(100); + } + num = sizeof(MipiCameraReg)/sizeof(MipiCameraReg[0]); + 22100: 00804f84 movi r2,318 + 22104: e0bfff15 stw r2,-4(fp) + for(i=0;i + + if (MipiCameraReg[i].Type == TIME_DELAY) usleep(MipiCameraReg[i].Data*100); + 22110: 008000f4 movhi r2,3 + 22114: 1088c604 addi r2,r2,8984 + 22118: e0fffd17 ldw r3,-12(fp) + 2211c: 18c001a4 muli r3,r3,6 + 22120: 10c5883a add r2,r2,r3 + 22124: 10800003 ldbu r2,0(r2) + 22128: 10803fcc andi r2,r2,255 + 2212c: 108000d8 cmpnei r2,r2,3 + 22130: 10000c1e bne r2,zero,22164 + 22134: 008000f4 movhi r2,3 + 22138: 1088c604 addi r2,r2,8984 + 2213c: e0fffd17 ldw r3,-12(fp) + 22140: 18c001a4 muli r3,r3,6 + 22144: 10c5883a add r2,r2,r3 + 22148: 10800104 addi r2,r2,4 + 2214c: 10800003 ldbu r2,0(r2) + 22150: 10803fcc andi r2,r2,255 + 22154: 10801924 muli r2,r2,100 + 22158: 1009883a mov r4,r2 + 2215c: 002f9cc0 call 2f9cc + 22160: 00002406 br 221f4 + else if(MipiCameraReg[i].Type == END_OF_SCRIPT) break; + 22164: 008000f4 movhi r2,3 + 22168: 1088c604 addi r2,r2,8984 + 2216c: e0fffd17 ldw r3,-12(fp) + 22170: 18c001a4 muli r3,r3,6 + 22174: 10c5883a add r2,r2,r3 + 22178: 10800003 ldbu r2,0(r2) + 2217c: 10803fcc andi r2,r2,255 + 22180: 10800118 cmpnei r2,r2,4 + 22184: 10002226 beq r2,zero,22210 + else if(MipiCameraReg[i].Type == 0x6c) OV8865_write_cmos_sensor_8(MipiCameraReg[i].Addr, MipiCameraReg[i].Data); + 22188: 008000f4 movhi r2,3 + 2218c: 1088c604 addi r2,r2,8984 + 22190: e0fffd17 ldw r3,-12(fp) + 22194: 18c001a4 muli r3,r3,6 + 22198: 10c5883a add r2,r2,r3 + 2219c: 10800003 ldbu r2,0(r2) + 221a0: 10803fcc andi r2,r2,255 + 221a4: 10801b18 cmpnei r2,r2,108 + 221a8: 1000121e bne r2,zero,221f4 + 221ac: 008000f4 movhi r2,3 + 221b0: 1088c604 addi r2,r2,8984 + 221b4: e0fffd17 ldw r3,-12(fp) + 221b8: 18c001a4 muli r3,r3,6 + 221bc: 10c5883a add r2,r2,r3 + 221c0: 10800084 addi r2,r2,2 + 221c4: 1080000b ldhu r2,0(r2) + 221c8: 113fffcc andi r4,r2,65535 + 221cc: 008000f4 movhi r2,3 + 221d0: 1088c604 addi r2,r2,8984 + 221d4: e0fffd17 ldw r3,-12(fp) + 221d8: 18c001a4 muli r3,r3,6 + 221dc: 10c5883a add r2,r2,r3 + 221e0: 10800104 addi r2,r2,4 + 221e4: 10800003 ldbu r2,0(r2) + 221e8: 10803fcc andi r2,r2,255 + 221ec: 100b883a mov r5,r2 + 221f0: 0021c400 call 21c40 + usleep(100); + printf("%d (%d)\n",OV8865_read_cmos_sensor_8(0x3809),i); + usleep(100); + } + num = sizeof(MipiCameraReg)/sizeof(MipiCameraReg[0]); + for(i=0;i + 2220c: 00000106 br 22214 + + if (MipiCameraReg[i].Type == TIME_DELAY) usleep(MipiCameraReg[i].Data*100); + else if(MipiCameraReg[i].Type == END_OF_SCRIPT) break; + 22210: 0001883a nop + else if(MipiCameraReg[i].Type == 0x6c) OV8865_write_cmos_sensor_8(MipiCameraReg[i].Addr, MipiCameraReg[i].Data); + } + + + oc_i2c_uninit(I2C_OPENCORES_CAMERA_BASE); // Release I2C bus , due to two I2C master shared! + 22214: 01000134 movhi r4,4 + 22218: 21041004 addi r4,r4,4160 + 2221c: 00204d40 call 204d4 + + + + OV8865DB("\nEnd MipiCameraInit! -OV8865!\r\n\n"); + 22220: 010000f4 movhi r4,3 + 22224: 2107f304 addi r4,r4,8140 + 22228: 00231400 call 23140 + +} + 2222c: 0001883a nop + 22230: e037883a mov sp,fp + 22234: dfc00117 ldw ra,4(sp) + 22238: df000017 ldw fp,0(sp) + 2223c: dec00204 addi sp,sp,8 + 22240: f800283a ret + +00022244 : +#include "queue.h" + + + + +QUEUE_STRUCT* QUEUE_New(int nQueueNum){ + 22244: defffb04 addi sp,sp,-20 + 22248: dfc00415 stw ra,16(sp) + 2224c: df000315 stw fp,12(sp) + 22250: df000304 addi fp,sp,12 + 22254: e13fff15 stw r4,-4(fp) + int nSize; + QUEUE_STRUCT *pQueue; + nSize = sizeof(QUEUE_STRUCT)+nQueueNum*sizeof(alt_u32); + 22258: e0bfff17 ldw r2,-4(fp) + 2225c: 10800144 addi r2,r2,5 + 22260: 1085883a add r2,r2,r2 + 22264: 1085883a add r2,r2,r2 + 22268: e0bffd15 stw r2,-12(fp) + pQueue = (QUEUE_STRUCT *)malloc(nSize); + 2226c: e0bffd17 ldw r2,-12(fp) + 22270: 1009883a mov r4,r2 + 22274: 00226980 call 22698 + 22278: e0bffe15 stw r2,-8(fp) + memset((void *)pQueue, 0, nSize); + 2227c: e0bffd17 ldw r2,-12(fp) + 22280: 100d883a mov r6,r2 + 22284: 000b883a mov r5,zero + 22288: e13ffe17 ldw r4,-8(fp) + 2228c: 0022ecc0 call 22ecc + pQueue->num = nQueueNum; + 22290: e0ffff17 ldw r3,-4(fp) + 22294: e0bffe17 ldw r2,-8(fp) + 22298: 10c00015 stw r3,0(r2) + return pQueue; + 2229c: e0bffe17 ldw r2,-8(fp) +} + 222a0: e037883a mov sp,fp + 222a4: dfc00117 ldw ra,4(sp) + 222a8: df000017 ldw fp,0(sp) + 222ac: dec00204 addi sp,sp,8 + 222b0: f800283a ret + +000222b4 : + +void QUEUE_Delete(QUEUE_STRUCT *pQueue){ + 222b4: defffd04 addi sp,sp,-12 + 222b8: dfc00215 stw ra,8(sp) + 222bc: df000115 stw fp,4(sp) + 222c0: df000104 addi fp,sp,4 + 222c4: e13fff15 stw r4,-4(fp) + free(pQueue); + 222c8: e13fff17 ldw r4,-4(fp) + 222cc: 00226ac0 call 226ac +} + 222d0: 0001883a nop + 222d4: e037883a mov sp,fp + 222d8: dfc00117 ldw ra,4(sp) + 222dc: df000017 ldw fp,0(sp) + 222e0: dec00204 addi sp,sp,8 + 222e4: f800283a ret + +000222e8 : + +bool QUEUE_IsEmpty(QUEUE_STRUCT *pQueue){ + 222e8: defffe04 addi sp,sp,-8 + 222ec: df000115 stw fp,4(sp) + 222f0: df000104 addi fp,sp,4 + 222f4: e13fff15 stw r4,-4(fp) + if (pQueue->front == pQueue->rear) + 222f8: e0bfff17 ldw r2,-4(fp) + 222fc: 10c00117 ldw r3,4(r2) + 22300: e0bfff17 ldw r2,-4(fp) + 22304: 10800217 ldw r2,8(r2) + 22308: 1880021e bne r3,r2,22314 + return TRUE; + 2230c: 00800044 movi r2,1 + 22310: 00000106 br 22318 + return FALSE; + 22314: 0005883a mov r2,zero +} + 22318: e037883a mov sp,fp + 2231c: df000017 ldw fp,0(sp) + 22320: dec00104 addi sp,sp,4 + 22324: f800283a ret + +00022328 : + +bool QUEUE_IsFull(QUEUE_STRUCT *pQueue){ + 22328: defffd04 addi sp,sp,-12 + 2232c: dfc00215 stw ra,8(sp) + 22330: df000115 stw fp,4(sp) + 22334: df000104 addi fp,sp,4 + 22338: e13fff15 stw r4,-4(fp) + if (((pQueue->front+1)%pQueue->num) == pQueue->rear) + 2233c: e0bfff17 ldw r2,-4(fp) + 22340: 10800117 ldw r2,4(r2) + 22344: 10c00044 addi r3,r2,1 + 22348: e0bfff17 ldw r2,-4(fp) + 2234c: 10800017 ldw r2,0(r2) + 22350: 100b883a mov r5,r2 + 22354: 1809883a mov r4,r3 + 22358: 00226400 call 22640 <__umodsi3> + 2235c: 1007883a mov r3,r2 + 22360: e0bfff17 ldw r2,-4(fp) + 22364: 10800217 ldw r2,8(r2) + 22368: 1880021e bne r3,r2,22374 + return TRUE; + 2236c: 00800044 movi r2,1 + 22370: 00000106 br 22378 + return FALSE; + 22374: 0005883a mov r2,zero +} + 22378: e037883a mov sp,fp + 2237c: dfc00117 ldw ra,4(sp) + 22380: df000017 ldw fp,0(sp) + 22384: dec00204 addi sp,sp,8 + 22388: f800283a ret + +0002238c : + +bool QUEUE_Push(QUEUE_STRUCT *pQueue, alt_u32 data32){ + 2238c: defffc04 addi sp,sp,-16 + 22390: dfc00315 stw ra,12(sp) + 22394: df000215 stw fp,8(sp) + 22398: df000204 addi fp,sp,8 + 2239c: e13ffe15 stw r4,-8(fp) + 223a0: e17fff15 stw r5,-4(fp) + if (QUEUE_IsFull(pQueue)) + 223a4: e13ffe17 ldw r4,-8(fp) + 223a8: 00223280 call 22328 + 223ac: 10000226 beq r2,zero,223b8 + return FALSE; + 223b0: 0005883a mov r2,zero + 223b4: 00001506 br 2240c + pQueue->data[pQueue->front] = data32; + 223b8: e0bffe17 ldw r2,-8(fp) + 223bc: 10800117 ldw r2,4(r2) + 223c0: e0fffe17 ldw r3,-8(fp) + 223c4: 108000c4 addi r2,r2,3 + 223c8: 1085883a add r2,r2,r2 + 223cc: 1085883a add r2,r2,r2 + 223d0: 1885883a add r2,r3,r2 + 223d4: e0ffff17 ldw r3,-4(fp) + 223d8: 10c00015 stw r3,0(r2) + pQueue->front = (pQueue->front+1)%pQueue->num; + 223dc: e0bffe17 ldw r2,-8(fp) + 223e0: 10800117 ldw r2,4(r2) + 223e4: 10c00044 addi r3,r2,1 + 223e8: e0bffe17 ldw r2,-8(fp) + 223ec: 10800017 ldw r2,0(r2) + 223f0: 100b883a mov r5,r2 + 223f4: 1809883a mov r4,r3 + 223f8: 00226400 call 22640 <__umodsi3> + 223fc: 1007883a mov r3,r2 + 22400: e0bffe17 ldw r2,-8(fp) + 22404: 10c00115 stw r3,4(r2) + return TRUE; + 22408: 00800044 movi r2,1 +} + 2240c: e037883a mov sp,fp + 22410: dfc00117 ldw ra,4(sp) + 22414: df000017 ldw fp,0(sp) + 22418: dec00204 addi sp,sp,8 + 2241c: f800283a ret + +00022420 : + +alt_u32 QUEUE_Pop(QUEUE_STRUCT *pQueue){ + 22420: defffc04 addi sp,sp,-16 + 22424: dfc00315 stw ra,12(sp) + 22428: df000215 stw fp,8(sp) + 2242c: df000204 addi fp,sp,8 + 22430: e13fff15 stw r4,-4(fp) + alt_u32 data32; + if (QUEUE_IsEmpty(pQueue)) + 22434: e13fff17 ldw r4,-4(fp) + 22438: 00222e80 call 222e8 + 2243c: 10000226 beq r2,zero,22448 + return 0; + 22440: 0005883a mov r2,zero + 22444: 00001506 br 2249c + data32 = pQueue->data[pQueue->rear]; + 22448: e0bfff17 ldw r2,-4(fp) + 2244c: 10800217 ldw r2,8(r2) + 22450: e0ffff17 ldw r3,-4(fp) + 22454: 108000c4 addi r2,r2,3 + 22458: 1085883a add r2,r2,r2 + 2245c: 1085883a add r2,r2,r2 + 22460: 1885883a add r2,r3,r2 + 22464: 10800017 ldw r2,0(r2) + 22468: e0bffe15 stw r2,-8(fp) + pQueue->rear = (pQueue->rear+1)%pQueue->num; + 2246c: e0bfff17 ldw r2,-4(fp) + 22470: 10800217 ldw r2,8(r2) + 22474: 10c00044 addi r3,r2,1 + 22478: e0bfff17 ldw r2,-4(fp) + 2247c: 10800017 ldw r2,0(r2) + 22480: 100b883a mov r5,r2 + 22484: 1809883a mov r4,r3 + 22488: 00226400 call 22640 <__umodsi3> + 2248c: 1007883a mov r3,r2 + 22490: e0bfff17 ldw r2,-4(fp) + 22494: 10c00215 stw r3,8(r2) + return data32; + 22498: e0bffe17 ldw r2,-8(fp) +} + 2249c: e037883a mov sp,fp + 224a0: dfc00117 ldw ra,4(sp) + 224a4: df000017 ldw fp,0(sp) + 224a8: dec00204 addi sp,sp,8 + 224ac: f800283a ret + +000224b0 : + +void QUEUE_Empty(QUEUE_STRUCT *pQueue){ + 224b0: defffe04 addi sp,sp,-8 + 224b4: df000115 stw fp,4(sp) + 224b8: df000104 addi fp,sp,4 + 224bc: e13fff15 stw r4,-4(fp) + pQueue->front = 0; + 224c0: e0bfff17 ldw r2,-4(fp) + 224c4: 10000115 stw zero,4(r2) + pQueue->rear = 0; + 224c8: e0bfff17 ldw r2,-4(fp) + 224cc: 10000215 stw zero,8(r2) +} + 224d0: 0001883a nop + 224d4: e037883a mov sp,fp + 224d8: df000017 ldw fp,0(sp) + 224dc: dec00104 addi sp,sp,4 + 224e0: f800283a ret + +000224e4 <__divsi3>: + 224e4: 20001b16 blt r4,zero,22554 <__divsi3+0x70> + 224e8: 000f883a mov r7,zero + 224ec: 28001616 blt r5,zero,22548 <__divsi3+0x64> + 224f0: 200d883a mov r6,r4 + 224f4: 29001a2e bgeu r5,r4,22560 <__divsi3+0x7c> + 224f8: 00800804 movi r2,32 + 224fc: 00c00044 movi r3,1 + 22500: 00000106 br 22508 <__divsi3+0x24> + 22504: 10000d26 beq r2,zero,2253c <__divsi3+0x58> + 22508: 294b883a add r5,r5,r5 + 2250c: 10bfffc4 addi r2,r2,-1 + 22510: 18c7883a add r3,r3,r3 + 22514: 293ffb36 bltu r5,r4,22504 <_gp+0xfffe5fcc> + 22518: 0005883a mov r2,zero + 2251c: 18000726 beq r3,zero,2253c <__divsi3+0x58> + 22520: 0005883a mov r2,zero + 22524: 31400236 bltu r6,r5,22530 <__divsi3+0x4c> + 22528: 314dc83a sub r6,r6,r5 + 2252c: 10c4b03a or r2,r2,r3 + 22530: 1806d07a srli r3,r3,1 + 22534: 280ad07a srli r5,r5,1 + 22538: 183ffa1e bne r3,zero,22524 <_gp+0xfffe5fec> + 2253c: 38000126 beq r7,zero,22544 <__divsi3+0x60> + 22540: 0085c83a sub r2,zero,r2 + 22544: f800283a ret + 22548: 014bc83a sub r5,zero,r5 + 2254c: 39c0005c xori r7,r7,1 + 22550: 003fe706 br 224f0 <_gp+0xfffe5fb8> + 22554: 0109c83a sub r4,zero,r4 + 22558: 01c00044 movi r7,1 + 2255c: 003fe306 br 224ec <_gp+0xfffe5fb4> + 22560: 00c00044 movi r3,1 + 22564: 003fee06 br 22520 <_gp+0xfffe5fe8> + +00022568 <__modsi3>: + 22568: 20001716 blt r4,zero,225c8 <__modsi3+0x60> + 2256c: 000f883a mov r7,zero + 22570: 2005883a mov r2,r4 + 22574: 28001216 blt r5,zero,225c0 <__modsi3+0x58> + 22578: 2900162e bgeu r5,r4,225d4 <__modsi3+0x6c> + 2257c: 01800804 movi r6,32 + 22580: 00c00044 movi r3,1 + 22584: 00000106 br 2258c <__modsi3+0x24> + 22588: 30000a26 beq r6,zero,225b4 <__modsi3+0x4c> + 2258c: 294b883a add r5,r5,r5 + 22590: 31bfffc4 addi r6,r6,-1 + 22594: 18c7883a add r3,r3,r3 + 22598: 293ffb36 bltu r5,r4,22588 <_gp+0xfffe6050> + 2259c: 18000526 beq r3,zero,225b4 <__modsi3+0x4c> + 225a0: 1806d07a srli r3,r3,1 + 225a4: 11400136 bltu r2,r5,225ac <__modsi3+0x44> + 225a8: 1145c83a sub r2,r2,r5 + 225ac: 280ad07a srli r5,r5,1 + 225b0: 183ffb1e bne r3,zero,225a0 <_gp+0xfffe6068> + 225b4: 38000126 beq r7,zero,225bc <__modsi3+0x54> + 225b8: 0085c83a sub r2,zero,r2 + 225bc: f800283a ret + 225c0: 014bc83a sub r5,zero,r5 + 225c4: 003fec06 br 22578 <_gp+0xfffe6040> + 225c8: 0109c83a sub r4,zero,r4 + 225cc: 01c00044 movi r7,1 + 225d0: 003fe706 br 22570 <_gp+0xfffe6038> + 225d4: 00c00044 movi r3,1 + 225d8: 003ff106 br 225a0 <_gp+0xfffe6068> + +000225dc <__udivsi3>: + 225dc: 200d883a mov r6,r4 + 225e0: 2900152e bgeu r5,r4,22638 <__udivsi3+0x5c> + 225e4: 28001416 blt r5,zero,22638 <__udivsi3+0x5c> + 225e8: 00800804 movi r2,32 + 225ec: 00c00044 movi r3,1 + 225f0: 00000206 br 225fc <__udivsi3+0x20> + 225f4: 10000e26 beq r2,zero,22630 <__udivsi3+0x54> + 225f8: 28000516 blt r5,zero,22610 <__udivsi3+0x34> + 225fc: 294b883a add r5,r5,r5 + 22600: 10bfffc4 addi r2,r2,-1 + 22604: 18c7883a add r3,r3,r3 + 22608: 293ffa36 bltu r5,r4,225f4 <_gp+0xfffe60bc> + 2260c: 18000826 beq r3,zero,22630 <__udivsi3+0x54> + 22610: 0005883a mov r2,zero + 22614: 31400236 bltu r6,r5,22620 <__udivsi3+0x44> + 22618: 314dc83a sub r6,r6,r5 + 2261c: 10c4b03a or r2,r2,r3 + 22620: 1806d07a srli r3,r3,1 + 22624: 280ad07a srli r5,r5,1 + 22628: 183ffa1e bne r3,zero,22614 <_gp+0xfffe60dc> + 2262c: f800283a ret + 22630: 0005883a mov r2,zero + 22634: f800283a ret + 22638: 00c00044 movi r3,1 + 2263c: 003ff406 br 22610 <_gp+0xfffe60d8> + +00022640 <__umodsi3>: + 22640: 2005883a mov r2,r4 + 22644: 2900122e bgeu r5,r4,22690 <__umodsi3+0x50> + 22648: 28001116 blt r5,zero,22690 <__umodsi3+0x50> + 2264c: 01800804 movi r6,32 + 22650: 00c00044 movi r3,1 + 22654: 00000206 br 22660 <__umodsi3+0x20> + 22658: 30000c26 beq r6,zero,2268c <__umodsi3+0x4c> + 2265c: 28000516 blt r5,zero,22674 <__umodsi3+0x34> + 22660: 294b883a add r5,r5,r5 + 22664: 31bfffc4 addi r6,r6,-1 + 22668: 18c7883a add r3,r3,r3 + 2266c: 293ffa36 bltu r5,r4,22658 <_gp+0xfffe6120> + 22670: 18000626 beq r3,zero,2268c <__umodsi3+0x4c> + 22674: 1806d07a srli r3,r3,1 + 22678: 11400136 bltu r2,r5,22680 <__umodsi3+0x40> + 2267c: 1145c83a sub r2,r2,r5 + 22680: 280ad07a srli r5,r5,1 + 22684: 183ffb1e bne r3,zero,22674 <_gp+0xfffe613c> + 22688: f800283a ret + 2268c: f800283a ret + 22690: 00c00044 movi r3,1 + 22694: 003ff706 br 22674 <_gp+0xfffe613c> + +00022698 : + 22698: 008000f4 movhi r2,3 + 2269c: 10915404 addi r2,r2,17744 + 226a0: 200b883a mov r5,r4 + 226a4: 11000017 ldw r4,0(r2) + 226a8: 00226c01 jmpi 226c0 <_malloc_r> + +000226ac : + 226ac: 008000f4 movhi r2,3 + 226b0: 10915404 addi r2,r2,17744 + 226b4: 200b883a mov r5,r4 + 226b8: 11000017 ldw r4,0(r2) + 226bc: 00276581 jmpi 27658 <_free_r> + +000226c0 <_malloc_r>: + 226c0: defff504 addi sp,sp,-44 + 226c4: dc800315 stw r18,12(sp) + 226c8: dfc00a15 stw ra,40(sp) + 226cc: df000915 stw fp,36(sp) + 226d0: ddc00815 stw r23,32(sp) + 226d4: dd800715 stw r22,28(sp) + 226d8: dd400615 stw r21,24(sp) + 226dc: dd000515 stw r20,20(sp) + 226e0: dcc00415 stw r19,16(sp) + 226e4: dc400215 stw r17,8(sp) + 226e8: dc000115 stw r16,4(sp) + 226ec: 288002c4 addi r2,r5,11 + 226f0: 00c00584 movi r3,22 + 226f4: 2025883a mov r18,r4 + 226f8: 18807f2e bgeu r3,r2,228f8 <_malloc_r+0x238> + 226fc: 047ffe04 movi r17,-8 + 22700: 1462703a and r17,r2,r17 + 22704: 8800a316 blt r17,zero,22994 <_malloc_r+0x2d4> + 22708: 8940a236 bltu r17,r5,22994 <_malloc_r+0x2d4> + 2270c: 002f5800 call 2f580 <__malloc_lock> + 22710: 00807dc4 movi r2,503 + 22714: 1441e92e bgeu r2,r17,22ebc <_malloc_r+0x7fc> + 22718: 8804d27a srli r2,r17,9 + 2271c: 1000a126 beq r2,zero,229a4 <_malloc_r+0x2e4> + 22720: 00c00104 movi r3,4 + 22724: 18811e36 bltu r3,r2,22ba0 <_malloc_r+0x4e0> + 22728: 8804d1ba srli r2,r17,6 + 2272c: 12000e44 addi r8,r2,57 + 22730: 11c00e04 addi r7,r2,56 + 22734: 4209883a add r4,r8,r8 + 22738: 04c000f4 movhi r19,3 + 2273c: 2109883a add r4,r4,r4 + 22740: 9ccaa304 addi r19,r19,10892 + 22744: 2109883a add r4,r4,r4 + 22748: 9909883a add r4,r19,r4 + 2274c: 24000117 ldw r16,4(r4) + 22750: 213ffe04 addi r4,r4,-8 + 22754: 24009726 beq r4,r16,229b4 <_malloc_r+0x2f4> + 22758: 80800117 ldw r2,4(r16) + 2275c: 01bfff04 movi r6,-4 + 22760: 014003c4 movi r5,15 + 22764: 1184703a and r2,r2,r6 + 22768: 1447c83a sub r3,r2,r17 + 2276c: 28c00716 blt r5,r3,2278c <_malloc_r+0xcc> + 22770: 1800920e bge r3,zero,229bc <_malloc_r+0x2fc> + 22774: 84000317 ldw r16,12(r16) + 22778: 24008e26 beq r4,r16,229b4 <_malloc_r+0x2f4> + 2277c: 80800117 ldw r2,4(r16) + 22780: 1184703a and r2,r2,r6 + 22784: 1447c83a sub r3,r2,r17 + 22788: 28fff90e bge r5,r3,22770 <_gp+0xfffe6238> + 2278c: 3809883a mov r4,r7 + 22790: 018000f4 movhi r6,3 + 22794: 9c000417 ldw r16,16(r19) + 22798: 318aa304 addi r6,r6,10892 + 2279c: 32000204 addi r8,r6,8 + 227a0: 82013426 beq r16,r8,22c74 <_malloc_r+0x5b4> + 227a4: 80c00117 ldw r3,4(r16) + 227a8: 00bfff04 movi r2,-4 + 227ac: 188e703a and r7,r3,r2 + 227b0: 3c45c83a sub r2,r7,r17 + 227b4: 00c003c4 movi r3,15 + 227b8: 18811f16 blt r3,r2,22c38 <_malloc_r+0x578> + 227bc: 32000515 stw r8,20(r6) + 227c0: 32000415 stw r8,16(r6) + 227c4: 10007f0e bge r2,zero,229c4 <_malloc_r+0x304> + 227c8: 00807fc4 movi r2,511 + 227cc: 11c0fd36 bltu r2,r7,22bc4 <_malloc_r+0x504> + 227d0: 3806d0fa srli r3,r7,3 + 227d4: 01c00044 movi r7,1 + 227d8: 30800117 ldw r2,4(r6) + 227dc: 19400044 addi r5,r3,1 + 227e0: 294b883a add r5,r5,r5 + 227e4: 1807d0ba srai r3,r3,2 + 227e8: 294b883a add r5,r5,r5 + 227ec: 294b883a add r5,r5,r5 + 227f0: 298b883a add r5,r5,r6 + 227f4: 38c6983a sll r3,r7,r3 + 227f8: 29c00017 ldw r7,0(r5) + 227fc: 2a7ffe04 addi r9,r5,-8 + 22800: 1886b03a or r3,r3,r2 + 22804: 82400315 stw r9,12(r16) + 22808: 81c00215 stw r7,8(r16) + 2280c: 30c00115 stw r3,4(r6) + 22810: 2c000015 stw r16,0(r5) + 22814: 3c000315 stw r16,12(r7) + 22818: 2005d0ba srai r2,r4,2 + 2281c: 01400044 movi r5,1 + 22820: 288a983a sll r5,r5,r2 + 22824: 19406f36 bltu r3,r5,229e4 <_malloc_r+0x324> + 22828: 28c4703a and r2,r5,r3 + 2282c: 10000a1e bne r2,zero,22858 <_malloc_r+0x198> + 22830: 00bfff04 movi r2,-4 + 22834: 294b883a add r5,r5,r5 + 22838: 2088703a and r4,r4,r2 + 2283c: 28c4703a and r2,r5,r3 + 22840: 21000104 addi r4,r4,4 + 22844: 1000041e bne r2,zero,22858 <_malloc_r+0x198> + 22848: 294b883a add r5,r5,r5 + 2284c: 28c4703a and r2,r5,r3 + 22850: 21000104 addi r4,r4,4 + 22854: 103ffc26 beq r2,zero,22848 <_gp+0xfffe6310> + 22858: 02bfff04 movi r10,-4 + 2285c: 024003c4 movi r9,15 + 22860: 21800044 addi r6,r4,1 + 22864: 318d883a add r6,r6,r6 + 22868: 318d883a add r6,r6,r6 + 2286c: 318d883a add r6,r6,r6 + 22870: 998d883a add r6,r19,r6 + 22874: 333ffe04 addi r12,r6,-8 + 22878: 2017883a mov r11,r4 + 2287c: 31800104 addi r6,r6,4 + 22880: 34000017 ldw r16,0(r6) + 22884: 31fffd04 addi r7,r6,-12 + 22888: 81c0041e bne r16,r7,2289c <_malloc_r+0x1dc> + 2288c: 0000fb06 br 22c7c <_malloc_r+0x5bc> + 22890: 1801030e bge r3,zero,22ca0 <_malloc_r+0x5e0> + 22894: 84000317 ldw r16,12(r16) + 22898: 81c0f826 beq r16,r7,22c7c <_malloc_r+0x5bc> + 2289c: 80800117 ldw r2,4(r16) + 228a0: 1284703a and r2,r2,r10 + 228a4: 1447c83a sub r3,r2,r17 + 228a8: 48fff90e bge r9,r3,22890 <_gp+0xfffe6358> + 228ac: 80800317 ldw r2,12(r16) + 228b0: 81000217 ldw r4,8(r16) + 228b4: 89400054 ori r5,r17,1 + 228b8: 81400115 stw r5,4(r16) + 228bc: 20800315 stw r2,12(r4) + 228c0: 11000215 stw r4,8(r2) + 228c4: 8463883a add r17,r16,r17 + 228c8: 9c400515 stw r17,20(r19) + 228cc: 9c400415 stw r17,16(r19) + 228d0: 18800054 ori r2,r3,1 + 228d4: 88800115 stw r2,4(r17) + 228d8: 8a000315 stw r8,12(r17) + 228dc: 8a000215 stw r8,8(r17) + 228e0: 88e3883a add r17,r17,r3 + 228e4: 88c00015 stw r3,0(r17) + 228e8: 9009883a mov r4,r18 + 228ec: 002f5a40 call 2f5a4 <__malloc_unlock> + 228f0: 80800204 addi r2,r16,8 + 228f4: 00001b06 br 22964 <_malloc_r+0x2a4> + 228f8: 04400404 movi r17,16 + 228fc: 89402536 bltu r17,r5,22994 <_malloc_r+0x2d4> + 22900: 002f5800 call 2f580 <__malloc_lock> + 22904: 00800184 movi r2,6 + 22908: 01000084 movi r4,2 + 2290c: 04c000f4 movhi r19,3 + 22910: 1085883a add r2,r2,r2 + 22914: 9ccaa304 addi r19,r19,10892 + 22918: 1085883a add r2,r2,r2 + 2291c: 9885883a add r2,r19,r2 + 22920: 14000117 ldw r16,4(r2) + 22924: 10fffe04 addi r3,r2,-8 + 22928: 80c0d926 beq r16,r3,22c90 <_malloc_r+0x5d0> + 2292c: 80c00117 ldw r3,4(r16) + 22930: 81000317 ldw r4,12(r16) + 22934: 00bfff04 movi r2,-4 + 22938: 1884703a and r2,r3,r2 + 2293c: 81400217 ldw r5,8(r16) + 22940: 8085883a add r2,r16,r2 + 22944: 10c00117 ldw r3,4(r2) + 22948: 29000315 stw r4,12(r5) + 2294c: 21400215 stw r5,8(r4) + 22950: 18c00054 ori r3,r3,1 + 22954: 10c00115 stw r3,4(r2) + 22958: 9009883a mov r4,r18 + 2295c: 002f5a40 call 2f5a4 <__malloc_unlock> + 22960: 80800204 addi r2,r16,8 + 22964: dfc00a17 ldw ra,40(sp) + 22968: df000917 ldw fp,36(sp) + 2296c: ddc00817 ldw r23,32(sp) + 22970: dd800717 ldw r22,28(sp) + 22974: dd400617 ldw r21,24(sp) + 22978: dd000517 ldw r20,20(sp) + 2297c: dcc00417 ldw r19,16(sp) + 22980: dc800317 ldw r18,12(sp) + 22984: dc400217 ldw r17,8(sp) + 22988: dc000117 ldw r16,4(sp) + 2298c: dec00b04 addi sp,sp,44 + 22990: f800283a ret + 22994: 00800304 movi r2,12 + 22998: 90800015 stw r2,0(r18) + 2299c: 0005883a mov r2,zero + 229a0: 003ff006 br 22964 <_gp+0xfffe642c> + 229a4: 01002004 movi r4,128 + 229a8: 02001004 movi r8,64 + 229ac: 01c00fc4 movi r7,63 + 229b0: 003f6106 br 22738 <_gp+0xfffe6200> + 229b4: 4009883a mov r4,r8 + 229b8: 003f7506 br 22790 <_gp+0xfffe6258> + 229bc: 81000317 ldw r4,12(r16) + 229c0: 003fde06 br 2293c <_gp+0xfffe6404> + 229c4: 81c5883a add r2,r16,r7 + 229c8: 11400117 ldw r5,4(r2) + 229cc: 9009883a mov r4,r18 + 229d0: 29400054 ori r5,r5,1 + 229d4: 11400115 stw r5,4(r2) + 229d8: 002f5a40 call 2f5a4 <__malloc_unlock> + 229dc: 80800204 addi r2,r16,8 + 229e0: 003fe006 br 22964 <_gp+0xfffe642c> + 229e4: 9c000217 ldw r16,8(r19) + 229e8: 00bfff04 movi r2,-4 + 229ec: 85800117 ldw r22,4(r16) + 229f0: b0ac703a and r22,r22,r2 + 229f4: b4400336 bltu r22,r17,22a04 <_malloc_r+0x344> + 229f8: b445c83a sub r2,r22,r17 + 229fc: 00c003c4 movi r3,15 + 22a00: 18805d16 blt r3,r2,22b78 <_malloc_r+0x4b8> + 22a04: 05c000f4 movhi r23,3 + 22a08: 008000f4 movhi r2,3 + 22a0c: 109a0b04 addi r2,r2,26668 + 22a10: bdd15104 addi r23,r23,17732 + 22a14: 15400017 ldw r21,0(r2) + 22a18: b8c00017 ldw r3,0(r23) + 22a1c: 00bfffc4 movi r2,-1 + 22a20: 858d883a add r6,r16,r22 + 22a24: 8d6b883a add r21,r17,r21 + 22a28: 1880ea26 beq r3,r2,22dd4 <_malloc_r+0x714> + 22a2c: ad4403c4 addi r21,r21,4111 + 22a30: 00bc0004 movi r2,-4096 + 22a34: a8aa703a and r21,r21,r2 + 22a38: a80b883a mov r5,r21 + 22a3c: 9009883a mov r4,r18 + 22a40: d9800015 stw r6,0(sp) + 22a44: 00231540 call 23154 <_sbrk_r> + 22a48: 1029883a mov r20,r2 + 22a4c: 00bfffc4 movi r2,-1 + 22a50: d9800017 ldw r6,0(sp) + 22a54: a080e826 beq r20,r2,22df8 <_malloc_r+0x738> + 22a58: a180a636 bltu r20,r6,22cf4 <_malloc_r+0x634> + 22a5c: 070000f4 movhi fp,3 + 22a60: e71a1704 addi fp,fp,26716 + 22a64: e0800017 ldw r2,0(fp) + 22a68: a887883a add r3,r21,r2 + 22a6c: e0c00015 stw r3,0(fp) + 22a70: 3500e626 beq r6,r20,22e0c <_malloc_r+0x74c> + 22a74: b9000017 ldw r4,0(r23) + 22a78: 00bfffc4 movi r2,-1 + 22a7c: 2080ee26 beq r4,r2,22e38 <_malloc_r+0x778> + 22a80: a185c83a sub r2,r20,r6 + 22a84: 10c5883a add r2,r2,r3 + 22a88: e0800015 stw r2,0(fp) + 22a8c: a0c001cc andi r3,r20,7 + 22a90: 1800bc26 beq r3,zero,22d84 <_malloc_r+0x6c4> + 22a94: a0e9c83a sub r20,r20,r3 + 22a98: 00840204 movi r2,4104 + 22a9c: a5000204 addi r20,r20,8 + 22aa0: 10c7c83a sub r3,r2,r3 + 22aa4: a545883a add r2,r20,r21 + 22aa8: 1083ffcc andi r2,r2,4095 + 22aac: 18abc83a sub r21,r3,r2 + 22ab0: a80b883a mov r5,r21 + 22ab4: 9009883a mov r4,r18 + 22ab8: 00231540 call 23154 <_sbrk_r> + 22abc: 00ffffc4 movi r3,-1 + 22ac0: 10c0e126 beq r2,r3,22e48 <_malloc_r+0x788> + 22ac4: 1505c83a sub r2,r2,r20 + 22ac8: 1545883a add r2,r2,r21 + 22acc: 10800054 ori r2,r2,1 + 22ad0: e0c00017 ldw r3,0(fp) + 22ad4: 9d000215 stw r20,8(r19) + 22ad8: a0800115 stw r2,4(r20) + 22adc: a8c7883a add r3,r21,r3 + 22ae0: e0c00015 stw r3,0(fp) + 22ae4: 84c00e26 beq r16,r19,22b20 <_malloc_r+0x460> + 22ae8: 018003c4 movi r6,15 + 22aec: 3580a72e bgeu r6,r22,22d8c <_malloc_r+0x6cc> + 22af0: 81400117 ldw r5,4(r16) + 22af4: 013ffe04 movi r4,-8 + 22af8: b0bffd04 addi r2,r22,-12 + 22afc: 1104703a and r2,r2,r4 + 22b00: 2900004c andi r4,r5,1 + 22b04: 2088b03a or r4,r4,r2 + 22b08: 81000115 stw r4,4(r16) + 22b0c: 01400144 movi r5,5 + 22b10: 8089883a add r4,r16,r2 + 22b14: 21400115 stw r5,4(r4) + 22b18: 21400215 stw r5,8(r4) + 22b1c: 3080cd36 bltu r6,r2,22e54 <_malloc_r+0x794> + 22b20: 008000f4 movhi r2,3 + 22b24: 109a0a04 addi r2,r2,26664 + 22b28: 11000017 ldw r4,0(r2) + 22b2c: 20c0012e bgeu r4,r3,22b34 <_malloc_r+0x474> + 22b30: 10c00015 stw r3,0(r2) + 22b34: 008000f4 movhi r2,3 + 22b38: 109a0904 addi r2,r2,26660 + 22b3c: 11000017 ldw r4,0(r2) + 22b40: 9c000217 ldw r16,8(r19) + 22b44: 20c0012e bgeu r4,r3,22b4c <_malloc_r+0x48c> + 22b48: 10c00015 stw r3,0(r2) + 22b4c: 80c00117 ldw r3,4(r16) + 22b50: 00bfff04 movi r2,-4 + 22b54: 1886703a and r3,r3,r2 + 22b58: 1c45c83a sub r2,r3,r17 + 22b5c: 1c400236 bltu r3,r17,22b68 <_malloc_r+0x4a8> + 22b60: 00c003c4 movi r3,15 + 22b64: 18800416 blt r3,r2,22b78 <_malloc_r+0x4b8> + 22b68: 9009883a mov r4,r18 + 22b6c: 002f5a40 call 2f5a4 <__malloc_unlock> + 22b70: 0005883a mov r2,zero + 22b74: 003f7b06 br 22964 <_gp+0xfffe642c> + 22b78: 88c00054 ori r3,r17,1 + 22b7c: 80c00115 stw r3,4(r16) + 22b80: 8463883a add r17,r16,r17 + 22b84: 10800054 ori r2,r2,1 + 22b88: 9c400215 stw r17,8(r19) + 22b8c: 88800115 stw r2,4(r17) + 22b90: 9009883a mov r4,r18 + 22b94: 002f5a40 call 2f5a4 <__malloc_unlock> + 22b98: 80800204 addi r2,r16,8 + 22b9c: 003f7106 br 22964 <_gp+0xfffe642c> + 22ba0: 00c00504 movi r3,20 + 22ba4: 18804a2e bgeu r3,r2,22cd0 <_malloc_r+0x610> + 22ba8: 00c01504 movi r3,84 + 22bac: 18806e36 bltu r3,r2,22d68 <_malloc_r+0x6a8> + 22bb0: 8804d33a srli r2,r17,12 + 22bb4: 12001bc4 addi r8,r2,111 + 22bb8: 11c01b84 addi r7,r2,110 + 22bbc: 4209883a add r4,r8,r8 + 22bc0: 003edd06 br 22738 <_gp+0xfffe6200> + 22bc4: 3804d27a srli r2,r7,9 + 22bc8: 00c00104 movi r3,4 + 22bcc: 1880442e bgeu r3,r2,22ce0 <_malloc_r+0x620> + 22bd0: 00c00504 movi r3,20 + 22bd4: 18808136 bltu r3,r2,22ddc <_malloc_r+0x71c> + 22bd8: 11401704 addi r5,r2,92 + 22bdc: 10c016c4 addi r3,r2,91 + 22be0: 294b883a add r5,r5,r5 + 22be4: 294b883a add r5,r5,r5 + 22be8: 294b883a add r5,r5,r5 + 22bec: 994b883a add r5,r19,r5 + 22bf0: 28800017 ldw r2,0(r5) + 22bf4: 018000f4 movhi r6,3 + 22bf8: 297ffe04 addi r5,r5,-8 + 22bfc: 318aa304 addi r6,r6,10892 + 22c00: 28806526 beq r5,r2,22d98 <_malloc_r+0x6d8> + 22c04: 01bfff04 movi r6,-4 + 22c08: 10c00117 ldw r3,4(r2) + 22c0c: 1986703a and r3,r3,r6 + 22c10: 38c0022e bgeu r7,r3,22c1c <_malloc_r+0x55c> + 22c14: 10800217 ldw r2,8(r2) + 22c18: 28bffb1e bne r5,r2,22c08 <_gp+0xfffe66d0> + 22c1c: 11400317 ldw r5,12(r2) + 22c20: 98c00117 ldw r3,4(r19) + 22c24: 81400315 stw r5,12(r16) + 22c28: 80800215 stw r2,8(r16) + 22c2c: 2c000215 stw r16,8(r5) + 22c30: 14000315 stw r16,12(r2) + 22c34: 003ef806 br 22818 <_gp+0xfffe62e0> + 22c38: 88c00054 ori r3,r17,1 + 22c3c: 80c00115 stw r3,4(r16) + 22c40: 8463883a add r17,r16,r17 + 22c44: 34400515 stw r17,20(r6) + 22c48: 34400415 stw r17,16(r6) + 22c4c: 10c00054 ori r3,r2,1 + 22c50: 8a000315 stw r8,12(r17) + 22c54: 8a000215 stw r8,8(r17) + 22c58: 88c00115 stw r3,4(r17) + 22c5c: 88a3883a add r17,r17,r2 + 22c60: 88800015 stw r2,0(r17) + 22c64: 9009883a mov r4,r18 + 22c68: 002f5a40 call 2f5a4 <__malloc_unlock> + 22c6c: 80800204 addi r2,r16,8 + 22c70: 003f3c06 br 22964 <_gp+0xfffe642c> + 22c74: 30c00117 ldw r3,4(r6) + 22c78: 003ee706 br 22818 <_gp+0xfffe62e0> + 22c7c: 5ac00044 addi r11,r11,1 + 22c80: 588000cc andi r2,r11,3 + 22c84: 31800204 addi r6,r6,8 + 22c88: 103efd1e bne r2,zero,22880 <_gp+0xfffe6348> + 22c8c: 00002406 br 22d20 <_malloc_r+0x660> + 22c90: 14000317 ldw r16,12(r2) + 22c94: 143f251e bne r2,r16,2292c <_gp+0xfffe63f4> + 22c98: 21000084 addi r4,r4,2 + 22c9c: 003ebc06 br 22790 <_gp+0xfffe6258> + 22ca0: 8085883a add r2,r16,r2 + 22ca4: 10c00117 ldw r3,4(r2) + 22ca8: 81000317 ldw r4,12(r16) + 22cac: 81400217 ldw r5,8(r16) + 22cb0: 18c00054 ori r3,r3,1 + 22cb4: 10c00115 stw r3,4(r2) + 22cb8: 29000315 stw r4,12(r5) + 22cbc: 21400215 stw r5,8(r4) + 22cc0: 9009883a mov r4,r18 + 22cc4: 002f5a40 call 2f5a4 <__malloc_unlock> + 22cc8: 80800204 addi r2,r16,8 + 22ccc: 003f2506 br 22964 <_gp+0xfffe642c> + 22cd0: 12001704 addi r8,r2,92 + 22cd4: 11c016c4 addi r7,r2,91 + 22cd8: 4209883a add r4,r8,r8 + 22cdc: 003e9606 br 22738 <_gp+0xfffe6200> + 22ce0: 3804d1ba srli r2,r7,6 + 22ce4: 11400e44 addi r5,r2,57 + 22ce8: 10c00e04 addi r3,r2,56 + 22cec: 294b883a add r5,r5,r5 + 22cf0: 003fbc06 br 22be4 <_gp+0xfffe66ac> + 22cf4: 84ff5926 beq r16,r19,22a5c <_gp+0xfffe6524> + 22cf8: 008000f4 movhi r2,3 + 22cfc: 108aa304 addi r2,r2,10892 + 22d00: 14000217 ldw r16,8(r2) + 22d04: 00bfff04 movi r2,-4 + 22d08: 80c00117 ldw r3,4(r16) + 22d0c: 1886703a and r3,r3,r2 + 22d10: 003f9106 br 22b58 <_gp+0xfffe6620> + 22d14: 60800217 ldw r2,8(r12) + 22d18: 213fffc4 addi r4,r4,-1 + 22d1c: 1300651e bne r2,r12,22eb4 <_malloc_r+0x7f4> + 22d20: 208000cc andi r2,r4,3 + 22d24: 633ffe04 addi r12,r12,-8 + 22d28: 103ffa1e bne r2,zero,22d14 <_gp+0xfffe67dc> + 22d2c: 98800117 ldw r2,4(r19) + 22d30: 0146303a nor r3,zero,r5 + 22d34: 1884703a and r2,r3,r2 + 22d38: 98800115 stw r2,4(r19) + 22d3c: 294b883a add r5,r5,r5 + 22d40: 117f2836 bltu r2,r5,229e4 <_gp+0xfffe64ac> + 22d44: 283f2726 beq r5,zero,229e4 <_gp+0xfffe64ac> + 22d48: 2886703a and r3,r5,r2 + 22d4c: 5809883a mov r4,r11 + 22d50: 183ec31e bne r3,zero,22860 <_gp+0xfffe6328> + 22d54: 294b883a add r5,r5,r5 + 22d58: 2886703a and r3,r5,r2 + 22d5c: 21000104 addi r4,r4,4 + 22d60: 183ffc26 beq r3,zero,22d54 <_gp+0xfffe681c> + 22d64: 003ebe06 br 22860 <_gp+0xfffe6328> + 22d68: 00c05504 movi r3,340 + 22d6c: 18801236 bltu r3,r2,22db8 <_malloc_r+0x6f8> + 22d70: 8804d3fa srli r2,r17,15 + 22d74: 12001e04 addi r8,r2,120 + 22d78: 11c01dc4 addi r7,r2,119 + 22d7c: 4209883a add r4,r8,r8 + 22d80: 003e6d06 br 22738 <_gp+0xfffe6200> + 22d84: 00c40004 movi r3,4096 + 22d88: 003f4606 br 22aa4 <_gp+0xfffe656c> + 22d8c: 00800044 movi r2,1 + 22d90: a0800115 stw r2,4(r20) + 22d94: 003f7406 br 22b68 <_gp+0xfffe6630> + 22d98: 1805d0ba srai r2,r3,2 + 22d9c: 01c00044 movi r7,1 + 22da0: 30c00117 ldw r3,4(r6) + 22da4: 388e983a sll r7,r7,r2 + 22da8: 2805883a mov r2,r5 + 22dac: 38c6b03a or r3,r7,r3 + 22db0: 30c00115 stw r3,4(r6) + 22db4: 003f9b06 br 22c24 <_gp+0xfffe66ec> + 22db8: 00c15504 movi r3,1364 + 22dbc: 18801a36 bltu r3,r2,22e28 <_malloc_r+0x768> + 22dc0: 8804d4ba srli r2,r17,18 + 22dc4: 12001f44 addi r8,r2,125 + 22dc8: 11c01f04 addi r7,r2,124 + 22dcc: 4209883a add r4,r8,r8 + 22dd0: 003e5906 br 22738 <_gp+0xfffe6200> + 22dd4: ad400404 addi r21,r21,16 + 22dd8: 003f1706 br 22a38 <_gp+0xfffe6500> + 22ddc: 00c01504 movi r3,84 + 22de0: 18802336 bltu r3,r2,22e70 <_malloc_r+0x7b0> + 22de4: 3804d33a srli r2,r7,12 + 22de8: 11401bc4 addi r5,r2,111 + 22dec: 10c01b84 addi r3,r2,110 + 22df0: 294b883a add r5,r5,r5 + 22df4: 003f7b06 br 22be4 <_gp+0xfffe66ac> + 22df8: 9c000217 ldw r16,8(r19) + 22dfc: 00bfff04 movi r2,-4 + 22e00: 80c00117 ldw r3,4(r16) + 22e04: 1886703a and r3,r3,r2 + 22e08: 003f5306 br 22b58 <_gp+0xfffe6620> + 22e0c: 3083ffcc andi r2,r6,4095 + 22e10: 103f181e bne r2,zero,22a74 <_gp+0xfffe653c> + 22e14: 99000217 ldw r4,8(r19) + 22e18: b545883a add r2,r22,r21 + 22e1c: 10800054 ori r2,r2,1 + 22e20: 20800115 stw r2,4(r4) + 22e24: 003f3e06 br 22b20 <_gp+0xfffe65e8> + 22e28: 01003f84 movi r4,254 + 22e2c: 02001fc4 movi r8,127 + 22e30: 01c01f84 movi r7,126 + 22e34: 003e4006 br 22738 <_gp+0xfffe6200> + 22e38: 008000f4 movhi r2,3 + 22e3c: 10915104 addi r2,r2,17732 + 22e40: 15000015 stw r20,0(r2) + 22e44: 003f1106 br 22a8c <_gp+0xfffe6554> + 22e48: 00800044 movi r2,1 + 22e4c: 002b883a mov r21,zero + 22e50: 003f1f06 br 22ad0 <_gp+0xfffe6598> + 22e54: 81400204 addi r5,r16,8 + 22e58: 9009883a mov r4,r18 + 22e5c: 00276580 call 27658 <_free_r> + 22e60: 008000f4 movhi r2,3 + 22e64: 109a1704 addi r2,r2,26716 + 22e68: 10c00017 ldw r3,0(r2) + 22e6c: 003f2c06 br 22b20 <_gp+0xfffe65e8> + 22e70: 00c05504 movi r3,340 + 22e74: 18800536 bltu r3,r2,22e8c <_malloc_r+0x7cc> + 22e78: 3804d3fa srli r2,r7,15 + 22e7c: 11401e04 addi r5,r2,120 + 22e80: 10c01dc4 addi r3,r2,119 + 22e84: 294b883a add r5,r5,r5 + 22e88: 003f5606 br 22be4 <_gp+0xfffe66ac> + 22e8c: 00c15504 movi r3,1364 + 22e90: 18800536 bltu r3,r2,22ea8 <_malloc_r+0x7e8> + 22e94: 3804d4ba srli r2,r7,18 + 22e98: 11401f44 addi r5,r2,125 + 22e9c: 10c01f04 addi r3,r2,124 + 22ea0: 294b883a add r5,r5,r5 + 22ea4: 003f4f06 br 22be4 <_gp+0xfffe66ac> + 22ea8: 01403f84 movi r5,254 + 22eac: 00c01f84 movi r3,126 + 22eb0: 003f4c06 br 22be4 <_gp+0xfffe66ac> + 22eb4: 98800117 ldw r2,4(r19) + 22eb8: 003fa006 br 22d3c <_gp+0xfffe6804> + 22ebc: 8808d0fa srli r4,r17,3 + 22ec0: 20800044 addi r2,r4,1 + 22ec4: 1085883a add r2,r2,r2 + 22ec8: 003e9006 br 2290c <_gp+0xfffe63d4> + +00022ecc : + 22ecc: 20c000cc andi r3,r4,3 + 22ed0: 2005883a mov r2,r4 + 22ed4: 18004426 beq r3,zero,22fe8 + 22ed8: 31ffffc4 addi r7,r6,-1 + 22edc: 30004026 beq r6,zero,22fe0 + 22ee0: 2813883a mov r9,r5 + 22ee4: 200d883a mov r6,r4 + 22ee8: 2007883a mov r3,r4 + 22eec: 00000406 br 22f00 + 22ef0: 3a3fffc4 addi r8,r7,-1 + 22ef4: 31800044 addi r6,r6,1 + 22ef8: 38003926 beq r7,zero,22fe0 + 22efc: 400f883a mov r7,r8 + 22f00: 18c00044 addi r3,r3,1 + 22f04: 32400005 stb r9,0(r6) + 22f08: 1a0000cc andi r8,r3,3 + 22f0c: 403ff81e bne r8,zero,22ef0 <_gp+0xfffe69b8> + 22f10: 010000c4 movi r4,3 + 22f14: 21c02d2e bgeu r4,r7,22fcc + 22f18: 29003fcc andi r4,r5,255 + 22f1c: 200c923a slli r6,r4,8 + 22f20: 3108b03a or r4,r6,r4 + 22f24: 200c943a slli r6,r4,16 + 22f28: 218cb03a or r6,r4,r6 + 22f2c: 010003c4 movi r4,15 + 22f30: 21c0182e bgeu r4,r7,22f94 + 22f34: 3b3ffc04 addi r12,r7,-16 + 22f38: 6018d13a srli r12,r12,4 + 22f3c: 1a000104 addi r8,r3,4 + 22f40: 1ac00204 addi r11,r3,8 + 22f44: 6008913a slli r4,r12,4 + 22f48: 1a800304 addi r10,r3,12 + 22f4c: 1813883a mov r9,r3 + 22f50: 21000504 addi r4,r4,20 + 22f54: 1909883a add r4,r3,r4 + 22f58: 49800015 stw r6,0(r9) + 22f5c: 41800015 stw r6,0(r8) + 22f60: 59800015 stw r6,0(r11) + 22f64: 51800015 stw r6,0(r10) + 22f68: 42000404 addi r8,r8,16 + 22f6c: 4a400404 addi r9,r9,16 + 22f70: 5ac00404 addi r11,r11,16 + 22f74: 52800404 addi r10,r10,16 + 22f78: 413ff71e bne r8,r4,22f58 <_gp+0xfffe6a20> + 22f7c: 63000044 addi r12,r12,1 + 22f80: 6018913a slli r12,r12,4 + 22f84: 39c003cc andi r7,r7,15 + 22f88: 010000c4 movi r4,3 + 22f8c: 1b07883a add r3,r3,r12 + 22f90: 21c00e2e bgeu r4,r7,22fcc + 22f94: 1813883a mov r9,r3 + 22f98: 3811883a mov r8,r7 + 22f9c: 010000c4 movi r4,3 + 22fa0: 49800015 stw r6,0(r9) + 22fa4: 423fff04 addi r8,r8,-4 + 22fa8: 4a400104 addi r9,r9,4 + 22fac: 223ffc36 bltu r4,r8,22fa0 <_gp+0xfffe6a68> + 22fb0: 393fff04 addi r4,r7,-4 + 22fb4: 2008d0ba srli r4,r4,2 + 22fb8: 39c000cc andi r7,r7,3 + 22fbc: 21000044 addi r4,r4,1 + 22fc0: 2109883a add r4,r4,r4 + 22fc4: 2109883a add r4,r4,r4 + 22fc8: 1907883a add r3,r3,r4 + 22fcc: 38000526 beq r7,zero,22fe4 + 22fd0: 19cf883a add r7,r3,r7 + 22fd4: 19400005 stb r5,0(r3) + 22fd8: 18c00044 addi r3,r3,1 + 22fdc: 38fffd1e bne r7,r3,22fd4 <_gp+0xfffe6a9c> + 22fe0: f800283a ret + 22fe4: f800283a ret + 22fe8: 2007883a mov r3,r4 + 22fec: 300f883a mov r7,r6 + 22ff0: 003fc706 br 22f10 <_gp+0xfffe69d8> + +00022ff4 <_printf_r>: + 22ff4: defffd04 addi sp,sp,-12 + 22ff8: 2805883a mov r2,r5 + 22ffc: dfc00015 stw ra,0(sp) + 23000: d9800115 stw r6,4(sp) + 23004: d9c00215 stw r7,8(sp) + 23008: 21400217 ldw r5,8(r4) + 2300c: d9c00104 addi r7,sp,4 + 23010: 100d883a mov r6,r2 + 23014: 00232400 call 23240 <___vfprintf_internal_r> + 23018: dfc00017 ldw ra,0(sp) + 2301c: dec00304 addi sp,sp,12 + 23020: f800283a ret + +00023024 : + 23024: defffc04 addi sp,sp,-16 + 23028: dfc00015 stw ra,0(sp) + 2302c: d9400115 stw r5,4(sp) + 23030: d9800215 stw r6,8(sp) + 23034: d9c00315 stw r7,12(sp) + 23038: 008000f4 movhi r2,3 + 2303c: 10915404 addi r2,r2,17744 + 23040: 10800017 ldw r2,0(r2) + 23044: 200b883a mov r5,r4 + 23048: d9800104 addi r6,sp,4 + 2304c: 11000217 ldw r4,8(r2) + 23050: 00254380 call 25438 <__vfprintf_internal> + 23054: dfc00017 ldw ra,0(sp) + 23058: dec00404 addi sp,sp,16 + 2305c: f800283a ret + +00023060 <_putchar_r>: + 23060: 21800217 ldw r6,8(r4) + 23064: 00295c81 jmpi 295c8 <_putc_r> + +00023068 : + 23068: 008000f4 movhi r2,3 + 2306c: 10915404 addi r2,r2,17744 + 23070: 200b883a mov r5,r4 + 23074: 11000017 ldw r4,0(r2) + 23078: 21800217 ldw r6,8(r4) + 2307c: 00295c81 jmpi 295c8 <_putc_r> + +00023080 <_puts_r>: + 23080: defff604 addi sp,sp,-40 + 23084: dc000715 stw r16,28(sp) + 23088: 2021883a mov r16,r4 + 2308c: 2809883a mov r4,r5 + 23090: dc400815 stw r17,32(sp) + 23094: dfc00915 stw ra,36(sp) + 23098: 2823883a mov r17,r5 + 2309c: 00231a80 call 231a8 + 230a0: 10c00044 addi r3,r2,1 + 230a4: d8800115 stw r2,4(sp) + 230a8: 008000f4 movhi r2,3 + 230ac: 1087fb04 addi r2,r2,8172 + 230b0: d8800215 stw r2,8(sp) + 230b4: 00800044 movi r2,1 + 230b8: d8800315 stw r2,12(sp) + 230bc: 00800084 movi r2,2 + 230c0: dc400015 stw r17,0(sp) + 230c4: d8c00615 stw r3,24(sp) + 230c8: dec00415 stw sp,16(sp) + 230cc: d8800515 stw r2,20(sp) + 230d0: 80000226 beq r16,zero,230dc <_puts_r+0x5c> + 230d4: 80800e17 ldw r2,56(r16) + 230d8: 10001426 beq r2,zero,2312c <_puts_r+0xac> + 230dc: 81400217 ldw r5,8(r16) + 230e0: 2880030b ldhu r2,12(r5) + 230e4: 10c8000c andi r3,r2,8192 + 230e8: 1800061e bne r3,zero,23104 <_puts_r+0x84> + 230ec: 29001917 ldw r4,100(r5) + 230f0: 00f7ffc4 movi r3,-8193 + 230f4: 10880014 ori r2,r2,8192 + 230f8: 20c6703a and r3,r4,r3 + 230fc: 2880030d sth r2,12(r5) + 23100: 28c01915 stw r3,100(r5) + 23104: d9800404 addi r6,sp,16 + 23108: 8009883a mov r4,r16 + 2310c: 00279680 call 27968 <__sfvwrite_r> + 23110: 1000091e bne r2,zero,23138 <_puts_r+0xb8> + 23114: 00800284 movi r2,10 + 23118: dfc00917 ldw ra,36(sp) + 2311c: dc400817 ldw r17,32(sp) + 23120: dc000717 ldw r16,28(sp) + 23124: dec00a04 addi sp,sp,40 + 23128: f800283a ret + 2312c: 8009883a mov r4,r16 + 23130: 00274e40 call 274e4 <__sinit> + 23134: 003fe906 br 230dc <_gp+0xfffe6ba4> + 23138: 00bfffc4 movi r2,-1 + 2313c: 003ff606 br 23118 <_gp+0xfffe6be0> + +00023140 : + 23140: 008000f4 movhi r2,3 + 23144: 10915404 addi r2,r2,17744 + 23148: 200b883a mov r5,r4 + 2314c: 11000017 ldw r4,0(r2) + 23150: 00230801 jmpi 23080 <_puts_r> + +00023154 <_sbrk_r>: + 23154: defffd04 addi sp,sp,-12 + 23158: dc000015 stw r16,0(sp) + 2315c: 040000f4 movhi r16,3 + 23160: dc400115 stw r17,4(sp) + 23164: 841a0c04 addi r16,r16,26672 + 23168: 2023883a mov r17,r4 + 2316c: 2809883a mov r4,r5 + 23170: dfc00215 stw ra,8(sp) + 23174: 80000015 stw zero,0(r16) + 23178: 002f7780 call 2f778 + 2317c: 00ffffc4 movi r3,-1 + 23180: 10c00526 beq r2,r3,23198 <_sbrk_r+0x44> + 23184: dfc00217 ldw ra,8(sp) + 23188: dc400117 ldw r17,4(sp) + 2318c: dc000017 ldw r16,0(sp) + 23190: dec00304 addi sp,sp,12 + 23194: f800283a ret + 23198: 80c00017 ldw r3,0(r16) + 2319c: 183ff926 beq r3,zero,23184 <_gp+0xfffe6c4c> + 231a0: 88c00015 stw r3,0(r17) + 231a4: 003ff706 br 23184 <_gp+0xfffe6c4c> + +000231a8 : + 231a8: 208000cc andi r2,r4,3 + 231ac: 10002026 beq r2,zero,23230 + 231b0: 20800007 ldb r2,0(r4) + 231b4: 10002026 beq r2,zero,23238 + 231b8: 2005883a mov r2,r4 + 231bc: 00000206 br 231c8 + 231c0: 10c00007 ldb r3,0(r2) + 231c4: 18001826 beq r3,zero,23228 + 231c8: 10800044 addi r2,r2,1 + 231cc: 10c000cc andi r3,r2,3 + 231d0: 183ffb1e bne r3,zero,231c0 <_gp+0xfffe6c88> + 231d4: 10c00017 ldw r3,0(r2) + 231d8: 01ffbff4 movhi r7,65279 + 231dc: 39ffbfc4 addi r7,r7,-257 + 231e0: 00ca303a nor r5,zero,r3 + 231e4: 01a02074 movhi r6,32897 + 231e8: 19c7883a add r3,r3,r7 + 231ec: 31a02004 addi r6,r6,-32640 + 231f0: 1946703a and r3,r3,r5 + 231f4: 1986703a and r3,r3,r6 + 231f8: 1800091e bne r3,zero,23220 + 231fc: 10800104 addi r2,r2,4 + 23200: 10c00017 ldw r3,0(r2) + 23204: 19cb883a add r5,r3,r7 + 23208: 00c6303a nor r3,zero,r3 + 2320c: 28c6703a and r3,r5,r3 + 23210: 1986703a and r3,r3,r6 + 23214: 183ff926 beq r3,zero,231fc <_gp+0xfffe6cc4> + 23218: 00000106 br 23220 + 2321c: 10800044 addi r2,r2,1 + 23220: 10c00007 ldb r3,0(r2) + 23224: 183ffd1e bne r3,zero,2321c <_gp+0xfffe6ce4> + 23228: 1105c83a sub r2,r2,r4 + 2322c: f800283a ret + 23230: 2005883a mov r2,r4 + 23234: 003fe706 br 231d4 <_gp+0xfffe6c9c> + 23238: 0005883a mov r2,zero + 2323c: f800283a ret + +00023240 <___vfprintf_internal_r>: + 23240: deffb804 addi sp,sp,-288 + 23244: dfc04715 stw ra,284(sp) + 23248: ddc04515 stw r23,276(sp) + 2324c: dd404315 stw r21,268(sp) + 23250: d9002c15 stw r4,176(sp) + 23254: 282f883a mov r23,r5 + 23258: 302b883a mov r21,r6 + 2325c: d9c02d15 stw r7,180(sp) + 23260: df004615 stw fp,280(sp) + 23264: dd804415 stw r22,272(sp) + 23268: dd004215 stw r20,264(sp) + 2326c: dcc04115 stw r19,260(sp) + 23270: dc804015 stw r18,256(sp) + 23274: dc403f15 stw r17,252(sp) + 23278: dc003e15 stw r16,248(sp) + 2327c: 00280580 call 28058 <_localeconv_r> + 23280: 10800017 ldw r2,0(r2) + 23284: 1009883a mov r4,r2 + 23288: d8803415 stw r2,208(sp) + 2328c: 00231a80 call 231a8 + 23290: d8803715 stw r2,220(sp) + 23294: d8802c17 ldw r2,176(sp) + 23298: 10000226 beq r2,zero,232a4 <___vfprintf_internal_r+0x64> + 2329c: 10800e17 ldw r2,56(r2) + 232a0: 1000f926 beq r2,zero,23688 <___vfprintf_internal_r+0x448> + 232a4: b880030b ldhu r2,12(r23) + 232a8: 10c8000c andi r3,r2,8192 + 232ac: 1800061e bne r3,zero,232c8 <___vfprintf_internal_r+0x88> + 232b0: b9001917 ldw r4,100(r23) + 232b4: 00f7ffc4 movi r3,-8193 + 232b8: 10880014 ori r2,r2,8192 + 232bc: 20c6703a and r3,r4,r3 + 232c0: b880030d sth r2,12(r23) + 232c4: b8c01915 stw r3,100(r23) + 232c8: 10c0020c andi r3,r2,8 + 232cc: 1800c126 beq r3,zero,235d4 <___vfprintf_internal_r+0x394> + 232d0: b8c00417 ldw r3,16(r23) + 232d4: 1800bf26 beq r3,zero,235d4 <___vfprintf_internal_r+0x394> + 232d8: 1080068c andi r2,r2,26 + 232dc: 00c00284 movi r3,10 + 232e0: 10c0c426 beq r2,r3,235f4 <___vfprintf_internal_r+0x3b4> + 232e4: d8c00404 addi r3,sp,16 + 232e8: 050000f4 movhi r20,3 + 232ec: d9001e04 addi r4,sp,120 + 232f0: a5080c84 addi r20,r20,8242 + 232f4: d8c01e15 stw r3,120(sp) + 232f8: d8002015 stw zero,128(sp) + 232fc: d8001f15 stw zero,124(sp) + 23300: d8003315 stw zero,204(sp) + 23304: d8003615 stw zero,216(sp) + 23308: d8003815 stw zero,224(sp) + 2330c: 1811883a mov r8,r3 + 23310: d8003915 stw zero,228(sp) + 23314: d8003a15 stw zero,232(sp) + 23318: d8002f15 stw zero,188(sp) + 2331c: d9002815 stw r4,160(sp) + 23320: a8800007 ldb r2,0(r21) + 23324: 10027b26 beq r2,zero,23d14 <___vfprintf_internal_r+0xad4> + 23328: 00c00944 movi r3,37 + 2332c: a821883a mov r16,r21 + 23330: 10c0021e bne r2,r3,2333c <___vfprintf_internal_r+0xfc> + 23334: 00001406 br 23388 <___vfprintf_internal_r+0x148> + 23338: 10c00326 beq r2,r3,23348 <___vfprintf_internal_r+0x108> + 2333c: 84000044 addi r16,r16,1 + 23340: 80800007 ldb r2,0(r16) + 23344: 103ffc1e bne r2,zero,23338 <_gp+0xfffe6e00> + 23348: 8563c83a sub r17,r16,r21 + 2334c: 88000e26 beq r17,zero,23388 <___vfprintf_internal_r+0x148> + 23350: d8c02017 ldw r3,128(sp) + 23354: d8801f17 ldw r2,124(sp) + 23358: 45400015 stw r21,0(r8) + 2335c: 1c47883a add r3,r3,r17 + 23360: 10800044 addi r2,r2,1 + 23364: d8c02015 stw r3,128(sp) + 23368: 44400115 stw r17,4(r8) + 2336c: d8801f15 stw r2,124(sp) + 23370: 00c001c4 movi r3,7 + 23374: 1880a716 blt r3,r2,23614 <___vfprintf_internal_r+0x3d4> + 23378: 42000204 addi r8,r8,8 + 2337c: d9402f17 ldw r5,188(sp) + 23380: 2c4b883a add r5,r5,r17 + 23384: d9402f15 stw r5,188(sp) + 23388: 80800007 ldb r2,0(r16) + 2338c: 1000a826 beq r2,zero,23630 <___vfprintf_internal_r+0x3f0> + 23390: 84400047 ldb r17,1(r16) + 23394: 00bfffc4 movi r2,-1 + 23398: 85400044 addi r21,r16,1 + 2339c: d8002785 stb zero,158(sp) + 233a0: 0007883a mov r3,zero + 233a4: 000f883a mov r7,zero + 233a8: d8802915 stw r2,164(sp) + 233ac: d8003115 stw zero,196(sp) + 233b0: 0025883a mov r18,zero + 233b4: 01401604 movi r5,88 + 233b8: 01800244 movi r6,9 + 233bc: 02800a84 movi r10,42 + 233c0: 02401b04 movi r9,108 + 233c4: ad400044 addi r21,r21,1 + 233c8: 88bff804 addi r2,r17,-32 + 233cc: 28830436 bltu r5,r2,23fe0 <___vfprintf_internal_r+0xda0> + 233d0: 100490ba slli r2,r2,2 + 233d4: 010000b4 movhi r4,2 + 233d8: 210cfa04 addi r4,r4,13288 + 233dc: 1105883a add r2,r2,r4 + 233e0: 10800017 ldw r2,0(r2) + 233e4: 1000683a jmp r2 + 233e8: 00023f00 call 23f0 <__alt_mem_onchip_memory2_0-0x1dc10> + 233ec: 00023fe0 cmpeqi zero,zero,2303 + 233f0: 00023fe0 cmpeqi zero,zero,2303 + 233f4: 00023f20 cmpeqi zero,zero,2300 + 233f8: 00023fe0 cmpeqi zero,zero,2303 + 233fc: 00023fe0 cmpeqi zero,zero,2303 + 23400: 00023fe0 cmpeqi zero,zero,2303 + 23404: 00023fe0 cmpeqi zero,zero,2303 + 23408: 00023fe0 cmpeqi zero,zero,2303 + 2340c: 00023fe0 cmpeqi zero,zero,2303 + 23410: 00023694 movui zero,2266 + 23414: 00023e3c xorhi zero,zero,2296 + 23418: 00023fe0 cmpeqi zero,zero,2303 + 2341c: 0002355c xori zero,zero,2261 + 23420: 000236bc xorhi zero,zero,2266 + 23424: 00023fe0 cmpeqi zero,zero,2303 + 23428: 000236fc xorhi zero,zero,2267 + 2342c: 00023708 cmpgei zero,zero,2268 + 23430: 00023708 cmpgei zero,zero,2268 + 23434: 00023708 cmpgei zero,zero,2268 + 23438: 00023708 cmpgei zero,zero,2268 + 2343c: 00023708 cmpgei zero,zero,2268 + 23440: 00023708 cmpgei zero,zero,2268 + 23444: 00023708 cmpgei zero,zero,2268 + 23448: 00023708 cmpgei zero,zero,2268 + 2344c: 00023708 cmpgei zero,zero,2268 + 23450: 00023fe0 cmpeqi zero,zero,2303 + 23454: 00023fe0 cmpeqi zero,zero,2303 + 23458: 00023fe0 cmpeqi zero,zero,2303 + 2345c: 00023fe0 cmpeqi zero,zero,2303 + 23460: 00023fe0 cmpeqi zero,zero,2303 + 23464: 00023fe0 cmpeqi zero,zero,2303 + 23468: 00023fe0 cmpeqi zero,zero,2303 + 2346c: 00023fe0 cmpeqi zero,zero,2303 + 23470: 00023fe0 cmpeqi zero,zero,2303 + 23474: 00023fe0 cmpeqi zero,zero,2303 + 23478: 0002373c xorhi zero,zero,2268 + 2347c: 000237f8 rdprs zero,zero,2271 + 23480: 00023fe0 cmpeqi zero,zero,2303 + 23484: 000237f8 rdprs zero,zero,2271 + 23488: 00023fe0 cmpeqi zero,zero,2303 + 2348c: 00023fe0 cmpeqi zero,zero,2303 + 23490: 00023fe0 cmpeqi zero,zero,2303 + 23494: 00023fe0 cmpeqi zero,zero,2303 + 23498: 00023898 cmpnei zero,zero,2274 + 2349c: 00023fe0 cmpeqi zero,zero,2303 + 234a0: 00023fe0 cmpeqi zero,zero,2303 + 234a4: 000238a4 muli zero,zero,2274 + 234a8: 00023fe0 cmpeqi zero,zero,2303 + 234ac: 00023fe0 cmpeqi zero,zero,2303 + 234b0: 00023fe0 cmpeqi zero,zero,2303 + 234b4: 00023fe0 cmpeqi zero,zero,2303 + 234b8: 00023fe0 cmpeqi zero,zero,2303 + 234bc: 00023d1c xori zero,zero,2292 + 234c0: 00023fe0 cmpeqi zero,zero,2303 + 234c4: 00023fe0 cmpeqi zero,zero,2303 + 234c8: 00023d7c xorhi zero,zero,2293 + 234cc: 00023fe0 cmpeqi zero,zero,2303 + 234d0: 00023fe0 cmpeqi zero,zero,2303 + 234d4: 00023fe0 cmpeqi zero,zero,2303 + 234d8: 00023fe0 cmpeqi zero,zero,2303 + 234dc: 00023fe0 cmpeqi zero,zero,2303 + 234e0: 00023fe0 cmpeqi zero,zero,2303 + 234e4: 00023fe0 cmpeqi zero,zero,2303 + 234e8: 00023fe0 cmpeqi zero,zero,2303 + 234ec: 00023fe0 cmpeqi zero,zero,2303 + 234f0: 00023fe0 cmpeqi zero,zero,2303 + 234f4: 00023f8c andi zero,zero,2302 + 234f8: 00023f2c andhi zero,zero,2300 + 234fc: 000237f8 rdprs zero,zero,2271 + 23500: 000237f8 rdprs zero,zero,2271 + 23504: 000237f8 rdprs zero,zero,2271 + 23508: 00023f3c xorhi zero,zero,2300 + 2350c: 00023f2c andhi zero,zero,2300 + 23510: 00023fe0 cmpeqi zero,zero,2303 + 23514: 00023fe0 cmpeqi zero,zero,2303 + 23518: 00023f48 cmpgei zero,zero,2301 + 2351c: 00023fe0 cmpeqi zero,zero,2303 + 23520: 00023f58 cmpnei zero,zero,2301 + 23524: 00023e2c andhi zero,zero,2296 + 23528: 00023568 cmpgeui zero,zero,2261 + 2352c: 00023e4c andi zero,zero,2297 + 23530: 00023fe0 cmpeqi zero,zero,2303 + 23534: 00023e58 cmpnei zero,zero,2297 + 23538: 00023fe0 cmpeqi zero,zero,2303 + 2353c: 00023eb4 movhi zero,2298 + 23540: 00023fe0 cmpeqi zero,zero,2303 + 23544: 00023fe0 cmpeqi zero,zero,2303 + 23548: 00023ec4 movi zero,2299 + 2354c: d9003117 ldw r4,196(sp) + 23550: d8802d15 stw r2,180(sp) + 23554: 0109c83a sub r4,zero,r4 + 23558: d9003115 stw r4,196(sp) + 2355c: 94800114 ori r18,r18,4 + 23560: ac400007 ldb r17,0(r21) + 23564: 003f9706 br 233c4 <_gp+0xfffe6e8c> + 23568: 00800c04 movi r2,48 + 2356c: d9002d17 ldw r4,180(sp) + 23570: d9402917 ldw r5,164(sp) + 23574: d8802705 stb r2,156(sp) + 23578: 00801e04 movi r2,120 + 2357c: d8802745 stb r2,157(sp) + 23580: d8002785 stb zero,158(sp) + 23584: 20c00104 addi r3,r4,4 + 23588: 24c00017 ldw r19,0(r4) + 2358c: 002d883a mov r22,zero + 23590: 90800094 ori r2,r18,2 + 23594: 28029a16 blt r5,zero,24000 <___vfprintf_internal_r+0xdc0> + 23598: 00bfdfc4 movi r2,-129 + 2359c: 90a4703a and r18,r18,r2 + 235a0: d8c02d15 stw r3,180(sp) + 235a4: 94800094 ori r18,r18,2 + 235a8: 9802871e bne r19,zero,23fc8 <___vfprintf_internal_r+0xd88> + 235ac: 008000f4 movhi r2,3 + 235b0: 10880504 addi r2,r2,8212 + 235b4: d8803915 stw r2,228(sp) + 235b8: 04401e04 movi r17,120 + 235bc: d8802917 ldw r2,164(sp) + 235c0: 0039883a mov fp,zero + 235c4: 1001e926 beq r2,zero,23d6c <___vfprintf_internal_r+0xb2c> + 235c8: 0027883a mov r19,zero + 235cc: 002d883a mov r22,zero + 235d0: 00020506 br 23de8 <___vfprintf_internal_r+0xba8> + 235d4: d9002c17 ldw r4,176(sp) + 235d8: b80b883a mov r5,r23 + 235dc: 00255100 call 25510 <__swsetup_r> + 235e0: 1005ac1e bne r2,zero,24c94 <___vfprintf_internal_r+0x1a54> + 235e4: b880030b ldhu r2,12(r23) + 235e8: 00c00284 movi r3,10 + 235ec: 1080068c andi r2,r2,26 + 235f0: 10ff3c1e bne r2,r3,232e4 <_gp+0xfffe6dac> + 235f4: b880038f ldh r2,14(r23) + 235f8: 103f3a16 blt r2,zero,232e4 <_gp+0xfffe6dac> + 235fc: d9c02d17 ldw r7,180(sp) + 23600: d9002c17 ldw r4,176(sp) + 23604: a80d883a mov r6,r21 + 23608: b80b883a mov r5,r23 + 2360c: 00254540 call 25454 <__sbprintf> + 23610: 00001106 br 23658 <___vfprintf_internal_r+0x418> + 23614: d9002c17 ldw r4,176(sp) + 23618: d9801e04 addi r6,sp,120 + 2361c: b80b883a mov r5,r23 + 23620: 002a01c0 call 2a01c <__sprint_r> + 23624: 1000081e bne r2,zero,23648 <___vfprintf_internal_r+0x408> + 23628: da000404 addi r8,sp,16 + 2362c: 003f5306 br 2337c <_gp+0xfffe6e44> + 23630: d8802017 ldw r2,128(sp) + 23634: 10000426 beq r2,zero,23648 <___vfprintf_internal_r+0x408> + 23638: d9002c17 ldw r4,176(sp) + 2363c: d9801e04 addi r6,sp,120 + 23640: b80b883a mov r5,r23 + 23644: 002a01c0 call 2a01c <__sprint_r> + 23648: b880030b ldhu r2,12(r23) + 2364c: 1080100c andi r2,r2,64 + 23650: 1005901e bne r2,zero,24c94 <___vfprintf_internal_r+0x1a54> + 23654: d8802f17 ldw r2,188(sp) + 23658: dfc04717 ldw ra,284(sp) + 2365c: df004617 ldw fp,280(sp) + 23660: ddc04517 ldw r23,276(sp) + 23664: dd804417 ldw r22,272(sp) + 23668: dd404317 ldw r21,268(sp) + 2366c: dd004217 ldw r20,264(sp) + 23670: dcc04117 ldw r19,260(sp) + 23674: dc804017 ldw r18,256(sp) + 23678: dc403f17 ldw r17,252(sp) + 2367c: dc003e17 ldw r16,248(sp) + 23680: dec04804 addi sp,sp,288 + 23684: f800283a ret + 23688: d9002c17 ldw r4,176(sp) + 2368c: 00274e40 call 274e4 <__sinit> + 23690: 003f0406 br 232a4 <_gp+0xfffe6d6c> + 23694: d8802d17 ldw r2,180(sp) + 23698: d9002d17 ldw r4,180(sp) + 2369c: 10800017 ldw r2,0(r2) + 236a0: d8803115 stw r2,196(sp) + 236a4: 20800104 addi r2,r4,4 + 236a8: d9003117 ldw r4,196(sp) + 236ac: 203fa716 blt r4,zero,2354c <_gp+0xfffe7014> + 236b0: d8802d15 stw r2,180(sp) + 236b4: ac400007 ldb r17,0(r21) + 236b8: 003f4206 br 233c4 <_gp+0xfffe6e8c> + 236bc: ac400007 ldb r17,0(r21) + 236c0: aac00044 addi r11,r21,1 + 236c4: 8a872826 beq r17,r10,25368 <___vfprintf_internal_r+0x2128> + 236c8: 88bff404 addi r2,r17,-48 + 236cc: 0009883a mov r4,zero + 236d0: 30867d36 bltu r6,r2,250c8 <___vfprintf_internal_r+0x1e88> + 236d4: 5c400007 ldb r17,0(r11) + 236d8: 210002a4 muli r4,r4,10 + 236dc: 5d400044 addi r21,r11,1 + 236e0: a817883a mov r11,r21 + 236e4: 2089883a add r4,r4,r2 + 236e8: 88bff404 addi r2,r17,-48 + 236ec: 30bff92e bgeu r6,r2,236d4 <_gp+0xfffe719c> + 236f0: 2005c916 blt r4,zero,24e18 <___vfprintf_internal_r+0x1bd8> + 236f4: d9002915 stw r4,164(sp) + 236f8: 003f3306 br 233c8 <_gp+0xfffe6e90> + 236fc: 94802014 ori r18,r18,128 + 23700: ac400007 ldb r17,0(r21) + 23704: 003f2f06 br 233c4 <_gp+0xfffe6e8c> + 23708: a809883a mov r4,r21 + 2370c: d8003115 stw zero,196(sp) + 23710: 88bff404 addi r2,r17,-48 + 23714: 0017883a mov r11,zero + 23718: 24400007 ldb r17,0(r4) + 2371c: 5ac002a4 muli r11,r11,10 + 23720: ad400044 addi r21,r21,1 + 23724: a809883a mov r4,r21 + 23728: 12d7883a add r11,r2,r11 + 2372c: 88bff404 addi r2,r17,-48 + 23730: 30bff92e bgeu r6,r2,23718 <_gp+0xfffe71e0> + 23734: dac03115 stw r11,196(sp) + 23738: 003f2306 br 233c8 <_gp+0xfffe6e90> + 2373c: 18c03fcc andi r3,r3,255 + 23740: 18072b1e bne r3,zero,253f0 <___vfprintf_internal_r+0x21b0> + 23744: 94800414 ori r18,r18,16 + 23748: 9080080c andi r2,r18,32 + 2374c: 10037b26 beq r2,zero,2453c <___vfprintf_internal_r+0x12fc> + 23750: d9402d17 ldw r5,180(sp) + 23754: 28800117 ldw r2,4(r5) + 23758: 2cc00017 ldw r19,0(r5) + 2375c: 29400204 addi r5,r5,8 + 23760: d9402d15 stw r5,180(sp) + 23764: 102d883a mov r22,r2 + 23768: 10044b16 blt r2,zero,24898 <___vfprintf_internal_r+0x1658> + 2376c: d9402917 ldw r5,164(sp) + 23770: df002783 ldbu fp,158(sp) + 23774: 2803bc16 blt r5,zero,24668 <___vfprintf_internal_r+0x1428> + 23778: 00ffdfc4 movi r3,-129 + 2377c: 9d84b03a or r2,r19,r22 + 23780: 90e4703a and r18,r18,r3 + 23784: 10017726 beq r2,zero,23d64 <___vfprintf_internal_r+0xb24> + 23788: b0038326 beq r22,zero,24598 <___vfprintf_internal_r+0x1358> + 2378c: dc402a15 stw r17,168(sp) + 23790: dc001e04 addi r16,sp,120 + 23794: b023883a mov r17,r22 + 23798: 402d883a mov r22,r8 + 2379c: 9809883a mov r4,r19 + 237a0: 880b883a mov r5,r17 + 237a4: 01800284 movi r6,10 + 237a8: 000f883a mov r7,zero + 237ac: 002c4140 call 2c414 <__umoddi3> + 237b0: 10800c04 addi r2,r2,48 + 237b4: 843fffc4 addi r16,r16,-1 + 237b8: 9809883a mov r4,r19 + 237bc: 880b883a mov r5,r17 + 237c0: 80800005 stb r2,0(r16) + 237c4: 01800284 movi r6,10 + 237c8: 000f883a mov r7,zero + 237cc: 002be9c0 call 2be9c <__udivdi3> + 237d0: 1027883a mov r19,r2 + 237d4: 10c4b03a or r2,r2,r3 + 237d8: 1823883a mov r17,r3 + 237dc: 103fef1e bne r2,zero,2379c <_gp+0xfffe7264> + 237e0: d8c02817 ldw r3,160(sp) + 237e4: dc402a17 ldw r17,168(sp) + 237e8: b011883a mov r8,r22 + 237ec: 1c07c83a sub r3,r3,r16 + 237f0: d8c02e15 stw r3,184(sp) + 237f4: 00005906 br 2395c <___vfprintf_internal_r+0x71c> + 237f8: 18c03fcc andi r3,r3,255 + 237fc: 1806fa1e bne r3,zero,253e8 <___vfprintf_internal_r+0x21a8> + 23800: 9080020c andi r2,r18,8 + 23804: 10048a26 beq r2,zero,24a30 <___vfprintf_internal_r+0x17f0> + 23808: d8c02d17 ldw r3,180(sp) + 2380c: d9002d17 ldw r4,180(sp) + 23810: d9402d17 ldw r5,180(sp) + 23814: 18c00017 ldw r3,0(r3) + 23818: 21000117 ldw r4,4(r4) + 2381c: 29400204 addi r5,r5,8 + 23820: d8c03615 stw r3,216(sp) + 23824: d9003815 stw r4,224(sp) + 23828: d9402d15 stw r5,180(sp) + 2382c: d9003617 ldw r4,216(sp) + 23830: d9403817 ldw r5,224(sp) + 23834: da003d15 stw r8,244(sp) + 23838: 04000044 movi r16,1 + 2383c: 0029c940 call 29c94 <__fpclassifyd> + 23840: da003d17 ldw r8,244(sp) + 23844: 14041f1e bne r2,r16,248c4 <___vfprintf_internal_r+0x1684> + 23848: d9003617 ldw r4,216(sp) + 2384c: d9403817 ldw r5,224(sp) + 23850: 000d883a mov r6,zero + 23854: 000f883a mov r7,zero + 23858: 002dc440 call 2dc44 <__ledf2> + 2385c: da003d17 ldw r8,244(sp) + 23860: 1005be16 blt r2,zero,24f5c <___vfprintf_internal_r+0x1d1c> + 23864: df002783 ldbu fp,158(sp) + 23868: 008011c4 movi r2,71 + 2386c: 1445330e bge r2,r17,24d3c <___vfprintf_internal_r+0x1afc> + 23870: 040000f4 movhi r16,3 + 23874: 8407fd04 addi r16,r16,8180 + 23878: 00c000c4 movi r3,3 + 2387c: 00bfdfc4 movi r2,-129 + 23880: d8c02a15 stw r3,168(sp) + 23884: 90a4703a and r18,r18,r2 + 23888: d8c02e15 stw r3,184(sp) + 2388c: d8002915 stw zero,164(sp) + 23890: d8003215 stw zero,200(sp) + 23894: 00003706 br 23974 <___vfprintf_internal_r+0x734> + 23898: 94800214 ori r18,r18,8 + 2389c: ac400007 ldb r17,0(r21) + 238a0: 003ec806 br 233c4 <_gp+0xfffe6e8c> + 238a4: 18c03fcc andi r3,r3,255 + 238a8: 1806db1e bne r3,zero,25418 <___vfprintf_internal_r+0x21d8> + 238ac: 94800414 ori r18,r18,16 + 238b0: 9080080c andi r2,r18,32 + 238b4: 1002d826 beq r2,zero,24418 <___vfprintf_internal_r+0x11d8> + 238b8: d9402d17 ldw r5,180(sp) + 238bc: d8c02917 ldw r3,164(sp) + 238c0: d8002785 stb zero,158(sp) + 238c4: 28800204 addi r2,r5,8 + 238c8: 2cc00017 ldw r19,0(r5) + 238cc: 2d800117 ldw r22,4(r5) + 238d0: 18048f16 blt r3,zero,24b10 <___vfprintf_internal_r+0x18d0> + 238d4: 013fdfc4 movi r4,-129 + 238d8: 9d86b03a or r3,r19,r22 + 238dc: d8802d15 stw r2,180(sp) + 238e0: 9124703a and r18,r18,r4 + 238e4: 1802d91e bne r3,zero,2444c <___vfprintf_internal_r+0x120c> + 238e8: d8c02917 ldw r3,164(sp) + 238ec: 0039883a mov fp,zero + 238f0: 1805c326 beq r3,zero,25000 <___vfprintf_internal_r+0x1dc0> + 238f4: 0027883a mov r19,zero + 238f8: 002d883a mov r22,zero + 238fc: dc001e04 addi r16,sp,120 + 23900: 9806d0fa srli r3,r19,3 + 23904: b008977a slli r4,r22,29 + 23908: b02cd0fa srli r22,r22,3 + 2390c: 9cc001cc andi r19,r19,7 + 23910: 98800c04 addi r2,r19,48 + 23914: 843fffc4 addi r16,r16,-1 + 23918: 20e6b03a or r19,r4,r3 + 2391c: 80800005 stb r2,0(r16) + 23920: 9d86b03a or r3,r19,r22 + 23924: 183ff61e bne r3,zero,23900 <_gp+0xfffe73c8> + 23928: 90c0004c andi r3,r18,1 + 2392c: 18013b26 beq r3,zero,23e1c <___vfprintf_internal_r+0xbdc> + 23930: 10803fcc andi r2,r2,255 + 23934: 1080201c xori r2,r2,128 + 23938: 10bfe004 addi r2,r2,-128 + 2393c: 00c00c04 movi r3,48 + 23940: 10c13626 beq r2,r3,23e1c <___vfprintf_internal_r+0xbdc> + 23944: 80ffffc5 stb r3,-1(r16) + 23948: d8c02817 ldw r3,160(sp) + 2394c: 80bfffc4 addi r2,r16,-1 + 23950: 1021883a mov r16,r2 + 23954: 1887c83a sub r3,r3,r2 + 23958: d8c02e15 stw r3,184(sp) + 2395c: d8802e17 ldw r2,184(sp) + 23960: d9002917 ldw r4,164(sp) + 23964: 1100010e bge r2,r4,2396c <___vfprintf_internal_r+0x72c> + 23968: 2005883a mov r2,r4 + 2396c: d8802a15 stw r2,168(sp) + 23970: d8003215 stw zero,200(sp) + 23974: e7003fcc andi fp,fp,255 + 23978: e700201c xori fp,fp,128 + 2397c: e73fe004 addi fp,fp,-128 + 23980: e0000326 beq fp,zero,23990 <___vfprintf_internal_r+0x750> + 23984: d8c02a17 ldw r3,168(sp) + 23988: 18c00044 addi r3,r3,1 + 2398c: d8c02a15 stw r3,168(sp) + 23990: 90c0008c andi r3,r18,2 + 23994: d8c02b15 stw r3,172(sp) + 23998: 18000326 beq r3,zero,239a8 <___vfprintf_internal_r+0x768> + 2399c: d8c02a17 ldw r3,168(sp) + 239a0: 18c00084 addi r3,r3,2 + 239a4: d8c02a15 stw r3,168(sp) + 239a8: 90c0210c andi r3,r18,132 + 239ac: d8c03015 stw r3,192(sp) + 239b0: 1801a31e bne r3,zero,24040 <___vfprintf_internal_r+0xe00> + 239b4: d9003117 ldw r4,196(sp) + 239b8: d8c02a17 ldw r3,168(sp) + 239bc: 20e7c83a sub r19,r4,r3 + 239c0: 04c19f0e bge zero,r19,24040 <___vfprintf_internal_r+0xe00> + 239c4: 02400404 movi r9,16 + 239c8: d8c02017 ldw r3,128(sp) + 239cc: d8801f17 ldw r2,124(sp) + 239d0: 4cc50d0e bge r9,r19,24e08 <___vfprintf_internal_r+0x1bc8> + 239d4: 014000f4 movhi r5,3 + 239d8: 29481084 addi r5,r5,8258 + 239dc: dc403b15 stw r17,236(sp) + 239e0: d9403515 stw r5,212(sp) + 239e4: 9823883a mov r17,r19 + 239e8: 482d883a mov r22,r9 + 239ec: 9027883a mov r19,r18 + 239f0: 070001c4 movi fp,7 + 239f4: 8025883a mov r18,r16 + 239f8: dc002c17 ldw r16,176(sp) + 239fc: 00000306 br 23a0c <___vfprintf_internal_r+0x7cc> + 23a00: 8c7ffc04 addi r17,r17,-16 + 23a04: 42000204 addi r8,r8,8 + 23a08: b440130e bge r22,r17,23a58 <___vfprintf_internal_r+0x818> + 23a0c: 010000f4 movhi r4,3 + 23a10: 18c00404 addi r3,r3,16 + 23a14: 10800044 addi r2,r2,1 + 23a18: 21081084 addi r4,r4,8258 + 23a1c: 41000015 stw r4,0(r8) + 23a20: 45800115 stw r22,4(r8) + 23a24: d8c02015 stw r3,128(sp) + 23a28: d8801f15 stw r2,124(sp) + 23a2c: e0bff40e bge fp,r2,23a00 <_gp+0xfffe74c8> + 23a30: d9801e04 addi r6,sp,120 + 23a34: b80b883a mov r5,r23 + 23a38: 8009883a mov r4,r16 + 23a3c: 002a01c0 call 2a01c <__sprint_r> + 23a40: 103f011e bne r2,zero,23648 <_gp+0xfffe7110> + 23a44: 8c7ffc04 addi r17,r17,-16 + 23a48: d8c02017 ldw r3,128(sp) + 23a4c: d8801f17 ldw r2,124(sp) + 23a50: da000404 addi r8,sp,16 + 23a54: b47fed16 blt r22,r17,23a0c <_gp+0xfffe74d4> + 23a58: 9021883a mov r16,r18 + 23a5c: 9825883a mov r18,r19 + 23a60: 8827883a mov r19,r17 + 23a64: dc403b17 ldw r17,236(sp) + 23a68: d9403517 ldw r5,212(sp) + 23a6c: 98c7883a add r3,r19,r3 + 23a70: 10800044 addi r2,r2,1 + 23a74: 41400015 stw r5,0(r8) + 23a78: 44c00115 stw r19,4(r8) + 23a7c: d8c02015 stw r3,128(sp) + 23a80: d8801f15 stw r2,124(sp) + 23a84: 010001c4 movi r4,7 + 23a88: 2082a316 blt r4,r2,24518 <___vfprintf_internal_r+0x12d8> + 23a8c: df002787 ldb fp,158(sp) + 23a90: 42000204 addi r8,r8,8 + 23a94: e0000c26 beq fp,zero,23ac8 <___vfprintf_internal_r+0x888> + 23a98: d8801f17 ldw r2,124(sp) + 23a9c: d9002784 addi r4,sp,158 + 23aa0: 18c00044 addi r3,r3,1 + 23aa4: 10800044 addi r2,r2,1 + 23aa8: 41000015 stw r4,0(r8) + 23aac: 01000044 movi r4,1 + 23ab0: 41000115 stw r4,4(r8) + 23ab4: d8c02015 stw r3,128(sp) + 23ab8: d8801f15 stw r2,124(sp) + 23abc: 010001c4 movi r4,7 + 23ac0: 20823c16 blt r4,r2,243b4 <___vfprintf_internal_r+0x1174> + 23ac4: 42000204 addi r8,r8,8 + 23ac8: d8802b17 ldw r2,172(sp) + 23acc: 10000c26 beq r2,zero,23b00 <___vfprintf_internal_r+0x8c0> + 23ad0: d8801f17 ldw r2,124(sp) + 23ad4: d9002704 addi r4,sp,156 + 23ad8: 18c00084 addi r3,r3,2 + 23adc: 10800044 addi r2,r2,1 + 23ae0: 41000015 stw r4,0(r8) + 23ae4: 01000084 movi r4,2 + 23ae8: 41000115 stw r4,4(r8) + 23aec: d8c02015 stw r3,128(sp) + 23af0: d8801f15 stw r2,124(sp) + 23af4: 010001c4 movi r4,7 + 23af8: 20823616 blt r4,r2,243d4 <___vfprintf_internal_r+0x1194> + 23afc: 42000204 addi r8,r8,8 + 23b00: d9003017 ldw r4,192(sp) + 23b04: 00802004 movi r2,128 + 23b08: 20819926 beq r4,r2,24170 <___vfprintf_internal_r+0xf30> + 23b0c: d9402917 ldw r5,164(sp) + 23b10: d8802e17 ldw r2,184(sp) + 23b14: 28adc83a sub r22,r5,r2 + 23b18: 0580310e bge zero,r22,23be0 <___vfprintf_internal_r+0x9a0> + 23b1c: 07000404 movi fp,16 + 23b20: d8801f17 ldw r2,124(sp) + 23b24: e584140e bge fp,r22,24b78 <___vfprintf_internal_r+0x1938> + 23b28: 014000f4 movhi r5,3 + 23b2c: 29480c84 addi r5,r5,8242 + 23b30: dc402915 stw r17,164(sp) + 23b34: d9402b15 stw r5,172(sp) + 23b38: b023883a mov r17,r22 + 23b3c: 04c001c4 movi r19,7 + 23b40: a82d883a mov r22,r21 + 23b44: 902b883a mov r21,r18 + 23b48: 8025883a mov r18,r16 + 23b4c: dc002c17 ldw r16,176(sp) + 23b50: 00000306 br 23b60 <___vfprintf_internal_r+0x920> + 23b54: 8c7ffc04 addi r17,r17,-16 + 23b58: 42000204 addi r8,r8,8 + 23b5c: e440110e bge fp,r17,23ba4 <___vfprintf_internal_r+0x964> + 23b60: 18c00404 addi r3,r3,16 + 23b64: 10800044 addi r2,r2,1 + 23b68: 45000015 stw r20,0(r8) + 23b6c: 47000115 stw fp,4(r8) + 23b70: d8c02015 stw r3,128(sp) + 23b74: d8801f15 stw r2,124(sp) + 23b78: 98bff60e bge r19,r2,23b54 <_gp+0xfffe761c> + 23b7c: d9801e04 addi r6,sp,120 + 23b80: b80b883a mov r5,r23 + 23b84: 8009883a mov r4,r16 + 23b88: 002a01c0 call 2a01c <__sprint_r> + 23b8c: 103eae1e bne r2,zero,23648 <_gp+0xfffe7110> + 23b90: 8c7ffc04 addi r17,r17,-16 + 23b94: d8c02017 ldw r3,128(sp) + 23b98: d8801f17 ldw r2,124(sp) + 23b9c: da000404 addi r8,sp,16 + 23ba0: e47fef16 blt fp,r17,23b60 <_gp+0xfffe7628> + 23ba4: 9021883a mov r16,r18 + 23ba8: a825883a mov r18,r21 + 23bac: b02b883a mov r21,r22 + 23bb0: 882d883a mov r22,r17 + 23bb4: dc402917 ldw r17,164(sp) + 23bb8: d9002b17 ldw r4,172(sp) + 23bbc: 1d87883a add r3,r3,r22 + 23bc0: 10800044 addi r2,r2,1 + 23bc4: 41000015 stw r4,0(r8) + 23bc8: 45800115 stw r22,4(r8) + 23bcc: d8c02015 stw r3,128(sp) + 23bd0: d8801f15 stw r2,124(sp) + 23bd4: 010001c4 movi r4,7 + 23bd8: 2081ee16 blt r4,r2,24394 <___vfprintf_internal_r+0x1154> + 23bdc: 42000204 addi r8,r8,8 + 23be0: 9080400c andi r2,r18,256 + 23be4: 1001181e bne r2,zero,24048 <___vfprintf_internal_r+0xe08> + 23be8: d9402e17 ldw r5,184(sp) + 23bec: d8801f17 ldw r2,124(sp) + 23bf0: 44000015 stw r16,0(r8) + 23bf4: 1947883a add r3,r3,r5 + 23bf8: 10800044 addi r2,r2,1 + 23bfc: 41400115 stw r5,4(r8) + 23c00: d8c02015 stw r3,128(sp) + 23c04: d8801f15 stw r2,124(sp) + 23c08: 010001c4 movi r4,7 + 23c0c: 2081d316 blt r4,r2,2435c <___vfprintf_internal_r+0x111c> + 23c10: 42000204 addi r8,r8,8 + 23c14: 9480010c andi r18,r18,4 + 23c18: 90003226 beq r18,zero,23ce4 <___vfprintf_internal_r+0xaa4> + 23c1c: d9403117 ldw r5,196(sp) + 23c20: d8802a17 ldw r2,168(sp) + 23c24: 28a1c83a sub r16,r5,r2 + 23c28: 04002e0e bge zero,r16,23ce4 <___vfprintf_internal_r+0xaa4> + 23c2c: 04400404 movi r17,16 + 23c30: d8801f17 ldw r2,124(sp) + 23c34: 8c04a20e bge r17,r16,24ec0 <___vfprintf_internal_r+0x1c80> + 23c38: 014000f4 movhi r5,3 + 23c3c: 29481084 addi r5,r5,8258 + 23c40: d9403515 stw r5,212(sp) + 23c44: 048001c4 movi r18,7 + 23c48: dcc02c17 ldw r19,176(sp) + 23c4c: 00000306 br 23c5c <___vfprintf_internal_r+0xa1c> + 23c50: 843ffc04 addi r16,r16,-16 + 23c54: 42000204 addi r8,r8,8 + 23c58: 8c00130e bge r17,r16,23ca8 <___vfprintf_internal_r+0xa68> + 23c5c: 010000f4 movhi r4,3 + 23c60: 18c00404 addi r3,r3,16 + 23c64: 10800044 addi r2,r2,1 + 23c68: 21081084 addi r4,r4,8258 + 23c6c: 41000015 stw r4,0(r8) + 23c70: 44400115 stw r17,4(r8) + 23c74: d8c02015 stw r3,128(sp) + 23c78: d8801f15 stw r2,124(sp) + 23c7c: 90bff40e bge r18,r2,23c50 <_gp+0xfffe7718> + 23c80: d9801e04 addi r6,sp,120 + 23c84: b80b883a mov r5,r23 + 23c88: 9809883a mov r4,r19 + 23c8c: 002a01c0 call 2a01c <__sprint_r> + 23c90: 103e6d1e bne r2,zero,23648 <_gp+0xfffe7110> + 23c94: 843ffc04 addi r16,r16,-16 + 23c98: d8c02017 ldw r3,128(sp) + 23c9c: d8801f17 ldw r2,124(sp) + 23ca0: da000404 addi r8,sp,16 + 23ca4: 8c3fed16 blt r17,r16,23c5c <_gp+0xfffe7724> + 23ca8: d9403517 ldw r5,212(sp) + 23cac: 1c07883a add r3,r3,r16 + 23cb0: 10800044 addi r2,r2,1 + 23cb4: 41400015 stw r5,0(r8) + 23cb8: 44000115 stw r16,4(r8) + 23cbc: d8c02015 stw r3,128(sp) + 23cc0: d8801f15 stw r2,124(sp) + 23cc4: 010001c4 movi r4,7 + 23cc8: 2080060e bge r4,r2,23ce4 <___vfprintf_internal_r+0xaa4> + 23ccc: d9002c17 ldw r4,176(sp) + 23cd0: d9801e04 addi r6,sp,120 + 23cd4: b80b883a mov r5,r23 + 23cd8: 002a01c0 call 2a01c <__sprint_r> + 23cdc: 103e5a1e bne r2,zero,23648 <_gp+0xfffe7110> + 23ce0: d8c02017 ldw r3,128(sp) + 23ce4: d8803117 ldw r2,196(sp) + 23ce8: d9002a17 ldw r4,168(sp) + 23cec: 1100010e bge r2,r4,23cf4 <___vfprintf_internal_r+0xab4> + 23cf0: 2005883a mov r2,r4 + 23cf4: d9402f17 ldw r5,188(sp) + 23cf8: 288b883a add r5,r5,r2 + 23cfc: d9402f15 stw r5,188(sp) + 23d00: 18019e1e bne r3,zero,2437c <___vfprintf_internal_r+0x113c> + 23d04: a8800007 ldb r2,0(r21) + 23d08: d8001f15 stw zero,124(sp) + 23d0c: da000404 addi r8,sp,16 + 23d10: 103d851e bne r2,zero,23328 <_gp+0xfffe6df0> + 23d14: a821883a mov r16,r21 + 23d18: 003d9b06 br 23388 <_gp+0xfffe6e50> + 23d1c: 18c03fcc andi r3,r3,255 + 23d20: 1805c11e bne r3,zero,25428 <___vfprintf_internal_r+0x21e8> + 23d24: 94800414 ori r18,r18,16 + 23d28: 9080080c andi r2,r18,32 + 23d2c: 10020c26 beq r2,zero,24560 <___vfprintf_internal_r+0x1320> + 23d30: d8802d17 ldw r2,180(sp) + 23d34: d9002917 ldw r4,164(sp) + 23d38: d8002785 stb zero,158(sp) + 23d3c: 10c00204 addi r3,r2,8 + 23d40: 14c00017 ldw r19,0(r2) + 23d44: 15800117 ldw r22,4(r2) + 23d48: 20040f16 blt r4,zero,24d88 <___vfprintf_internal_r+0x1b48> + 23d4c: 013fdfc4 movi r4,-129 + 23d50: 9d84b03a or r2,r19,r22 + 23d54: d8c02d15 stw r3,180(sp) + 23d58: 9124703a and r18,r18,r4 + 23d5c: 0039883a mov fp,zero + 23d60: 103e891e bne r2,zero,23788 <_gp+0xfffe7250> + 23d64: d9002917 ldw r4,164(sp) + 23d68: 2002c11e bne r4,zero,24870 <___vfprintf_internal_r+0x1630> + 23d6c: d8002915 stw zero,164(sp) + 23d70: d8002e15 stw zero,184(sp) + 23d74: dc001e04 addi r16,sp,120 + 23d78: 003ef806 br 2395c <_gp+0xfffe7424> + 23d7c: 18c03fcc andi r3,r3,255 + 23d80: 18059d1e bne r3,zero,253f8 <___vfprintf_internal_r+0x21b8> + 23d84: 014000f4 movhi r5,3 + 23d88: 29480004 addi r5,r5,8192 + 23d8c: d9403915 stw r5,228(sp) + 23d90: 9080080c andi r2,r18,32 + 23d94: 10005226 beq r2,zero,23ee0 <___vfprintf_internal_r+0xca0> + 23d98: d8802d17 ldw r2,180(sp) + 23d9c: 14c00017 ldw r19,0(r2) + 23da0: 15800117 ldw r22,4(r2) + 23da4: 10800204 addi r2,r2,8 + 23da8: d8802d15 stw r2,180(sp) + 23dac: 9080004c andi r2,r18,1 + 23db0: 10019026 beq r2,zero,243f4 <___vfprintf_internal_r+0x11b4> + 23db4: 9d84b03a or r2,r19,r22 + 23db8: 10036926 beq r2,zero,24b60 <___vfprintf_internal_r+0x1920> + 23dbc: d8c02917 ldw r3,164(sp) + 23dc0: 00800c04 movi r2,48 + 23dc4: d8802705 stb r2,156(sp) + 23dc8: dc402745 stb r17,157(sp) + 23dcc: d8002785 stb zero,158(sp) + 23dd0: 90800094 ori r2,r18,2 + 23dd4: 18045d16 blt r3,zero,24f4c <___vfprintf_internal_r+0x1d0c> + 23dd8: 00bfdfc4 movi r2,-129 + 23ddc: 90a4703a and r18,r18,r2 + 23de0: 94800094 ori r18,r18,2 + 23de4: 0039883a mov fp,zero + 23de8: d9003917 ldw r4,228(sp) + 23dec: dc001e04 addi r16,sp,120 + 23df0: 988003cc andi r2,r19,15 + 23df4: b006973a slli r3,r22,28 + 23df8: 2085883a add r2,r4,r2 + 23dfc: 9826d13a srli r19,r19,4 + 23e00: 10800003 ldbu r2,0(r2) + 23e04: b02cd13a srli r22,r22,4 + 23e08: 843fffc4 addi r16,r16,-1 + 23e0c: 1ce6b03a or r19,r3,r19 + 23e10: 80800005 stb r2,0(r16) + 23e14: 9d84b03a or r2,r19,r22 + 23e18: 103ff51e bne r2,zero,23df0 <_gp+0xfffe78b8> + 23e1c: d8c02817 ldw r3,160(sp) + 23e20: 1c07c83a sub r3,r3,r16 + 23e24: d8c02e15 stw r3,184(sp) + 23e28: 003ecc06 br 2395c <_gp+0xfffe7424> + 23e2c: 18c03fcc andi r3,r3,255 + 23e30: 183e9f26 beq r3,zero,238b0 <_gp+0xfffe7378> + 23e34: d9c02785 stb r7,158(sp) + 23e38: 003e9d06 br 238b0 <_gp+0xfffe7378> + 23e3c: 00c00044 movi r3,1 + 23e40: 01c00ac4 movi r7,43 + 23e44: ac400007 ldb r17,0(r21) + 23e48: 003d5e06 br 233c4 <_gp+0xfffe6e8c> + 23e4c: 94800814 ori r18,r18,32 + 23e50: ac400007 ldb r17,0(r21) + 23e54: 003d5b06 br 233c4 <_gp+0xfffe6e8c> + 23e58: d8c02d17 ldw r3,180(sp) + 23e5c: d8002785 stb zero,158(sp) + 23e60: 1c000017 ldw r16,0(r3) + 23e64: 1cc00104 addi r19,r3,4 + 23e68: 80041926 beq r16,zero,24ed0 <___vfprintf_internal_r+0x1c90> + 23e6c: d9002917 ldw r4,164(sp) + 23e70: 2003d016 blt r4,zero,24db4 <___vfprintf_internal_r+0x1b74> + 23e74: 200d883a mov r6,r4 + 23e78: 000b883a mov r5,zero + 23e7c: 8009883a mov r4,r16 + 23e80: da003d15 stw r8,244(sp) + 23e84: 00282440 call 28244 + 23e88: da003d17 ldw r8,244(sp) + 23e8c: 10045426 beq r2,zero,24fe0 <___vfprintf_internal_r+0x1da0> + 23e90: 1405c83a sub r2,r2,r16 + 23e94: d8802e15 stw r2,184(sp) + 23e98: 1003cc16 blt r2,zero,24dcc <___vfprintf_internal_r+0x1b8c> + 23e9c: df002783 ldbu fp,158(sp) + 23ea0: d8802a15 stw r2,168(sp) + 23ea4: dcc02d15 stw r19,180(sp) + 23ea8: d8002915 stw zero,164(sp) + 23eac: d8003215 stw zero,200(sp) + 23eb0: 003eb006 br 23974 <_gp+0xfffe743c> + 23eb4: 18c03fcc andi r3,r3,255 + 23eb8: 183f9b26 beq r3,zero,23d28 <_gp+0xfffe77f0> + 23ebc: d9c02785 stb r7,158(sp) + 23ec0: 003f9906 br 23d28 <_gp+0xfffe77f0> + 23ec4: 18c03fcc andi r3,r3,255 + 23ec8: 1805551e bne r3,zero,25420 <___vfprintf_internal_r+0x21e0> + 23ecc: 014000f4 movhi r5,3 + 23ed0: 29480504 addi r5,r5,8212 + 23ed4: d9403915 stw r5,228(sp) + 23ed8: 9080080c andi r2,r18,32 + 23edc: 103fae1e bne r2,zero,23d98 <_gp+0xfffe7860> + 23ee0: 9080040c andi r2,r18,16 + 23ee4: 1002de26 beq r2,zero,24a60 <___vfprintf_internal_r+0x1820> + 23ee8: d8c02d17 ldw r3,180(sp) + 23eec: 002d883a mov r22,zero + 23ef0: 1cc00017 ldw r19,0(r3) + 23ef4: 18c00104 addi r3,r3,4 + 23ef8: d8c02d15 stw r3,180(sp) + 23efc: 003fab06 br 23dac <_gp+0xfffe7874> + 23f00: 38803fcc andi r2,r7,255 + 23f04: 1080201c xori r2,r2,128 + 23f08: 10bfe004 addi r2,r2,-128 + 23f0c: 1002d21e bne r2,zero,24a58 <___vfprintf_internal_r+0x1818> + 23f10: 00c00044 movi r3,1 + 23f14: 01c00804 movi r7,32 + 23f18: ac400007 ldb r17,0(r21) + 23f1c: 003d2906 br 233c4 <_gp+0xfffe6e8c> + 23f20: 94800054 ori r18,r18,1 + 23f24: ac400007 ldb r17,0(r21) + 23f28: 003d2606 br 233c4 <_gp+0xfffe6e8c> + 23f2c: 18c03fcc andi r3,r3,255 + 23f30: 183e0526 beq r3,zero,23748 <_gp+0xfffe7210> + 23f34: d9c02785 stb r7,158(sp) + 23f38: 003e0306 br 23748 <_gp+0xfffe7210> + 23f3c: 94801014 ori r18,r18,64 + 23f40: ac400007 ldb r17,0(r21) + 23f44: 003d1f06 br 233c4 <_gp+0xfffe6e8c> + 23f48: ac400007 ldb r17,0(r21) + 23f4c: 8a438726 beq r17,r9,24d6c <___vfprintf_internal_r+0x1b2c> + 23f50: 94800414 ori r18,r18,16 + 23f54: 003d1b06 br 233c4 <_gp+0xfffe6e8c> + 23f58: 18c03fcc andi r3,r3,255 + 23f5c: 1805341e bne r3,zero,25430 <___vfprintf_internal_r+0x21f0> + 23f60: 9080080c andi r2,r18,32 + 23f64: 1002cd26 beq r2,zero,24a9c <___vfprintf_internal_r+0x185c> + 23f68: d9402d17 ldw r5,180(sp) + 23f6c: d9002f17 ldw r4,188(sp) + 23f70: 28800017 ldw r2,0(r5) + 23f74: 2007d7fa srai r3,r4,31 + 23f78: 29400104 addi r5,r5,4 + 23f7c: d9402d15 stw r5,180(sp) + 23f80: 11000015 stw r4,0(r2) + 23f84: 10c00115 stw r3,4(r2) + 23f88: 003ce506 br 23320 <_gp+0xfffe6de8> + 23f8c: d8c02d17 ldw r3,180(sp) + 23f90: d9002d17 ldw r4,180(sp) + 23f94: d8002785 stb zero,158(sp) + 23f98: 18800017 ldw r2,0(r3) + 23f9c: 21000104 addi r4,r4,4 + 23fa0: 00c00044 movi r3,1 + 23fa4: d8c02a15 stw r3,168(sp) + 23fa8: d8801405 stb r2,80(sp) + 23fac: d9002d15 stw r4,180(sp) + 23fb0: d8c02e15 stw r3,184(sp) + 23fb4: d8002915 stw zero,164(sp) + 23fb8: d8003215 stw zero,200(sp) + 23fbc: dc001404 addi r16,sp,80 + 23fc0: 0039883a mov fp,zero + 23fc4: 003e7206 br 23990 <_gp+0xfffe7458> + 23fc8: 010000f4 movhi r4,3 + 23fcc: 21080504 addi r4,r4,8212 + 23fd0: 0039883a mov fp,zero + 23fd4: d9003915 stw r4,228(sp) + 23fd8: 04401e04 movi r17,120 + 23fdc: 003f8206 br 23de8 <_gp+0xfffe78b0> + 23fe0: 18c03fcc andi r3,r3,255 + 23fe4: 1805061e bne r3,zero,25400 <___vfprintf_internal_r+0x21c0> + 23fe8: 883d9126 beq r17,zero,23630 <_gp+0xfffe70f8> + 23fec: 00c00044 movi r3,1 + 23ff0: d8c02a15 stw r3,168(sp) + 23ff4: dc401405 stb r17,80(sp) + 23ff8: d8002785 stb zero,158(sp) + 23ffc: 003fec06 br 23fb0 <_gp+0xfffe7a78> + 24000: 014000f4 movhi r5,3 + 24004: 29480504 addi r5,r5,8212 + 24008: d9403915 stw r5,228(sp) + 2400c: d8c02d15 stw r3,180(sp) + 24010: 1025883a mov r18,r2 + 24014: 04401e04 movi r17,120 + 24018: 9d84b03a or r2,r19,r22 + 2401c: 1000fc1e bne r2,zero,24410 <___vfprintf_internal_r+0x11d0> + 24020: 0039883a mov fp,zero + 24024: 00800084 movi r2,2 + 24028: 10803fcc andi r2,r2,255 + 2402c: 00c00044 movi r3,1 + 24030: 10c20f26 beq r2,r3,24870 <___vfprintf_internal_r+0x1630> + 24034: 00c00084 movi r3,2 + 24038: 10fd6326 beq r2,r3,235c8 <_gp+0xfffe7090> + 2403c: 003e2d06 br 238f4 <_gp+0xfffe73bc> + 24040: d8c02017 ldw r3,128(sp) + 24044: 003e9306 br 23a94 <_gp+0xfffe755c> + 24048: 00801944 movi r2,101 + 2404c: 14407e0e bge r2,r17,24248 <___vfprintf_internal_r+0x1008> + 24050: d9003617 ldw r4,216(sp) + 24054: d9403817 ldw r5,224(sp) + 24058: 000d883a mov r6,zero + 2405c: 000f883a mov r7,zero + 24060: d8c03c15 stw r3,240(sp) + 24064: da003d15 stw r8,244(sp) + 24068: 002dae00 call 2dae0 <__eqdf2> + 2406c: d8c03c17 ldw r3,240(sp) + 24070: da003d17 ldw r8,244(sp) + 24074: 1000f71e bne r2,zero,24454 <___vfprintf_internal_r+0x1214> + 24078: d8801f17 ldw r2,124(sp) + 2407c: 010000f4 movhi r4,3 + 24080: 21080c04 addi r4,r4,8240 + 24084: 18c00044 addi r3,r3,1 + 24088: 10800044 addi r2,r2,1 + 2408c: 41000015 stw r4,0(r8) + 24090: 01000044 movi r4,1 + 24094: 41000115 stw r4,4(r8) + 24098: d8c02015 stw r3,128(sp) + 2409c: d8801f15 stw r2,124(sp) + 240a0: 010001c4 movi r4,7 + 240a4: 2082b816 blt r4,r2,24b88 <___vfprintf_internal_r+0x1948> + 240a8: 42000204 addi r8,r8,8 + 240ac: d8802617 ldw r2,152(sp) + 240b0: d9403317 ldw r5,204(sp) + 240b4: 11400216 blt r2,r5,240c0 <___vfprintf_internal_r+0xe80> + 240b8: 9080004c andi r2,r18,1 + 240bc: 103ed526 beq r2,zero,23c14 <_gp+0xfffe76dc> + 240c0: d8803717 ldw r2,220(sp) + 240c4: d9003417 ldw r4,208(sp) + 240c8: d9403717 ldw r5,220(sp) + 240cc: 1887883a add r3,r3,r2 + 240d0: d8801f17 ldw r2,124(sp) + 240d4: 41000015 stw r4,0(r8) + 240d8: 41400115 stw r5,4(r8) + 240dc: 10800044 addi r2,r2,1 + 240e0: d8c02015 stw r3,128(sp) + 240e4: d8801f15 stw r2,124(sp) + 240e8: 010001c4 movi r4,7 + 240ec: 20832916 blt r4,r2,24d94 <___vfprintf_internal_r+0x1b54> + 240f0: 42000204 addi r8,r8,8 + 240f4: d8803317 ldw r2,204(sp) + 240f8: 143fffc4 addi r16,r2,-1 + 240fc: 043ec50e bge zero,r16,23c14 <_gp+0xfffe76dc> + 24100: 04400404 movi r17,16 + 24104: d8801f17 ldw r2,124(sp) + 24108: 8c00880e bge r17,r16,2432c <___vfprintf_internal_r+0x10ec> + 2410c: 014000f4 movhi r5,3 + 24110: 29480c84 addi r5,r5,8242 + 24114: d9402b15 stw r5,172(sp) + 24118: 058001c4 movi r22,7 + 2411c: dcc02c17 ldw r19,176(sp) + 24120: 00000306 br 24130 <___vfprintf_internal_r+0xef0> + 24124: 42000204 addi r8,r8,8 + 24128: 843ffc04 addi r16,r16,-16 + 2412c: 8c00820e bge r17,r16,24338 <___vfprintf_internal_r+0x10f8> + 24130: 18c00404 addi r3,r3,16 + 24134: 10800044 addi r2,r2,1 + 24138: 45000015 stw r20,0(r8) + 2413c: 44400115 stw r17,4(r8) + 24140: d8c02015 stw r3,128(sp) + 24144: d8801f15 stw r2,124(sp) + 24148: b0bff60e bge r22,r2,24124 <_gp+0xfffe7bec> + 2414c: d9801e04 addi r6,sp,120 + 24150: b80b883a mov r5,r23 + 24154: 9809883a mov r4,r19 + 24158: 002a01c0 call 2a01c <__sprint_r> + 2415c: 103d3a1e bne r2,zero,23648 <_gp+0xfffe7110> + 24160: d8c02017 ldw r3,128(sp) + 24164: d8801f17 ldw r2,124(sp) + 24168: da000404 addi r8,sp,16 + 2416c: 003fee06 br 24128 <_gp+0xfffe7bf0> + 24170: d9403117 ldw r5,196(sp) + 24174: d8802a17 ldw r2,168(sp) + 24178: 28adc83a sub r22,r5,r2 + 2417c: 05be630e bge zero,r22,23b0c <_gp+0xfffe75d4> + 24180: 07000404 movi fp,16 + 24184: d8801f17 ldw r2,124(sp) + 24188: e5838f0e bge fp,r22,24fc8 <___vfprintf_internal_r+0x1d88> + 2418c: 014000f4 movhi r5,3 + 24190: 29480c84 addi r5,r5,8242 + 24194: dc403015 stw r17,192(sp) + 24198: d9402b15 stw r5,172(sp) + 2419c: b023883a mov r17,r22 + 241a0: 04c001c4 movi r19,7 + 241a4: a82d883a mov r22,r21 + 241a8: 902b883a mov r21,r18 + 241ac: 8025883a mov r18,r16 + 241b0: dc002c17 ldw r16,176(sp) + 241b4: 00000306 br 241c4 <___vfprintf_internal_r+0xf84> + 241b8: 8c7ffc04 addi r17,r17,-16 + 241bc: 42000204 addi r8,r8,8 + 241c0: e440110e bge fp,r17,24208 <___vfprintf_internal_r+0xfc8> + 241c4: 18c00404 addi r3,r3,16 + 241c8: 10800044 addi r2,r2,1 + 241cc: 45000015 stw r20,0(r8) + 241d0: 47000115 stw fp,4(r8) + 241d4: d8c02015 stw r3,128(sp) + 241d8: d8801f15 stw r2,124(sp) + 241dc: 98bff60e bge r19,r2,241b8 <_gp+0xfffe7c80> + 241e0: d9801e04 addi r6,sp,120 + 241e4: b80b883a mov r5,r23 + 241e8: 8009883a mov r4,r16 + 241ec: 002a01c0 call 2a01c <__sprint_r> + 241f0: 103d151e bne r2,zero,23648 <_gp+0xfffe7110> + 241f4: 8c7ffc04 addi r17,r17,-16 + 241f8: d8c02017 ldw r3,128(sp) + 241fc: d8801f17 ldw r2,124(sp) + 24200: da000404 addi r8,sp,16 + 24204: e47fef16 blt fp,r17,241c4 <_gp+0xfffe7c8c> + 24208: 9021883a mov r16,r18 + 2420c: a825883a mov r18,r21 + 24210: b02b883a mov r21,r22 + 24214: 882d883a mov r22,r17 + 24218: dc403017 ldw r17,192(sp) + 2421c: d9002b17 ldw r4,172(sp) + 24220: 1d87883a add r3,r3,r22 + 24224: 10800044 addi r2,r2,1 + 24228: 41000015 stw r4,0(r8) + 2422c: 45800115 stw r22,4(r8) + 24230: d8c02015 stw r3,128(sp) + 24234: d8801f15 stw r2,124(sp) + 24238: 010001c4 movi r4,7 + 2423c: 20818e16 blt r4,r2,24878 <___vfprintf_internal_r+0x1638> + 24240: 42000204 addi r8,r8,8 + 24244: 003e3106 br 23b0c <_gp+0xfffe75d4> + 24248: d9403317 ldw r5,204(sp) + 2424c: 00800044 movi r2,1 + 24250: 18c00044 addi r3,r3,1 + 24254: 1141530e bge r2,r5,247a4 <___vfprintf_internal_r+0x1564> + 24258: dc401f17 ldw r17,124(sp) + 2425c: 00800044 movi r2,1 + 24260: 40800115 stw r2,4(r8) + 24264: 8c400044 addi r17,r17,1 + 24268: 44000015 stw r16,0(r8) + 2426c: d8c02015 stw r3,128(sp) + 24270: dc401f15 stw r17,124(sp) + 24274: 008001c4 movi r2,7 + 24278: 14416b16 blt r2,r17,24828 <___vfprintf_internal_r+0x15e8> + 2427c: 42000204 addi r8,r8,8 + 24280: d8803717 ldw r2,220(sp) + 24284: d9003417 ldw r4,208(sp) + 24288: 8c400044 addi r17,r17,1 + 2428c: 10c7883a add r3,r2,r3 + 24290: 40800115 stw r2,4(r8) + 24294: 41000015 stw r4,0(r8) + 24298: d8c02015 stw r3,128(sp) + 2429c: dc401f15 stw r17,124(sp) + 242a0: 008001c4 movi r2,7 + 242a4: 14416916 blt r2,r17,2484c <___vfprintf_internal_r+0x160c> + 242a8: 45800204 addi r22,r8,8 + 242ac: d9003617 ldw r4,216(sp) + 242b0: d9403817 ldw r5,224(sp) + 242b4: 000d883a mov r6,zero + 242b8: 000f883a mov r7,zero + 242bc: d8c03c15 stw r3,240(sp) + 242c0: 002dae00 call 2dae0 <__eqdf2> + 242c4: d8c03c17 ldw r3,240(sp) + 242c8: 1000bc26 beq r2,zero,245bc <___vfprintf_internal_r+0x137c> + 242cc: d9403317 ldw r5,204(sp) + 242d0: 84000044 addi r16,r16,1 + 242d4: 8c400044 addi r17,r17,1 + 242d8: 28bfffc4 addi r2,r5,-1 + 242dc: 1887883a add r3,r3,r2 + 242e0: b0800115 stw r2,4(r22) + 242e4: b4000015 stw r16,0(r22) + 242e8: d8c02015 stw r3,128(sp) + 242ec: dc401f15 stw r17,124(sp) + 242f0: 008001c4 movi r2,7 + 242f4: 14414316 blt r2,r17,24804 <___vfprintf_internal_r+0x15c4> + 242f8: b5800204 addi r22,r22,8 + 242fc: d9003a17 ldw r4,232(sp) + 24300: df0022c4 addi fp,sp,139 + 24304: 8c400044 addi r17,r17,1 + 24308: 20c7883a add r3,r4,r3 + 2430c: b7000015 stw fp,0(r22) + 24310: b1000115 stw r4,4(r22) + 24314: d8c02015 stw r3,128(sp) + 24318: dc401f15 stw r17,124(sp) + 2431c: 008001c4 movi r2,7 + 24320: 14400e16 blt r2,r17,2435c <___vfprintf_internal_r+0x111c> + 24324: b2000204 addi r8,r22,8 + 24328: 003e3a06 br 23c14 <_gp+0xfffe76dc> + 2432c: 010000f4 movhi r4,3 + 24330: 21080c84 addi r4,r4,8242 + 24334: d9002b15 stw r4,172(sp) + 24338: d9002b17 ldw r4,172(sp) + 2433c: 1c07883a add r3,r3,r16 + 24340: 44000115 stw r16,4(r8) + 24344: 41000015 stw r4,0(r8) + 24348: 10800044 addi r2,r2,1 + 2434c: d8c02015 stw r3,128(sp) + 24350: d8801f15 stw r2,124(sp) + 24354: 010001c4 movi r4,7 + 24358: 20be2d0e bge r4,r2,23c10 <_gp+0xfffe76d8> + 2435c: d9002c17 ldw r4,176(sp) + 24360: d9801e04 addi r6,sp,120 + 24364: b80b883a mov r5,r23 + 24368: 002a01c0 call 2a01c <__sprint_r> + 2436c: 103cb61e bne r2,zero,23648 <_gp+0xfffe7110> + 24370: d8c02017 ldw r3,128(sp) + 24374: da000404 addi r8,sp,16 + 24378: 003e2606 br 23c14 <_gp+0xfffe76dc> + 2437c: d9002c17 ldw r4,176(sp) + 24380: d9801e04 addi r6,sp,120 + 24384: b80b883a mov r5,r23 + 24388: 002a01c0 call 2a01c <__sprint_r> + 2438c: 103e5d26 beq r2,zero,23d04 <_gp+0xfffe77cc> + 24390: 003cad06 br 23648 <_gp+0xfffe7110> + 24394: d9002c17 ldw r4,176(sp) + 24398: d9801e04 addi r6,sp,120 + 2439c: b80b883a mov r5,r23 + 243a0: 002a01c0 call 2a01c <__sprint_r> + 243a4: 103ca81e bne r2,zero,23648 <_gp+0xfffe7110> + 243a8: d8c02017 ldw r3,128(sp) + 243ac: da000404 addi r8,sp,16 + 243b0: 003e0b06 br 23be0 <_gp+0xfffe76a8> + 243b4: d9002c17 ldw r4,176(sp) + 243b8: d9801e04 addi r6,sp,120 + 243bc: b80b883a mov r5,r23 + 243c0: 002a01c0 call 2a01c <__sprint_r> + 243c4: 103ca01e bne r2,zero,23648 <_gp+0xfffe7110> + 243c8: d8c02017 ldw r3,128(sp) + 243cc: da000404 addi r8,sp,16 + 243d0: 003dbd06 br 23ac8 <_gp+0xfffe7590> + 243d4: d9002c17 ldw r4,176(sp) + 243d8: d9801e04 addi r6,sp,120 + 243dc: b80b883a mov r5,r23 + 243e0: 002a01c0 call 2a01c <__sprint_r> + 243e4: 103c981e bne r2,zero,23648 <_gp+0xfffe7110> + 243e8: d8c02017 ldw r3,128(sp) + 243ec: da000404 addi r8,sp,16 + 243f0: 003dc306 br 23b00 <_gp+0xfffe75c8> + 243f4: d8802917 ldw r2,164(sp) + 243f8: d8002785 stb zero,158(sp) + 243fc: 103f0616 blt r2,zero,24018 <_gp+0xfffe7ae0> + 24400: 00ffdfc4 movi r3,-129 + 24404: 9d84b03a or r2,r19,r22 + 24408: 90e4703a and r18,r18,r3 + 2440c: 103c6b26 beq r2,zero,235bc <_gp+0xfffe7084> + 24410: 0039883a mov fp,zero + 24414: 003e7406 br 23de8 <_gp+0xfffe78b0> + 24418: 9080040c andi r2,r18,16 + 2441c: 1001b326 beq r2,zero,24aec <___vfprintf_internal_r+0x18ac> + 24420: d9002d17 ldw r4,180(sp) + 24424: d9402917 ldw r5,164(sp) + 24428: d8002785 stb zero,158(sp) + 2442c: 20800104 addi r2,r4,4 + 24430: 24c00017 ldw r19,0(r4) + 24434: 002d883a mov r22,zero + 24438: 2801b516 blt r5,zero,24b10 <___vfprintf_internal_r+0x18d0> + 2443c: 00ffdfc4 movi r3,-129 + 24440: d8802d15 stw r2,180(sp) + 24444: 90e4703a and r18,r18,r3 + 24448: 983d2726 beq r19,zero,238e8 <_gp+0xfffe73b0> + 2444c: 0039883a mov fp,zero + 24450: 003d2a06 br 238fc <_gp+0xfffe73c4> + 24454: dc402617 ldw r17,152(sp) + 24458: 0441d30e bge zero,r17,24ba8 <___vfprintf_internal_r+0x1968> + 2445c: dc403217 ldw r17,200(sp) + 24460: d8803317 ldw r2,204(sp) + 24464: 1440010e bge r2,r17,2446c <___vfprintf_internal_r+0x122c> + 24468: 1023883a mov r17,r2 + 2446c: 04400a0e bge zero,r17,24498 <___vfprintf_internal_r+0x1258> + 24470: d8801f17 ldw r2,124(sp) + 24474: 1c47883a add r3,r3,r17 + 24478: 44000015 stw r16,0(r8) + 2447c: 10800044 addi r2,r2,1 + 24480: 44400115 stw r17,4(r8) + 24484: d8c02015 stw r3,128(sp) + 24488: d8801f15 stw r2,124(sp) + 2448c: 010001c4 movi r4,7 + 24490: 20826516 blt r4,r2,24e28 <___vfprintf_internal_r+0x1be8> + 24494: 42000204 addi r8,r8,8 + 24498: 88026116 blt r17,zero,24e20 <___vfprintf_internal_r+0x1be0> + 2449c: d9003217 ldw r4,200(sp) + 244a0: 2463c83a sub r17,r4,r17 + 244a4: 04407b0e bge zero,r17,24694 <___vfprintf_internal_r+0x1454> + 244a8: 05800404 movi r22,16 + 244ac: d8801f17 ldw r2,124(sp) + 244b0: b4419d0e bge r22,r17,24b28 <___vfprintf_internal_r+0x18e8> + 244b4: 010000f4 movhi r4,3 + 244b8: 21080c84 addi r4,r4,8242 + 244bc: d9002b15 stw r4,172(sp) + 244c0: 070001c4 movi fp,7 + 244c4: dcc02c17 ldw r19,176(sp) + 244c8: 00000306 br 244d8 <___vfprintf_internal_r+0x1298> + 244cc: 42000204 addi r8,r8,8 + 244d0: 8c7ffc04 addi r17,r17,-16 + 244d4: b441970e bge r22,r17,24b34 <___vfprintf_internal_r+0x18f4> + 244d8: 18c00404 addi r3,r3,16 + 244dc: 10800044 addi r2,r2,1 + 244e0: 45000015 stw r20,0(r8) + 244e4: 45800115 stw r22,4(r8) + 244e8: d8c02015 stw r3,128(sp) + 244ec: d8801f15 stw r2,124(sp) + 244f0: e0bff60e bge fp,r2,244cc <_gp+0xfffe7f94> + 244f4: d9801e04 addi r6,sp,120 + 244f8: b80b883a mov r5,r23 + 244fc: 9809883a mov r4,r19 + 24500: 002a01c0 call 2a01c <__sprint_r> + 24504: 103c501e bne r2,zero,23648 <_gp+0xfffe7110> + 24508: d8c02017 ldw r3,128(sp) + 2450c: d8801f17 ldw r2,124(sp) + 24510: da000404 addi r8,sp,16 + 24514: 003fee06 br 244d0 <_gp+0xfffe7f98> + 24518: d9002c17 ldw r4,176(sp) + 2451c: d9801e04 addi r6,sp,120 + 24520: b80b883a mov r5,r23 + 24524: 002a01c0 call 2a01c <__sprint_r> + 24528: 103c471e bne r2,zero,23648 <_gp+0xfffe7110> + 2452c: d8c02017 ldw r3,128(sp) + 24530: df002787 ldb fp,158(sp) + 24534: da000404 addi r8,sp,16 + 24538: 003d5606 br 23a94 <_gp+0xfffe755c> + 2453c: 9080040c andi r2,r18,16 + 24540: 10016126 beq r2,zero,24ac8 <___vfprintf_internal_r+0x1888> + 24544: d8802d17 ldw r2,180(sp) + 24548: 14c00017 ldw r19,0(r2) + 2454c: 10800104 addi r2,r2,4 + 24550: d8802d15 stw r2,180(sp) + 24554: 982dd7fa srai r22,r19,31 + 24558: b005883a mov r2,r22 + 2455c: 003c8206 br 23768 <_gp+0xfffe7230> + 24560: 9080040c andi r2,r18,16 + 24564: 10003526 beq r2,zero,2463c <___vfprintf_internal_r+0x13fc> + 24568: d9402d17 ldw r5,180(sp) + 2456c: d8c02917 ldw r3,164(sp) + 24570: d8002785 stb zero,158(sp) + 24574: 28800104 addi r2,r5,4 + 24578: 2cc00017 ldw r19,0(r5) + 2457c: 002d883a mov r22,zero + 24580: 18003716 blt r3,zero,24660 <___vfprintf_internal_r+0x1420> + 24584: 00ffdfc4 movi r3,-129 + 24588: d8802d15 stw r2,180(sp) + 2458c: 90e4703a and r18,r18,r3 + 24590: 0039883a mov fp,zero + 24594: 983df326 beq r19,zero,23d64 <_gp+0xfffe782c> + 24598: 00800244 movi r2,9 + 2459c: 14fc7b36 bltu r2,r19,2378c <_gp+0xfffe7254> + 245a0: d8c02817 ldw r3,160(sp) + 245a4: dc001dc4 addi r16,sp,119 + 245a8: 9cc00c04 addi r19,r19,48 + 245ac: 1c07c83a sub r3,r3,r16 + 245b0: dcc01dc5 stb r19,119(sp) + 245b4: d8c02e15 stw r3,184(sp) + 245b8: 003ce806 br 2395c <_gp+0xfffe7424> + 245bc: d8803317 ldw r2,204(sp) + 245c0: 143fffc4 addi r16,r2,-1 + 245c4: 043f4d0e bge zero,r16,242fc <_gp+0xfffe7dc4> + 245c8: 07000404 movi fp,16 + 245cc: e400810e bge fp,r16,247d4 <___vfprintf_internal_r+0x1594> + 245d0: 014000f4 movhi r5,3 + 245d4: 29480c84 addi r5,r5,8242 + 245d8: d9402b15 stw r5,172(sp) + 245dc: 01c001c4 movi r7,7 + 245e0: dcc02c17 ldw r19,176(sp) + 245e4: 00000306 br 245f4 <___vfprintf_internal_r+0x13b4> + 245e8: b5800204 addi r22,r22,8 + 245ec: 843ffc04 addi r16,r16,-16 + 245f0: e4007b0e bge fp,r16,247e0 <___vfprintf_internal_r+0x15a0> + 245f4: 18c00404 addi r3,r3,16 + 245f8: 8c400044 addi r17,r17,1 + 245fc: b5000015 stw r20,0(r22) + 24600: b7000115 stw fp,4(r22) + 24604: d8c02015 stw r3,128(sp) + 24608: dc401f15 stw r17,124(sp) + 2460c: 3c7ff60e bge r7,r17,245e8 <_gp+0xfffe80b0> + 24610: d9801e04 addi r6,sp,120 + 24614: b80b883a mov r5,r23 + 24618: 9809883a mov r4,r19 + 2461c: d9c03c15 stw r7,240(sp) + 24620: 002a01c0 call 2a01c <__sprint_r> + 24624: d9c03c17 ldw r7,240(sp) + 24628: 103c071e bne r2,zero,23648 <_gp+0xfffe7110> + 2462c: d8c02017 ldw r3,128(sp) + 24630: dc401f17 ldw r17,124(sp) + 24634: dd800404 addi r22,sp,16 + 24638: 003fec06 br 245ec <_gp+0xfffe80b4> + 2463c: 9080100c andi r2,r18,64 + 24640: d8002785 stb zero,158(sp) + 24644: 10010e26 beq r2,zero,24a80 <___vfprintf_internal_r+0x1840> + 24648: d9002d17 ldw r4,180(sp) + 2464c: d9402917 ldw r5,164(sp) + 24650: 002d883a mov r22,zero + 24654: 20800104 addi r2,r4,4 + 24658: 24c0000b ldhu r19,0(r4) + 2465c: 283fc90e bge r5,zero,24584 <_gp+0xfffe804c> + 24660: d8802d15 stw r2,180(sp) + 24664: 0039883a mov fp,zero + 24668: 9d84b03a or r2,r19,r22 + 2466c: 103c461e bne r2,zero,23788 <_gp+0xfffe7250> + 24670: 00800044 movi r2,1 + 24674: 003e6c06 br 24028 <_gp+0xfffe7af0> + 24678: d9002c17 ldw r4,176(sp) + 2467c: d9801e04 addi r6,sp,120 + 24680: b80b883a mov r5,r23 + 24684: 002a01c0 call 2a01c <__sprint_r> + 24688: 103bef1e bne r2,zero,23648 <_gp+0xfffe7110> + 2468c: d8c02017 ldw r3,128(sp) + 24690: da000404 addi r8,sp,16 + 24694: d9003217 ldw r4,200(sp) + 24698: d8802617 ldw r2,152(sp) + 2469c: d9403317 ldw r5,204(sp) + 246a0: 8123883a add r17,r16,r4 + 246a4: 11400216 blt r2,r5,246b0 <___vfprintf_internal_r+0x1470> + 246a8: 9100004c andi r4,r18,1 + 246ac: 20000d26 beq r4,zero,246e4 <___vfprintf_internal_r+0x14a4> + 246b0: d9003717 ldw r4,220(sp) + 246b4: d9403417 ldw r5,208(sp) + 246b8: 1907883a add r3,r3,r4 + 246bc: d9001f17 ldw r4,124(sp) + 246c0: 41400015 stw r5,0(r8) + 246c4: d9403717 ldw r5,220(sp) + 246c8: 21000044 addi r4,r4,1 + 246cc: d8c02015 stw r3,128(sp) + 246d0: 41400115 stw r5,4(r8) + 246d4: d9001f15 stw r4,124(sp) + 246d8: 014001c4 movi r5,7 + 246dc: 2901e816 blt r5,r4,24e80 <___vfprintf_internal_r+0x1c40> + 246e0: 42000204 addi r8,r8,8 + 246e4: d9003317 ldw r4,204(sp) + 246e8: 8121883a add r16,r16,r4 + 246ec: 2085c83a sub r2,r4,r2 + 246f0: 8461c83a sub r16,r16,r17 + 246f4: 1400010e bge r2,r16,246fc <___vfprintf_internal_r+0x14bc> + 246f8: 1021883a mov r16,r2 + 246fc: 04000a0e bge zero,r16,24728 <___vfprintf_internal_r+0x14e8> + 24700: d9001f17 ldw r4,124(sp) + 24704: 1c07883a add r3,r3,r16 + 24708: 44400015 stw r17,0(r8) + 2470c: 21000044 addi r4,r4,1 + 24710: 44000115 stw r16,4(r8) + 24714: d8c02015 stw r3,128(sp) + 24718: d9001f15 stw r4,124(sp) + 2471c: 014001c4 movi r5,7 + 24720: 2901fb16 blt r5,r4,24f10 <___vfprintf_internal_r+0x1cd0> + 24724: 42000204 addi r8,r8,8 + 24728: 8001f716 blt r16,zero,24f08 <___vfprintf_internal_r+0x1cc8> + 2472c: 1421c83a sub r16,r2,r16 + 24730: 043d380e bge zero,r16,23c14 <_gp+0xfffe76dc> + 24734: 04400404 movi r17,16 + 24738: d8801f17 ldw r2,124(sp) + 2473c: 8c3efb0e bge r17,r16,2432c <_gp+0xfffe7df4> + 24740: 014000f4 movhi r5,3 + 24744: 29480c84 addi r5,r5,8242 + 24748: d9402b15 stw r5,172(sp) + 2474c: 058001c4 movi r22,7 + 24750: dcc02c17 ldw r19,176(sp) + 24754: 00000306 br 24764 <___vfprintf_internal_r+0x1524> + 24758: 42000204 addi r8,r8,8 + 2475c: 843ffc04 addi r16,r16,-16 + 24760: 8c3ef50e bge r17,r16,24338 <_gp+0xfffe7e00> + 24764: 18c00404 addi r3,r3,16 + 24768: 10800044 addi r2,r2,1 + 2476c: 45000015 stw r20,0(r8) + 24770: 44400115 stw r17,4(r8) + 24774: d8c02015 stw r3,128(sp) + 24778: d8801f15 stw r2,124(sp) + 2477c: b0bff60e bge r22,r2,24758 <_gp+0xfffe8220> + 24780: d9801e04 addi r6,sp,120 + 24784: b80b883a mov r5,r23 + 24788: 9809883a mov r4,r19 + 2478c: 002a01c0 call 2a01c <__sprint_r> + 24790: 103bad1e bne r2,zero,23648 <_gp+0xfffe7110> + 24794: d8c02017 ldw r3,128(sp) + 24798: d8801f17 ldw r2,124(sp) + 2479c: da000404 addi r8,sp,16 + 247a0: 003fee06 br 2475c <_gp+0xfffe8224> + 247a4: 9088703a and r4,r18,r2 + 247a8: 203eab1e bne r4,zero,24258 <_gp+0xfffe7d20> + 247ac: dc401f17 ldw r17,124(sp) + 247b0: 40800115 stw r2,4(r8) + 247b4: 44000015 stw r16,0(r8) + 247b8: 8c400044 addi r17,r17,1 + 247bc: d8c02015 stw r3,128(sp) + 247c0: dc401f15 stw r17,124(sp) + 247c4: 008001c4 movi r2,7 + 247c8: 14400e16 blt r2,r17,24804 <___vfprintf_internal_r+0x15c4> + 247cc: 45800204 addi r22,r8,8 + 247d0: 003eca06 br 242fc <_gp+0xfffe7dc4> + 247d4: 010000f4 movhi r4,3 + 247d8: 21080c84 addi r4,r4,8242 + 247dc: d9002b15 stw r4,172(sp) + 247e0: d8802b17 ldw r2,172(sp) + 247e4: 1c07883a add r3,r3,r16 + 247e8: 8c400044 addi r17,r17,1 + 247ec: b0800015 stw r2,0(r22) + 247f0: b4000115 stw r16,4(r22) + 247f4: d8c02015 stw r3,128(sp) + 247f8: dc401f15 stw r17,124(sp) + 247fc: 008001c4 movi r2,7 + 24800: 147ebd0e bge r2,r17,242f8 <_gp+0xfffe7dc0> + 24804: d9002c17 ldw r4,176(sp) + 24808: d9801e04 addi r6,sp,120 + 2480c: b80b883a mov r5,r23 + 24810: 002a01c0 call 2a01c <__sprint_r> + 24814: 103b8c1e bne r2,zero,23648 <_gp+0xfffe7110> + 24818: d8c02017 ldw r3,128(sp) + 2481c: dc401f17 ldw r17,124(sp) + 24820: dd800404 addi r22,sp,16 + 24824: 003eb506 br 242fc <_gp+0xfffe7dc4> + 24828: d9002c17 ldw r4,176(sp) + 2482c: d9801e04 addi r6,sp,120 + 24830: b80b883a mov r5,r23 + 24834: 002a01c0 call 2a01c <__sprint_r> + 24838: 103b831e bne r2,zero,23648 <_gp+0xfffe7110> + 2483c: d8c02017 ldw r3,128(sp) + 24840: dc401f17 ldw r17,124(sp) + 24844: da000404 addi r8,sp,16 + 24848: 003e8d06 br 24280 <_gp+0xfffe7d48> + 2484c: d9002c17 ldw r4,176(sp) + 24850: d9801e04 addi r6,sp,120 + 24854: b80b883a mov r5,r23 + 24858: 002a01c0 call 2a01c <__sprint_r> + 2485c: 103b7a1e bne r2,zero,23648 <_gp+0xfffe7110> + 24860: d8c02017 ldw r3,128(sp) + 24864: dc401f17 ldw r17,124(sp) + 24868: dd800404 addi r22,sp,16 + 2486c: 003e8f06 br 242ac <_gp+0xfffe7d74> + 24870: 0027883a mov r19,zero + 24874: 003f4a06 br 245a0 <_gp+0xfffe8068> + 24878: d9002c17 ldw r4,176(sp) + 2487c: d9801e04 addi r6,sp,120 + 24880: b80b883a mov r5,r23 + 24884: 002a01c0 call 2a01c <__sprint_r> + 24888: 103b6f1e bne r2,zero,23648 <_gp+0xfffe7110> + 2488c: d8c02017 ldw r3,128(sp) + 24890: da000404 addi r8,sp,16 + 24894: 003c9d06 br 23b0c <_gp+0xfffe75d4> + 24898: 04e7c83a sub r19,zero,r19 + 2489c: 9804c03a cmpne r2,r19,zero + 248a0: 05adc83a sub r22,zero,r22 + 248a4: b0adc83a sub r22,r22,r2 + 248a8: d8802917 ldw r2,164(sp) + 248ac: 07000b44 movi fp,45 + 248b0: df002785 stb fp,158(sp) + 248b4: 10017b16 blt r2,zero,24ea4 <___vfprintf_internal_r+0x1c64> + 248b8: 00bfdfc4 movi r2,-129 + 248bc: 90a4703a and r18,r18,r2 + 248c0: 003bb106 br 23788 <_gp+0xfffe7250> + 248c4: d9003617 ldw r4,216(sp) + 248c8: d9403817 ldw r5,224(sp) + 248cc: da003d15 stw r8,244(sp) + 248d0: 0029c940 call 29c94 <__fpclassifyd> + 248d4: da003d17 ldw r8,244(sp) + 248d8: 1000f026 beq r2,zero,24c9c <___vfprintf_internal_r+0x1a5c> + 248dc: d9002917 ldw r4,164(sp) + 248e0: 05bff7c4 movi r22,-33 + 248e4: 00bfffc4 movi r2,-1 + 248e8: 8dac703a and r22,r17,r22 + 248ec: 20820026 beq r4,r2,250f0 <___vfprintf_internal_r+0x1eb0> + 248f0: 008011c4 movi r2,71 + 248f4: b081f726 beq r22,r2,250d4 <___vfprintf_internal_r+0x1e94> + 248f8: d9003817 ldw r4,224(sp) + 248fc: 90c04014 ori r3,r18,256 + 24900: d8c02b15 stw r3,172(sp) + 24904: 20021516 blt r4,zero,2515c <___vfprintf_internal_r+0x1f1c> + 24908: dcc03817 ldw r19,224(sp) + 2490c: d8002a05 stb zero,168(sp) + 24910: 00801984 movi r2,102 + 24914: 8881f926 beq r17,r2,250fc <___vfprintf_internal_r+0x1ebc> + 24918: 00801184 movi r2,70 + 2491c: 88821c26 beq r17,r2,25190 <___vfprintf_internal_r+0x1f50> + 24920: 00801144 movi r2,69 + 24924: b081ef26 beq r22,r2,250e4 <___vfprintf_internal_r+0x1ea4> + 24928: d8c02917 ldw r3,164(sp) + 2492c: d8802104 addi r2,sp,132 + 24930: d8800315 stw r2,12(sp) + 24934: d9403617 ldw r5,216(sp) + 24938: d8802504 addi r2,sp,148 + 2493c: d9002c17 ldw r4,176(sp) + 24940: d8800215 stw r2,8(sp) + 24944: d8802604 addi r2,sp,152 + 24948: d8c00015 stw r3,0(sp) + 2494c: d8800115 stw r2,4(sp) + 24950: 01c00084 movi r7,2 + 24954: 980d883a mov r6,r19 + 24958: d8c03c15 stw r3,240(sp) + 2495c: da003d15 stw r8,244(sp) + 24960: 00258640 call 25864 <_dtoa_r> + 24964: 1021883a mov r16,r2 + 24968: 008019c4 movi r2,103 + 2496c: d8c03c17 ldw r3,240(sp) + 24970: da003d17 ldw r8,244(sp) + 24974: 88817126 beq r17,r2,24f3c <___vfprintf_internal_r+0x1cfc> + 24978: 008011c4 movi r2,71 + 2497c: 88829226 beq r17,r2,253c8 <___vfprintf_internal_r+0x2188> + 24980: 80f9883a add fp,r16,r3 + 24984: d9003617 ldw r4,216(sp) + 24988: 000d883a mov r6,zero + 2498c: 000f883a mov r7,zero + 24990: 980b883a mov r5,r19 + 24994: da003d15 stw r8,244(sp) + 24998: 002dae00 call 2dae0 <__eqdf2> + 2499c: da003d17 ldw r8,244(sp) + 249a0: 10018d26 beq r2,zero,24fd8 <___vfprintf_internal_r+0x1d98> + 249a4: d8802117 ldw r2,132(sp) + 249a8: 1700062e bgeu r2,fp,249c4 <___vfprintf_internal_r+0x1784> + 249ac: 01000c04 movi r4,48 + 249b0: 10c00044 addi r3,r2,1 + 249b4: d8c02115 stw r3,132(sp) + 249b8: 11000005 stb r4,0(r2) + 249bc: d8802117 ldw r2,132(sp) + 249c0: 173ffb36 bltu r2,fp,249b0 <_gp+0xfffe8478> + 249c4: 1405c83a sub r2,r2,r16 + 249c8: d8803315 stw r2,204(sp) + 249cc: 008011c4 movi r2,71 + 249d0: b0817626 beq r22,r2,24fac <___vfprintf_internal_r+0x1d6c> + 249d4: 00801944 movi r2,101 + 249d8: 1442810e bge r2,r17,253e0 <___vfprintf_internal_r+0x21a0> + 249dc: d8c02617 ldw r3,152(sp) + 249e0: 00801984 movi r2,102 + 249e4: d8c03215 stw r3,200(sp) + 249e8: 8881fe26 beq r17,r2,251e4 <___vfprintf_internal_r+0x1fa4> + 249ec: d8c03217 ldw r3,200(sp) + 249f0: d9003317 ldw r4,204(sp) + 249f4: 1901dd16 blt r3,r4,2516c <___vfprintf_internal_r+0x1f2c> + 249f8: 9480004c andi r18,r18,1 + 249fc: 90022b1e bne r18,zero,252ac <___vfprintf_internal_r+0x206c> + 24a00: 1805883a mov r2,r3 + 24a04: 18028016 blt r3,zero,25408 <___vfprintf_internal_r+0x21c8> + 24a08: d8c03217 ldw r3,200(sp) + 24a0c: 044019c4 movi r17,103 + 24a10: d8c02e15 stw r3,184(sp) + 24a14: df002a07 ldb fp,168(sp) + 24a18: e001531e bne fp,zero,24f68 <___vfprintf_internal_r+0x1d28> + 24a1c: df002783 ldbu fp,158(sp) + 24a20: d8802a15 stw r2,168(sp) + 24a24: dc802b17 ldw r18,172(sp) + 24a28: d8002915 stw zero,164(sp) + 24a2c: 003bd106 br 23974 <_gp+0xfffe743c> + 24a30: d8802d17 ldw r2,180(sp) + 24a34: d8c02d17 ldw r3,180(sp) + 24a38: d9002d17 ldw r4,180(sp) + 24a3c: 10800017 ldw r2,0(r2) + 24a40: 18c00117 ldw r3,4(r3) + 24a44: 21000204 addi r4,r4,8 + 24a48: d8803615 stw r2,216(sp) + 24a4c: d8c03815 stw r3,224(sp) + 24a50: d9002d15 stw r4,180(sp) + 24a54: 003b7506 br 2382c <_gp+0xfffe72f4> + 24a58: ac400007 ldb r17,0(r21) + 24a5c: 003a5906 br 233c4 <_gp+0xfffe6e8c> + 24a60: 9080100c andi r2,r18,64 + 24a64: 1000a826 beq r2,zero,24d08 <___vfprintf_internal_r+0x1ac8> + 24a68: d9002d17 ldw r4,180(sp) + 24a6c: 002d883a mov r22,zero + 24a70: 24c0000b ldhu r19,0(r4) + 24a74: 21000104 addi r4,r4,4 + 24a78: d9002d15 stw r4,180(sp) + 24a7c: 003ccb06 br 23dac <_gp+0xfffe7874> + 24a80: d8c02d17 ldw r3,180(sp) + 24a84: d9002917 ldw r4,164(sp) + 24a88: 002d883a mov r22,zero + 24a8c: 18800104 addi r2,r3,4 + 24a90: 1cc00017 ldw r19,0(r3) + 24a94: 203ebb0e bge r4,zero,24584 <_gp+0xfffe804c> + 24a98: 003ef106 br 24660 <_gp+0xfffe8128> + 24a9c: 9080040c andi r2,r18,16 + 24aa0: 1000921e bne r2,zero,24cec <___vfprintf_internal_r+0x1aac> + 24aa4: 9480100c andi r18,r18,64 + 24aa8: 90013926 beq r18,zero,24f90 <___vfprintf_internal_r+0x1d50> + 24aac: d9002d17 ldw r4,180(sp) + 24ab0: d9402f17 ldw r5,188(sp) + 24ab4: 20800017 ldw r2,0(r4) + 24ab8: 21000104 addi r4,r4,4 + 24abc: d9002d15 stw r4,180(sp) + 24ac0: 1140000d sth r5,0(r2) + 24ac4: 003a1606 br 23320 <_gp+0xfffe6de8> + 24ac8: 9080100c andi r2,r18,64 + 24acc: 10008026 beq r2,zero,24cd0 <___vfprintf_internal_r+0x1a90> + 24ad0: d8c02d17 ldw r3,180(sp) + 24ad4: 1cc0000f ldh r19,0(r3) + 24ad8: 18c00104 addi r3,r3,4 + 24adc: d8c02d15 stw r3,180(sp) + 24ae0: 982dd7fa srai r22,r19,31 + 24ae4: b005883a mov r2,r22 + 24ae8: 003b1f06 br 23768 <_gp+0xfffe7230> + 24aec: 9080100c andi r2,r18,64 + 24af0: d8002785 stb zero,158(sp) + 24af4: 10008a1e bne r2,zero,24d20 <___vfprintf_internal_r+0x1ae0> + 24af8: d9402d17 ldw r5,180(sp) + 24afc: d8c02917 ldw r3,164(sp) + 24b00: 002d883a mov r22,zero + 24b04: 28800104 addi r2,r5,4 + 24b08: 2cc00017 ldw r19,0(r5) + 24b0c: 183e4b0e bge r3,zero,2443c <_gp+0xfffe7f04> + 24b10: 9d86b03a or r3,r19,r22 + 24b14: d8802d15 stw r2,180(sp) + 24b18: 183e4c1e bne r3,zero,2444c <_gp+0xfffe7f14> + 24b1c: 0039883a mov fp,zero + 24b20: 0005883a mov r2,zero + 24b24: 003d4006 br 24028 <_gp+0xfffe7af0> + 24b28: 014000f4 movhi r5,3 + 24b2c: 29480c84 addi r5,r5,8242 + 24b30: d9402b15 stw r5,172(sp) + 24b34: d9402b17 ldw r5,172(sp) + 24b38: 1c47883a add r3,r3,r17 + 24b3c: 10800044 addi r2,r2,1 + 24b40: 41400015 stw r5,0(r8) + 24b44: 44400115 stw r17,4(r8) + 24b48: d8c02015 stw r3,128(sp) + 24b4c: d8801f15 stw r2,124(sp) + 24b50: 010001c4 movi r4,7 + 24b54: 20bec816 blt r4,r2,24678 <_gp+0xfffe8140> + 24b58: 42000204 addi r8,r8,8 + 24b5c: 003ecd06 br 24694 <_gp+0xfffe815c> + 24b60: d9002917 ldw r4,164(sp) + 24b64: d8002785 stb zero,158(sp) + 24b68: 203d2d16 blt r4,zero,24020 <_gp+0xfffe7ae8> + 24b6c: 00bfdfc4 movi r2,-129 + 24b70: 90a4703a and r18,r18,r2 + 24b74: 003a9106 br 235bc <_gp+0xfffe7084> + 24b78: 010000f4 movhi r4,3 + 24b7c: 21080c84 addi r4,r4,8242 + 24b80: d9002b15 stw r4,172(sp) + 24b84: 003c0c06 br 23bb8 <_gp+0xfffe7680> + 24b88: d9002c17 ldw r4,176(sp) + 24b8c: d9801e04 addi r6,sp,120 + 24b90: b80b883a mov r5,r23 + 24b94: 002a01c0 call 2a01c <__sprint_r> + 24b98: 103aab1e bne r2,zero,23648 <_gp+0xfffe7110> + 24b9c: d8c02017 ldw r3,128(sp) + 24ba0: da000404 addi r8,sp,16 + 24ba4: 003d4106 br 240ac <_gp+0xfffe7b74> + 24ba8: d8801f17 ldw r2,124(sp) + 24bac: 014000f4 movhi r5,3 + 24bb0: 01000044 movi r4,1 + 24bb4: 18c00044 addi r3,r3,1 + 24bb8: 10800044 addi r2,r2,1 + 24bbc: 29480c04 addi r5,r5,8240 + 24bc0: 41000115 stw r4,4(r8) + 24bc4: 41400015 stw r5,0(r8) + 24bc8: d8c02015 stw r3,128(sp) + 24bcc: d8801f15 stw r2,124(sp) + 24bd0: 010001c4 movi r4,7 + 24bd4: 20805c16 blt r4,r2,24d48 <___vfprintf_internal_r+0x1b08> + 24bd8: 42000204 addi r8,r8,8 + 24bdc: 8800041e bne r17,zero,24bf0 <___vfprintf_internal_r+0x19b0> + 24be0: d8803317 ldw r2,204(sp) + 24be4: 1000021e bne r2,zero,24bf0 <___vfprintf_internal_r+0x19b0> + 24be8: 9080004c andi r2,r18,1 + 24bec: 103c0926 beq r2,zero,23c14 <_gp+0xfffe76dc> + 24bf0: d9003717 ldw r4,220(sp) + 24bf4: d8801f17 ldw r2,124(sp) + 24bf8: d9403417 ldw r5,208(sp) + 24bfc: 20c7883a add r3,r4,r3 + 24c00: 10800044 addi r2,r2,1 + 24c04: 41000115 stw r4,4(r8) + 24c08: 41400015 stw r5,0(r8) + 24c0c: d8c02015 stw r3,128(sp) + 24c10: d8801f15 stw r2,124(sp) + 24c14: 010001c4 movi r4,7 + 24c18: 20812116 blt r4,r2,250a0 <___vfprintf_internal_r+0x1e60> + 24c1c: 42000204 addi r8,r8,8 + 24c20: 0463c83a sub r17,zero,r17 + 24c24: 0440730e bge zero,r17,24df4 <___vfprintf_internal_r+0x1bb4> + 24c28: 05800404 movi r22,16 + 24c2c: b440860e bge r22,r17,24e48 <___vfprintf_internal_r+0x1c08> + 24c30: 014000f4 movhi r5,3 + 24c34: 29480c84 addi r5,r5,8242 + 24c38: d9402b15 stw r5,172(sp) + 24c3c: 070001c4 movi fp,7 + 24c40: dcc02c17 ldw r19,176(sp) + 24c44: 00000306 br 24c54 <___vfprintf_internal_r+0x1a14> + 24c48: 42000204 addi r8,r8,8 + 24c4c: 8c7ffc04 addi r17,r17,-16 + 24c50: b440800e bge r22,r17,24e54 <___vfprintf_internal_r+0x1c14> + 24c54: 18c00404 addi r3,r3,16 + 24c58: 10800044 addi r2,r2,1 + 24c5c: 45000015 stw r20,0(r8) + 24c60: 45800115 stw r22,4(r8) + 24c64: d8c02015 stw r3,128(sp) + 24c68: d8801f15 stw r2,124(sp) + 24c6c: e0bff60e bge fp,r2,24c48 <_gp+0xfffe8710> + 24c70: d9801e04 addi r6,sp,120 + 24c74: b80b883a mov r5,r23 + 24c78: 9809883a mov r4,r19 + 24c7c: 002a01c0 call 2a01c <__sprint_r> + 24c80: 103a711e bne r2,zero,23648 <_gp+0xfffe7110> + 24c84: d8c02017 ldw r3,128(sp) + 24c88: d8801f17 ldw r2,124(sp) + 24c8c: da000404 addi r8,sp,16 + 24c90: 003fee06 br 24c4c <_gp+0xfffe8714> + 24c94: 00bfffc4 movi r2,-1 + 24c98: 003a6f06 br 23658 <_gp+0xfffe7120> + 24c9c: 008011c4 movi r2,71 + 24ca0: 1440b816 blt r2,r17,24f84 <___vfprintf_internal_r+0x1d44> + 24ca4: 040000f4 movhi r16,3 + 24ca8: 8407fe04 addi r16,r16,8184 + 24cac: 00c000c4 movi r3,3 + 24cb0: 00bfdfc4 movi r2,-129 + 24cb4: d8c02a15 stw r3,168(sp) + 24cb8: 90a4703a and r18,r18,r2 + 24cbc: df002783 ldbu fp,158(sp) + 24cc0: d8c02e15 stw r3,184(sp) + 24cc4: d8002915 stw zero,164(sp) + 24cc8: d8003215 stw zero,200(sp) + 24ccc: 003b2906 br 23974 <_gp+0xfffe743c> + 24cd0: d9002d17 ldw r4,180(sp) + 24cd4: 24c00017 ldw r19,0(r4) + 24cd8: 21000104 addi r4,r4,4 + 24cdc: d9002d15 stw r4,180(sp) + 24ce0: 982dd7fa srai r22,r19,31 + 24ce4: b005883a mov r2,r22 + 24ce8: 003a9f06 br 23768 <_gp+0xfffe7230> + 24cec: d9402d17 ldw r5,180(sp) + 24cf0: d8c02f17 ldw r3,188(sp) + 24cf4: 28800017 ldw r2,0(r5) + 24cf8: 29400104 addi r5,r5,4 + 24cfc: d9402d15 stw r5,180(sp) + 24d00: 10c00015 stw r3,0(r2) + 24d04: 00398606 br 23320 <_gp+0xfffe6de8> + 24d08: d9402d17 ldw r5,180(sp) + 24d0c: 002d883a mov r22,zero + 24d10: 2cc00017 ldw r19,0(r5) + 24d14: 29400104 addi r5,r5,4 + 24d18: d9402d15 stw r5,180(sp) + 24d1c: 003c2306 br 23dac <_gp+0xfffe7874> + 24d20: d8c02d17 ldw r3,180(sp) + 24d24: d9002917 ldw r4,164(sp) + 24d28: 002d883a mov r22,zero + 24d2c: 18800104 addi r2,r3,4 + 24d30: 1cc0000b ldhu r19,0(r3) + 24d34: 203dc10e bge r4,zero,2443c <_gp+0xfffe7f04> + 24d38: 003f7506 br 24b10 <_gp+0xfffe85d8> + 24d3c: 040000f4 movhi r16,3 + 24d40: 8407fc04 addi r16,r16,8176 + 24d44: 003acc06 br 23878 <_gp+0xfffe7340> + 24d48: d9002c17 ldw r4,176(sp) + 24d4c: d9801e04 addi r6,sp,120 + 24d50: b80b883a mov r5,r23 + 24d54: 002a01c0 call 2a01c <__sprint_r> + 24d58: 103a3b1e bne r2,zero,23648 <_gp+0xfffe7110> + 24d5c: dc402617 ldw r17,152(sp) + 24d60: d8c02017 ldw r3,128(sp) + 24d64: da000404 addi r8,sp,16 + 24d68: 003f9c06 br 24bdc <_gp+0xfffe86a4> + 24d6c: ac400043 ldbu r17,1(r21) + 24d70: 94800814 ori r18,r18,32 + 24d74: ad400044 addi r21,r21,1 + 24d78: 8c403fcc andi r17,r17,255 + 24d7c: 8c40201c xori r17,r17,128 + 24d80: 8c7fe004 addi r17,r17,-128 + 24d84: 00398f06 br 233c4 <_gp+0xfffe6e8c> + 24d88: d8c02d15 stw r3,180(sp) + 24d8c: 0039883a mov fp,zero + 24d90: 003e3506 br 24668 <_gp+0xfffe8130> + 24d94: d9002c17 ldw r4,176(sp) + 24d98: d9801e04 addi r6,sp,120 + 24d9c: b80b883a mov r5,r23 + 24da0: 002a01c0 call 2a01c <__sprint_r> + 24da4: 103a281e bne r2,zero,23648 <_gp+0xfffe7110> + 24da8: d8c02017 ldw r3,128(sp) + 24dac: da000404 addi r8,sp,16 + 24db0: 003cd006 br 240f4 <_gp+0xfffe7bbc> + 24db4: 8009883a mov r4,r16 + 24db8: da003d15 stw r8,244(sp) + 24dbc: 00231a80 call 231a8 + 24dc0: d8802e15 stw r2,184(sp) + 24dc4: da003d17 ldw r8,244(sp) + 24dc8: 103c340e bge r2,zero,23e9c <_gp+0xfffe7964> + 24dcc: 0005883a mov r2,zero + 24dd0: 003c3206 br 23e9c <_gp+0xfffe7964> + 24dd4: d9002c17 ldw r4,176(sp) + 24dd8: d9801e04 addi r6,sp,120 + 24ddc: b80b883a mov r5,r23 + 24de0: 002a01c0 call 2a01c <__sprint_r> + 24de4: 103a181e bne r2,zero,23648 <_gp+0xfffe7110> + 24de8: d8c02017 ldw r3,128(sp) + 24dec: d8801f17 ldw r2,124(sp) + 24df0: da000404 addi r8,sp,16 + 24df4: d9403317 ldw r5,204(sp) + 24df8: 10800044 addi r2,r2,1 + 24dfc: 44000015 stw r16,0(r8) + 24e00: 28c7883a add r3,r5,r3 + 24e04: 003b7d06 br 23bfc <_gp+0xfffe76c4> + 24e08: 010000f4 movhi r4,3 + 24e0c: 21081084 addi r4,r4,8258 + 24e10: d9003515 stw r4,212(sp) + 24e14: 003b1406 br 23a68 <_gp+0xfffe7530> + 24e18: 013fffc4 movi r4,-1 + 24e1c: 003a3506 br 236f4 <_gp+0xfffe71bc> + 24e20: 0023883a mov r17,zero + 24e24: 003d9d06 br 2449c <_gp+0xfffe7f64> + 24e28: d9002c17 ldw r4,176(sp) + 24e2c: d9801e04 addi r6,sp,120 + 24e30: b80b883a mov r5,r23 + 24e34: 002a01c0 call 2a01c <__sprint_r> + 24e38: 103a031e bne r2,zero,23648 <_gp+0xfffe7110> + 24e3c: d8c02017 ldw r3,128(sp) + 24e40: da000404 addi r8,sp,16 + 24e44: 003d9406 br 24498 <_gp+0xfffe7f60> + 24e48: 010000f4 movhi r4,3 + 24e4c: 21080c84 addi r4,r4,8242 + 24e50: d9002b15 stw r4,172(sp) + 24e54: d9002b17 ldw r4,172(sp) + 24e58: 1c47883a add r3,r3,r17 + 24e5c: 10800044 addi r2,r2,1 + 24e60: 41000015 stw r4,0(r8) + 24e64: 44400115 stw r17,4(r8) + 24e68: d8c02015 stw r3,128(sp) + 24e6c: d8801f15 stw r2,124(sp) + 24e70: 010001c4 movi r4,7 + 24e74: 20bfd716 blt r4,r2,24dd4 <_gp+0xfffe889c> + 24e78: 42000204 addi r8,r8,8 + 24e7c: 003fdd06 br 24df4 <_gp+0xfffe88bc> + 24e80: d9002c17 ldw r4,176(sp) + 24e84: d9801e04 addi r6,sp,120 + 24e88: b80b883a mov r5,r23 + 24e8c: 002a01c0 call 2a01c <__sprint_r> + 24e90: 1039ed1e bne r2,zero,23648 <_gp+0xfffe7110> + 24e94: d8802617 ldw r2,152(sp) + 24e98: d8c02017 ldw r3,128(sp) + 24e9c: da000404 addi r8,sp,16 + 24ea0: 003e1006 br 246e4 <_gp+0xfffe81ac> + 24ea4: 00800044 movi r2,1 + 24ea8: 10803fcc andi r2,r2,255 + 24eac: 00c00044 movi r3,1 + 24eb0: 10fa3526 beq r2,r3,23788 <_gp+0xfffe7250> + 24eb4: 00c00084 movi r3,2 + 24eb8: 10fbcb26 beq r2,r3,23de8 <_gp+0xfffe78b0> + 24ebc: 003a8f06 br 238fc <_gp+0xfffe73c4> + 24ec0: 010000f4 movhi r4,3 + 24ec4: 21081084 addi r4,r4,8258 + 24ec8: d9003515 stw r4,212(sp) + 24ecc: 003b7606 br 23ca8 <_gp+0xfffe7770> + 24ed0: d8802917 ldw r2,164(sp) + 24ed4: 00c00184 movi r3,6 + 24ed8: 1880012e bgeu r3,r2,24ee0 <___vfprintf_internal_r+0x1ca0> + 24edc: 1805883a mov r2,r3 + 24ee0: d8802e15 stw r2,184(sp) + 24ee4: 1000ef16 blt r2,zero,252a4 <___vfprintf_internal_r+0x2064> + 24ee8: 040000f4 movhi r16,3 + 24eec: d8802a15 stw r2,168(sp) + 24ef0: dcc02d15 stw r19,180(sp) + 24ef4: d8002915 stw zero,164(sp) + 24ef8: d8003215 stw zero,200(sp) + 24efc: 84080a04 addi r16,r16,8232 + 24f00: 0039883a mov fp,zero + 24f04: 003aa206 br 23990 <_gp+0xfffe7458> + 24f08: 0021883a mov r16,zero + 24f0c: 003e0706 br 2472c <_gp+0xfffe81f4> + 24f10: d9002c17 ldw r4,176(sp) + 24f14: d9801e04 addi r6,sp,120 + 24f18: b80b883a mov r5,r23 + 24f1c: 002a01c0 call 2a01c <__sprint_r> + 24f20: 1039c91e bne r2,zero,23648 <_gp+0xfffe7110> + 24f24: d8802617 ldw r2,152(sp) + 24f28: d9403317 ldw r5,204(sp) + 24f2c: d8c02017 ldw r3,128(sp) + 24f30: da000404 addi r8,sp,16 + 24f34: 2885c83a sub r2,r5,r2 + 24f38: 003dfb06 br 24728 <_gp+0xfffe81f0> + 24f3c: 9080004c andi r2,r18,1 + 24f40: 103e8f1e bne r2,zero,24980 <_gp+0xfffe8448> + 24f44: d8802117 ldw r2,132(sp) + 24f48: 003e9e06 br 249c4 <_gp+0xfffe848c> + 24f4c: 1025883a mov r18,r2 + 24f50: 0039883a mov fp,zero + 24f54: 00800084 movi r2,2 + 24f58: 003fd306 br 24ea8 <_gp+0xfffe8970> + 24f5c: 07000b44 movi fp,45 + 24f60: df002785 stb fp,158(sp) + 24f64: 003a4006 br 23868 <_gp+0xfffe7330> + 24f68: 00c00b44 movi r3,45 + 24f6c: d8c02785 stb r3,158(sp) + 24f70: d8802a15 stw r2,168(sp) + 24f74: dc802b17 ldw r18,172(sp) + 24f78: d8002915 stw zero,164(sp) + 24f7c: 07000b44 movi fp,45 + 24f80: 003a8006 br 23984 <_gp+0xfffe744c> + 24f84: 040000f4 movhi r16,3 + 24f88: 8407ff04 addi r16,r16,8188 + 24f8c: 003f4706 br 24cac <_gp+0xfffe8774> + 24f90: d8c02d17 ldw r3,180(sp) + 24f94: d9002f17 ldw r4,188(sp) + 24f98: 18800017 ldw r2,0(r3) + 24f9c: 18c00104 addi r3,r3,4 + 24fa0: d8c02d15 stw r3,180(sp) + 24fa4: 11000015 stw r4,0(r2) + 24fa8: 0038dd06 br 23320 <_gp+0xfffe6de8> + 24fac: dd802617 ldw r22,152(sp) + 24fb0: 00bfff44 movi r2,-3 + 24fb4: b0801c16 blt r22,r2,25028 <___vfprintf_internal_r+0x1de8> + 24fb8: d9402917 ldw r5,164(sp) + 24fbc: 2d801a16 blt r5,r22,25028 <___vfprintf_internal_r+0x1de8> + 24fc0: dd803215 stw r22,200(sp) + 24fc4: 003e8906 br 249ec <_gp+0xfffe84b4> + 24fc8: 010000f4 movhi r4,3 + 24fcc: 21080c84 addi r4,r4,8242 + 24fd0: d9002b15 stw r4,172(sp) + 24fd4: 003c9106 br 2421c <_gp+0xfffe7ce4> + 24fd8: e005883a mov r2,fp + 24fdc: 003e7906 br 249c4 <_gp+0xfffe848c> + 24fe0: d9402917 ldw r5,164(sp) + 24fe4: df002783 ldbu fp,158(sp) + 24fe8: dcc02d15 stw r19,180(sp) + 24fec: d9402a15 stw r5,168(sp) + 24ff0: d9402e15 stw r5,184(sp) + 24ff4: d8002915 stw zero,164(sp) + 24ff8: d8003215 stw zero,200(sp) + 24ffc: 003a5d06 br 23974 <_gp+0xfffe743c> + 25000: 9080004c andi r2,r18,1 + 25004: 0039883a mov fp,zero + 25008: 10000426 beq r2,zero,2501c <___vfprintf_internal_r+0x1ddc> + 2500c: 00800c04 movi r2,48 + 25010: dc001dc4 addi r16,sp,119 + 25014: d8801dc5 stb r2,119(sp) + 25018: 003b8006 br 23e1c <_gp+0xfffe78e4> + 2501c: d8002e15 stw zero,184(sp) + 25020: dc001e04 addi r16,sp,120 + 25024: 003a4d06 br 2395c <_gp+0xfffe7424> + 25028: 8c7fff84 addi r17,r17,-2 + 2502c: b5bfffc4 addi r22,r22,-1 + 25030: dd802615 stw r22,152(sp) + 25034: dc4022c5 stb r17,139(sp) + 25038: b000bf16 blt r22,zero,25338 <___vfprintf_internal_r+0x20f8> + 2503c: 00800ac4 movi r2,43 + 25040: d8802305 stb r2,140(sp) + 25044: 00800244 movi r2,9 + 25048: 15807016 blt r2,r22,2520c <___vfprintf_internal_r+0x1fcc> + 2504c: 00800c04 movi r2,48 + 25050: b5800c04 addi r22,r22,48 + 25054: d8802345 stb r2,141(sp) + 25058: dd802385 stb r22,142(sp) + 2505c: d88023c4 addi r2,sp,143 + 25060: df0022c4 addi fp,sp,139 + 25064: d8c03317 ldw r3,204(sp) + 25068: 1739c83a sub fp,r2,fp + 2506c: d9003317 ldw r4,204(sp) + 25070: e0c7883a add r3,fp,r3 + 25074: df003a15 stw fp,232(sp) + 25078: d8c02e15 stw r3,184(sp) + 2507c: 00800044 movi r2,1 + 25080: 1100b30e bge r2,r4,25350 <___vfprintf_internal_r+0x2110> + 25084: d8c02e17 ldw r3,184(sp) + 25088: 18c00044 addi r3,r3,1 + 2508c: d8c02e15 stw r3,184(sp) + 25090: 1805883a mov r2,r3 + 25094: 1800ac16 blt r3,zero,25348 <___vfprintf_internal_r+0x2108> + 25098: d8003215 stw zero,200(sp) + 2509c: 003e5d06 br 24a14 <_gp+0xfffe84dc> + 250a0: d9002c17 ldw r4,176(sp) + 250a4: d9801e04 addi r6,sp,120 + 250a8: b80b883a mov r5,r23 + 250ac: 002a01c0 call 2a01c <__sprint_r> + 250b0: 1039651e bne r2,zero,23648 <_gp+0xfffe7110> + 250b4: dc402617 ldw r17,152(sp) + 250b8: d8c02017 ldw r3,128(sp) + 250bc: d8801f17 ldw r2,124(sp) + 250c0: da000404 addi r8,sp,16 + 250c4: 003ed606 br 24c20 <_gp+0xfffe86e8> + 250c8: 582b883a mov r21,r11 + 250cc: d8002915 stw zero,164(sp) + 250d0: 0038bd06 br 233c8 <_gp+0xfffe6e90> + 250d4: d8802917 ldw r2,164(sp) + 250d8: 103e071e bne r2,zero,248f8 <_gp+0xfffe83c0> + 250dc: dc002915 stw r16,164(sp) + 250e0: 003e0506 br 248f8 <_gp+0xfffe83c0> + 250e4: d9002917 ldw r4,164(sp) + 250e8: 20c00044 addi r3,r4,1 + 250ec: 003e0f06 br 2492c <_gp+0xfffe83f4> + 250f0: 01400184 movi r5,6 + 250f4: d9402915 stw r5,164(sp) + 250f8: 003dff06 br 248f8 <_gp+0xfffe83c0> + 250fc: d8802104 addi r2,sp,132 + 25100: d8800315 stw r2,12(sp) + 25104: d8802504 addi r2,sp,148 + 25108: d8800215 stw r2,8(sp) + 2510c: d8802604 addi r2,sp,152 + 25110: d8800115 stw r2,4(sp) + 25114: d8802917 ldw r2,164(sp) + 25118: d9403617 ldw r5,216(sp) + 2511c: d9002c17 ldw r4,176(sp) + 25120: d8800015 stw r2,0(sp) + 25124: 01c000c4 movi r7,3 + 25128: 980d883a mov r6,r19 + 2512c: da003d15 stw r8,244(sp) + 25130: 00258640 call 25864 <_dtoa_r> + 25134: d8c02917 ldw r3,164(sp) + 25138: da003d17 ldw r8,244(sp) + 2513c: 1021883a mov r16,r2 + 25140: 10f9883a add fp,r2,r3 + 25144: 81000007 ldb r4,0(r16) + 25148: 00800c04 movi r2,48 + 2514c: 20805e26 beq r4,r2,252c8 <___vfprintf_internal_r+0x2088> + 25150: d8c02617 ldw r3,152(sp) + 25154: e0f9883a add fp,fp,r3 + 25158: 003e0a06 br 24984 <_gp+0xfffe844c> + 2515c: 00c00b44 movi r3,45 + 25160: 24e0003c xorhi r19,r4,32768 + 25164: d8c02a05 stb r3,168(sp) + 25168: 003de906 br 24910 <_gp+0xfffe83d8> + 2516c: d8c03217 ldw r3,200(sp) + 25170: 00c07a0e bge zero,r3,2535c <___vfprintf_internal_r+0x211c> + 25174: 00800044 movi r2,1 + 25178: d9003317 ldw r4,204(sp) + 2517c: 1105883a add r2,r2,r4 + 25180: d8802e15 stw r2,184(sp) + 25184: 10004e16 blt r2,zero,252c0 <___vfprintf_internal_r+0x2080> + 25188: 044019c4 movi r17,103 + 2518c: 003e2106 br 24a14 <_gp+0xfffe84dc> + 25190: d9002917 ldw r4,164(sp) + 25194: d8802104 addi r2,sp,132 + 25198: d8800315 stw r2,12(sp) + 2519c: d9000015 stw r4,0(sp) + 251a0: d8802504 addi r2,sp,148 + 251a4: d9403617 ldw r5,216(sp) + 251a8: d9002c17 ldw r4,176(sp) + 251ac: d8800215 stw r2,8(sp) + 251b0: d8802604 addi r2,sp,152 + 251b4: d8800115 stw r2,4(sp) + 251b8: 01c000c4 movi r7,3 + 251bc: 980d883a mov r6,r19 + 251c0: da003d15 stw r8,244(sp) + 251c4: 00258640 call 25864 <_dtoa_r> + 251c8: d8c02917 ldw r3,164(sp) + 251cc: da003d17 ldw r8,244(sp) + 251d0: 1021883a mov r16,r2 + 251d4: 00801184 movi r2,70 + 251d8: 80f9883a add fp,r16,r3 + 251dc: 88bfd926 beq r17,r2,25144 <_gp+0xfffe8c0c> + 251e0: 003de806 br 24984 <_gp+0xfffe844c> + 251e4: d9002917 ldw r4,164(sp) + 251e8: 00c04d0e bge zero,r3,25320 <___vfprintf_internal_r+0x20e0> + 251ec: 2000441e bne r4,zero,25300 <___vfprintf_internal_r+0x20c0> + 251f0: 9480004c andi r18,r18,1 + 251f4: 9000421e bne r18,zero,25300 <___vfprintf_internal_r+0x20c0> + 251f8: 1805883a mov r2,r3 + 251fc: 18007016 blt r3,zero,253c0 <___vfprintf_internal_r+0x2180> + 25200: d8c03217 ldw r3,200(sp) + 25204: d8c02e15 stw r3,184(sp) + 25208: 003e0206 br 24a14 <_gp+0xfffe84dc> + 2520c: df0022c4 addi fp,sp,139 + 25210: dc002915 stw r16,164(sp) + 25214: 4027883a mov r19,r8 + 25218: e021883a mov r16,fp + 2521c: b009883a mov r4,r22 + 25220: 01400284 movi r5,10 + 25224: 00225680 call 22568 <__modsi3> + 25228: 10800c04 addi r2,r2,48 + 2522c: 843fffc4 addi r16,r16,-1 + 25230: b009883a mov r4,r22 + 25234: 01400284 movi r5,10 + 25238: 80800005 stb r2,0(r16) + 2523c: 00224e40 call 224e4 <__divsi3> + 25240: 102d883a mov r22,r2 + 25244: 00800244 movi r2,9 + 25248: 15bff416 blt r2,r22,2521c <_gp+0xfffe8ce4> + 2524c: 9811883a mov r8,r19 + 25250: b0800c04 addi r2,r22,48 + 25254: 8027883a mov r19,r16 + 25258: 997fffc4 addi r5,r19,-1 + 2525c: 98bfffc5 stb r2,-1(r19) + 25260: dc002917 ldw r16,164(sp) + 25264: 2f006a2e bgeu r5,fp,25410 <___vfprintf_internal_r+0x21d0> + 25268: d9c02384 addi r7,sp,142 + 2526c: 3ccfc83a sub r7,r7,r19 + 25270: d9002344 addi r4,sp,141 + 25274: e1cf883a add r7,fp,r7 + 25278: 00000106 br 25280 <___vfprintf_internal_r+0x2040> + 2527c: 28800003 ldbu r2,0(r5) + 25280: 20800005 stb r2,0(r4) + 25284: 21000044 addi r4,r4,1 + 25288: 29400044 addi r5,r5,1 + 2528c: 393ffb1e bne r7,r4,2527c <_gp+0xfffe8d44> + 25290: d8802304 addi r2,sp,140 + 25294: 14c5c83a sub r2,r2,r19 + 25298: d8c02344 addi r3,sp,141 + 2529c: 1885883a add r2,r3,r2 + 252a0: 003f7006 br 25064 <_gp+0xfffe8b2c> + 252a4: 0005883a mov r2,zero + 252a8: 003f0f06 br 24ee8 <_gp+0xfffe89b0> + 252ac: d8c03217 ldw r3,200(sp) + 252b0: 18c00044 addi r3,r3,1 + 252b4: d8c02e15 stw r3,184(sp) + 252b8: 1805883a mov r2,r3 + 252bc: 183fb20e bge r3,zero,25188 <_gp+0xfffe8c50> + 252c0: 0005883a mov r2,zero + 252c4: 003fb006 br 25188 <_gp+0xfffe8c50> + 252c8: d9003617 ldw r4,216(sp) + 252cc: 000d883a mov r6,zero + 252d0: 000f883a mov r7,zero + 252d4: 980b883a mov r5,r19 + 252d8: d8c03c15 stw r3,240(sp) + 252dc: da003d15 stw r8,244(sp) + 252e0: 002dae00 call 2dae0 <__eqdf2> + 252e4: d8c03c17 ldw r3,240(sp) + 252e8: da003d17 ldw r8,244(sp) + 252ec: 103f9826 beq r2,zero,25150 <_gp+0xfffe8c18> + 252f0: 00800044 movi r2,1 + 252f4: 10c7c83a sub r3,r2,r3 + 252f8: d8c02615 stw r3,152(sp) + 252fc: 003f9506 br 25154 <_gp+0xfffe8c1c> + 25300: d9002917 ldw r4,164(sp) + 25304: d8c03217 ldw r3,200(sp) + 25308: 20800044 addi r2,r4,1 + 2530c: 1885883a add r2,r3,r2 + 25310: d8802e15 stw r2,184(sp) + 25314: 103dbf0e bge r2,zero,24a14 <_gp+0xfffe84dc> + 25318: 0005883a mov r2,zero + 2531c: 003dbd06 br 24a14 <_gp+0xfffe84dc> + 25320: 2000211e bne r4,zero,253a8 <___vfprintf_internal_r+0x2168> + 25324: 9480004c andi r18,r18,1 + 25328: 90001f1e bne r18,zero,253a8 <___vfprintf_internal_r+0x2168> + 2532c: 00800044 movi r2,1 + 25330: d8802e15 stw r2,184(sp) + 25334: 003db706 br 24a14 <_gp+0xfffe84dc> + 25338: 00800b44 movi r2,45 + 2533c: 05adc83a sub r22,zero,r22 + 25340: d8802305 stb r2,140(sp) + 25344: 003f3f06 br 25044 <_gp+0xfffe8b0c> + 25348: 0005883a mov r2,zero + 2534c: 003f5206 br 25098 <_gp+0xfffe8b60> + 25350: 90a4703a and r18,r18,r2 + 25354: 903f4e26 beq r18,zero,25090 <_gp+0xfffe8b58> + 25358: 003f4a06 br 25084 <_gp+0xfffe8b4c> + 2535c: 00800084 movi r2,2 + 25360: 10c5c83a sub r2,r2,r3 + 25364: 003f8406 br 25178 <_gp+0xfffe8c40> + 25368: d8802d17 ldw r2,180(sp) + 2536c: d9002d17 ldw r4,180(sp) + 25370: ac400043 ldbu r17,1(r21) + 25374: 10800017 ldw r2,0(r2) + 25378: 582b883a mov r21,r11 + 2537c: d8802915 stw r2,164(sp) + 25380: 20800104 addi r2,r4,4 + 25384: d9002917 ldw r4,164(sp) + 25388: d8802d15 stw r2,180(sp) + 2538c: 203e7a0e bge r4,zero,24d78 <_gp+0xfffe8840> + 25390: 8c403fcc andi r17,r17,255 + 25394: 00bfffc4 movi r2,-1 + 25398: 8c40201c xori r17,r17,128 + 2539c: d8802915 stw r2,164(sp) + 253a0: 8c7fe004 addi r17,r17,-128 + 253a4: 00380706 br 233c4 <_gp+0xfffe6e8c> + 253a8: d8c02917 ldw r3,164(sp) + 253ac: 18c00084 addi r3,r3,2 + 253b0: d8c02e15 stw r3,184(sp) + 253b4: 1805883a mov r2,r3 + 253b8: 183d960e bge r3,zero,24a14 <_gp+0xfffe84dc> + 253bc: 003fd606 br 25318 <_gp+0xfffe8de0> + 253c0: 0005883a mov r2,zero + 253c4: 003f8e06 br 25200 <_gp+0xfffe8cc8> + 253c8: 9080004c andi r2,r18,1 + 253cc: 103f811e bne r2,zero,251d4 <_gp+0xfffe8c9c> + 253d0: d8802117 ldw r2,132(sp) + 253d4: 1405c83a sub r2,r2,r16 + 253d8: d8803315 stw r2,204(sp) + 253dc: b47ef326 beq r22,r17,24fac <_gp+0xfffe8a74> + 253e0: dd802617 ldw r22,152(sp) + 253e4: 003f1106 br 2502c <_gp+0xfffe8af4> + 253e8: d9c02785 stb r7,158(sp) + 253ec: 00390406 br 23800 <_gp+0xfffe72c8> + 253f0: d9c02785 stb r7,158(sp) + 253f4: 0038d306 br 23744 <_gp+0xfffe720c> + 253f8: d9c02785 stb r7,158(sp) + 253fc: 003a6106 br 23d84 <_gp+0xfffe784c> + 25400: d9c02785 stb r7,158(sp) + 25404: 003af806 br 23fe8 <_gp+0xfffe7ab0> + 25408: 0005883a mov r2,zero + 2540c: 003d7e06 br 24a08 <_gp+0xfffe84d0> + 25410: d8802344 addi r2,sp,141 + 25414: 003f1306 br 25064 <_gp+0xfffe8b2c> + 25418: d9c02785 stb r7,158(sp) + 2541c: 00392306 br 238ac <_gp+0xfffe7374> + 25420: d9c02785 stb r7,158(sp) + 25424: 003aa906 br 23ecc <_gp+0xfffe7994> + 25428: d9c02785 stb r7,158(sp) + 2542c: 003a3d06 br 23d24 <_gp+0xfffe77ec> + 25430: d9c02785 stb r7,158(sp) + 25434: 003aca06 br 23f60 <_gp+0xfffe7a28> + +00025438 <__vfprintf_internal>: + 25438: 008000f4 movhi r2,3 + 2543c: 10915404 addi r2,r2,17744 + 25440: 300f883a mov r7,r6 + 25444: 280d883a mov r6,r5 + 25448: 200b883a mov r5,r4 + 2544c: 11000017 ldw r4,0(r2) + 25450: 00232401 jmpi 23240 <___vfprintf_internal_r> + +00025454 <__sbprintf>: + 25454: 2880030b ldhu r2,12(r5) + 25458: 2ac01917 ldw r11,100(r5) + 2545c: 2a80038b ldhu r10,14(r5) + 25460: 2a400717 ldw r9,28(r5) + 25464: 2a000917 ldw r8,36(r5) + 25468: defee204 addi sp,sp,-1144 + 2546c: 00c10004 movi r3,1024 + 25470: dc011a15 stw r16,1128(sp) + 25474: 10bfff4c andi r2,r2,65533 + 25478: 2821883a mov r16,r5 + 2547c: d8cb883a add r5,sp,r3 + 25480: dc811c15 stw r18,1136(sp) + 25484: dc411b15 stw r17,1132(sp) + 25488: dfc11d15 stw ra,1140(sp) + 2548c: 2025883a mov r18,r4 + 25490: d881030d sth r2,1036(sp) + 25494: dac11915 stw r11,1124(sp) + 25498: da81038d sth r10,1038(sp) + 2549c: da410715 stw r9,1052(sp) + 254a0: da010915 stw r8,1060(sp) + 254a4: dec10015 stw sp,1024(sp) + 254a8: dec10415 stw sp,1040(sp) + 254ac: d8c10215 stw r3,1032(sp) + 254b0: d8c10515 stw r3,1044(sp) + 254b4: d8010615 stw zero,1048(sp) + 254b8: 00232400 call 23240 <___vfprintf_internal_r> + 254bc: 1023883a mov r17,r2 + 254c0: 10000416 blt r2,zero,254d4 <__sbprintf+0x80> + 254c4: d9410004 addi r5,sp,1024 + 254c8: 9009883a mov r4,r18 + 254cc: 00271080 call 27108 <_fflush_r> + 254d0: 10000d1e bne r2,zero,25508 <__sbprintf+0xb4> + 254d4: d881030b ldhu r2,1036(sp) + 254d8: 1080100c andi r2,r2,64 + 254dc: 10000326 beq r2,zero,254ec <__sbprintf+0x98> + 254e0: 8080030b ldhu r2,12(r16) + 254e4: 10801014 ori r2,r2,64 + 254e8: 8080030d sth r2,12(r16) + 254ec: 8805883a mov r2,r17 + 254f0: dfc11d17 ldw ra,1140(sp) + 254f4: dc811c17 ldw r18,1136(sp) + 254f8: dc411b17 ldw r17,1132(sp) + 254fc: dc011a17 ldw r16,1128(sp) + 25500: dec11e04 addi sp,sp,1144 + 25504: f800283a ret + 25508: 047fffc4 movi r17,-1 + 2550c: 003ff106 br 254d4 <_gp+0xfffe8f9c> + +00025510 <__swsetup_r>: + 25510: 008000f4 movhi r2,3 + 25514: defffd04 addi sp,sp,-12 + 25518: 10915404 addi r2,r2,17744 + 2551c: dc400115 stw r17,4(sp) + 25520: 2023883a mov r17,r4 + 25524: 11000017 ldw r4,0(r2) + 25528: dc000015 stw r16,0(sp) + 2552c: dfc00215 stw ra,8(sp) + 25530: 2821883a mov r16,r5 + 25534: 20000226 beq r4,zero,25540 <__swsetup_r+0x30> + 25538: 20800e17 ldw r2,56(r4) + 2553c: 10003126 beq r2,zero,25604 <__swsetup_r+0xf4> + 25540: 8080030b ldhu r2,12(r16) + 25544: 10c0020c andi r3,r2,8 + 25548: 1009883a mov r4,r2 + 2554c: 18000f26 beq r3,zero,2558c <__swsetup_r+0x7c> + 25550: 80c00417 ldw r3,16(r16) + 25554: 18001526 beq r3,zero,255ac <__swsetup_r+0x9c> + 25558: 1100004c andi r4,r2,1 + 2555c: 20001c1e bne r4,zero,255d0 <__swsetup_r+0xc0> + 25560: 1080008c andi r2,r2,2 + 25564: 1000291e bne r2,zero,2560c <__swsetup_r+0xfc> + 25568: 80800517 ldw r2,20(r16) + 2556c: 80800215 stw r2,8(r16) + 25570: 18001c26 beq r3,zero,255e4 <__swsetup_r+0xd4> + 25574: 0005883a mov r2,zero + 25578: dfc00217 ldw ra,8(sp) + 2557c: dc400117 ldw r17,4(sp) + 25580: dc000017 ldw r16,0(sp) + 25584: dec00304 addi sp,sp,12 + 25588: f800283a ret + 2558c: 2080040c andi r2,r4,16 + 25590: 10002e26 beq r2,zero,2564c <__swsetup_r+0x13c> + 25594: 2080010c andi r2,r4,4 + 25598: 10001e1e bne r2,zero,25614 <__swsetup_r+0x104> + 2559c: 80c00417 ldw r3,16(r16) + 255a0: 20800214 ori r2,r4,8 + 255a4: 8080030d sth r2,12(r16) + 255a8: 183feb1e bne r3,zero,25558 <_gp+0xfffe9020> + 255ac: 1100a00c andi r4,r2,640 + 255b0: 01408004 movi r5,512 + 255b4: 217fe826 beq r4,r5,25558 <_gp+0xfffe9020> + 255b8: 800b883a mov r5,r16 + 255bc: 8809883a mov r4,r17 + 255c0: 00280880 call 28088 <__smakebuf_r> + 255c4: 8080030b ldhu r2,12(r16) + 255c8: 80c00417 ldw r3,16(r16) + 255cc: 003fe206 br 25558 <_gp+0xfffe9020> + 255d0: 80800517 ldw r2,20(r16) + 255d4: 80000215 stw zero,8(r16) + 255d8: 0085c83a sub r2,zero,r2 + 255dc: 80800615 stw r2,24(r16) + 255e0: 183fe41e bne r3,zero,25574 <_gp+0xfffe903c> + 255e4: 80c0030b ldhu r3,12(r16) + 255e8: 0005883a mov r2,zero + 255ec: 1900200c andi r4,r3,128 + 255f0: 203fe126 beq r4,zero,25578 <_gp+0xfffe9040> + 255f4: 18c01014 ori r3,r3,64 + 255f8: 80c0030d sth r3,12(r16) + 255fc: 00bfffc4 movi r2,-1 + 25600: 003fdd06 br 25578 <_gp+0xfffe9040> + 25604: 00274e40 call 274e4 <__sinit> + 25608: 003fcd06 br 25540 <_gp+0xfffe9008> + 2560c: 0005883a mov r2,zero + 25610: 003fd606 br 2556c <_gp+0xfffe9034> + 25614: 81400c17 ldw r5,48(r16) + 25618: 28000626 beq r5,zero,25634 <__swsetup_r+0x124> + 2561c: 80801004 addi r2,r16,64 + 25620: 28800326 beq r5,r2,25630 <__swsetup_r+0x120> + 25624: 8809883a mov r4,r17 + 25628: 00276580 call 27658 <_free_r> + 2562c: 8100030b ldhu r4,12(r16) + 25630: 80000c15 stw zero,48(r16) + 25634: 80c00417 ldw r3,16(r16) + 25638: 00bff6c4 movi r2,-37 + 2563c: 1108703a and r4,r2,r4 + 25640: 80000115 stw zero,4(r16) + 25644: 80c00015 stw r3,0(r16) + 25648: 003fd506 br 255a0 <_gp+0xfffe9068> + 2564c: 00800244 movi r2,9 + 25650: 88800015 stw r2,0(r17) + 25654: 20801014 ori r2,r4,64 + 25658: 8080030d sth r2,12(r16) + 2565c: 00bfffc4 movi r2,-1 + 25660: 003fc506 br 25578 <_gp+0xfffe9040> + +00025664 : + 25664: defff704 addi sp,sp,-36 + 25668: dc800215 stw r18,8(sp) + 2566c: 20800417 ldw r2,16(r4) + 25670: 2c800417 ldw r18,16(r5) + 25674: dfc00815 stw ra,32(sp) + 25678: ddc00715 stw r23,28(sp) + 2567c: dd800615 stw r22,24(sp) + 25680: dd400515 stw r21,20(sp) + 25684: dd000415 stw r20,16(sp) + 25688: dcc00315 stw r19,12(sp) + 2568c: dc400115 stw r17,4(sp) + 25690: dc000015 stw r16,0(sp) + 25694: 14807116 blt r2,r18,2585c + 25698: 94bfffc4 addi r18,r18,-1 + 2569c: 94ad883a add r22,r18,r18 + 256a0: b5ad883a add r22,r22,r22 + 256a4: 2c400504 addi r17,r5,20 + 256a8: 8da9883a add r20,r17,r22 + 256ac: 25400504 addi r21,r4,20 + 256b0: 282f883a mov r23,r5 + 256b4: adad883a add r22,r21,r22 + 256b8: a1400017 ldw r5,0(r20) + 256bc: 2021883a mov r16,r4 + 256c0: b1000017 ldw r4,0(r22) + 256c4: 29400044 addi r5,r5,1 + 256c8: 00225dc0 call 225dc <__udivsi3> + 256cc: 1027883a mov r19,r2 + 256d0: 10002c26 beq r2,zero,25784 + 256d4: a813883a mov r9,r21 + 256d8: 880b883a mov r5,r17 + 256dc: 0009883a mov r4,zero + 256e0: 000d883a mov r6,zero + 256e4: 2a000017 ldw r8,0(r5) + 256e8: 49c00017 ldw r7,0(r9) + 256ec: 29400104 addi r5,r5,4 + 256f0: 40bfffcc andi r2,r8,65535 + 256f4: 14c5383a mul r2,r2,r19 + 256f8: 4010d43a srli r8,r8,16 + 256fc: 38ffffcc andi r3,r7,65535 + 25700: 1105883a add r2,r2,r4 + 25704: 1008d43a srli r4,r2,16 + 25708: 44d1383a mul r8,r8,r19 + 2570c: 198d883a add r6,r3,r6 + 25710: 10ffffcc andi r3,r2,65535 + 25714: 30c7c83a sub r3,r6,r3 + 25718: 380ed43a srli r7,r7,16 + 2571c: 4105883a add r2,r8,r4 + 25720: 180dd43a srai r6,r3,16 + 25724: 113fffcc andi r4,r2,65535 + 25728: 390fc83a sub r7,r7,r4 + 2572c: 398d883a add r6,r7,r6 + 25730: 300e943a slli r7,r6,16 + 25734: 18ffffcc andi r3,r3,65535 + 25738: 1008d43a srli r4,r2,16 + 2573c: 38ceb03a or r7,r7,r3 + 25740: 49c00015 stw r7,0(r9) + 25744: 300dd43a srai r6,r6,16 + 25748: 4a400104 addi r9,r9,4 + 2574c: a17fe52e bgeu r20,r5,256e4 <_gp+0xfffe91ac> + 25750: b0800017 ldw r2,0(r22) + 25754: 10000b1e bne r2,zero,25784 + 25758: b0bfff04 addi r2,r22,-4 + 2575c: a880082e bgeu r21,r2,25780 + 25760: b0ffff17 ldw r3,-4(r22) + 25764: 18000326 beq r3,zero,25774 + 25768: 00000506 br 25780 + 2576c: 10c00017 ldw r3,0(r2) + 25770: 1800031e bne r3,zero,25780 + 25774: 10bfff04 addi r2,r2,-4 + 25778: 94bfffc4 addi r18,r18,-1 + 2577c: a8bffb36 bltu r21,r2,2576c <_gp+0xfffe9234> + 25780: 84800415 stw r18,16(r16) + 25784: b80b883a mov r5,r23 + 25788: 8009883a mov r4,r16 + 2578c: 0028e940 call 28e94 <__mcmp> + 25790: 10002616 blt r2,zero,2582c + 25794: 9cc00044 addi r19,r19,1 + 25798: a805883a mov r2,r21 + 2579c: 000b883a mov r5,zero + 257a0: 11000017 ldw r4,0(r2) + 257a4: 89800017 ldw r6,0(r17) + 257a8: 10800104 addi r2,r2,4 + 257ac: 20ffffcc andi r3,r4,65535 + 257b0: 194b883a add r5,r3,r5 + 257b4: 30ffffcc andi r3,r6,65535 + 257b8: 28c7c83a sub r3,r5,r3 + 257bc: 300cd43a srli r6,r6,16 + 257c0: 2008d43a srli r4,r4,16 + 257c4: 180bd43a srai r5,r3,16 + 257c8: 18ffffcc andi r3,r3,65535 + 257cc: 2189c83a sub r4,r4,r6 + 257d0: 2149883a add r4,r4,r5 + 257d4: 200c943a slli r6,r4,16 + 257d8: 8c400104 addi r17,r17,4 + 257dc: 200bd43a srai r5,r4,16 + 257e0: 30c6b03a or r3,r6,r3 + 257e4: 10ffff15 stw r3,-4(r2) + 257e8: a47fed2e bgeu r20,r17,257a0 <_gp+0xfffe9268> + 257ec: 9485883a add r2,r18,r18 + 257f0: 1085883a add r2,r2,r2 + 257f4: a887883a add r3,r21,r2 + 257f8: 18800017 ldw r2,0(r3) + 257fc: 10000b1e bne r2,zero,2582c + 25800: 18bfff04 addi r2,r3,-4 + 25804: a880082e bgeu r21,r2,25828 + 25808: 18ffff17 ldw r3,-4(r3) + 2580c: 18000326 beq r3,zero,2581c + 25810: 00000506 br 25828 + 25814: 10c00017 ldw r3,0(r2) + 25818: 1800031e bne r3,zero,25828 + 2581c: 10bfff04 addi r2,r2,-4 + 25820: 94bfffc4 addi r18,r18,-1 + 25824: a8bffb36 bltu r21,r2,25814 <_gp+0xfffe92dc> + 25828: 84800415 stw r18,16(r16) + 2582c: 9805883a mov r2,r19 + 25830: dfc00817 ldw ra,32(sp) + 25834: ddc00717 ldw r23,28(sp) + 25838: dd800617 ldw r22,24(sp) + 2583c: dd400517 ldw r21,20(sp) + 25840: dd000417 ldw r20,16(sp) + 25844: dcc00317 ldw r19,12(sp) + 25848: dc800217 ldw r18,8(sp) + 2584c: dc400117 ldw r17,4(sp) + 25850: dc000017 ldw r16,0(sp) + 25854: dec00904 addi sp,sp,36 + 25858: f800283a ret + 2585c: 0005883a mov r2,zero + 25860: 003ff306 br 25830 <_gp+0xfffe92f8> + +00025864 <_dtoa_r>: + 25864: 20801017 ldw r2,64(r4) + 25868: deffde04 addi sp,sp,-136 + 2586c: df002015 stw fp,128(sp) + 25870: dcc01b15 stw r19,108(sp) + 25874: dc801a15 stw r18,104(sp) + 25878: dc401915 stw r17,100(sp) + 2587c: dc001815 stw r16,96(sp) + 25880: dfc02115 stw ra,132(sp) + 25884: ddc01f15 stw r23,124(sp) + 25888: dd801e15 stw r22,120(sp) + 2588c: dd401d15 stw r21,116(sp) + 25890: dd001c15 stw r20,112(sp) + 25894: d9c00315 stw r7,12(sp) + 25898: 2039883a mov fp,r4 + 2589c: 3023883a mov r17,r6 + 258a0: 2825883a mov r18,r5 + 258a4: dc002417 ldw r16,144(sp) + 258a8: 3027883a mov r19,r6 + 258ac: 10000826 beq r2,zero,258d0 <_dtoa_r+0x6c> + 258b0: 21801117 ldw r6,68(r4) + 258b4: 00c00044 movi r3,1 + 258b8: 100b883a mov r5,r2 + 258bc: 1986983a sll r3,r3,r6 + 258c0: 11800115 stw r6,4(r2) + 258c4: 10c00215 stw r3,8(r2) + 258c8: 00286740 call 28674 <_Bfree> + 258cc: e0001015 stw zero,64(fp) + 258d0: 88002e16 blt r17,zero,2598c <_dtoa_r+0x128> + 258d4: 80000015 stw zero,0(r16) + 258d8: 889ffc2c andhi r2,r17,32752 + 258dc: 00dffc34 movhi r3,32752 + 258e0: 10c01c26 beq r2,r3,25954 <_dtoa_r+0xf0> + 258e4: 000d883a mov r6,zero + 258e8: 000f883a mov r7,zero + 258ec: 9009883a mov r4,r18 + 258f0: 980b883a mov r5,r19 + 258f4: 002dae00 call 2dae0 <__eqdf2> + 258f8: 10002b1e bne r2,zero,259a8 <_dtoa_r+0x144> + 258fc: d9c02317 ldw r7,140(sp) + 25900: 00800044 movi r2,1 + 25904: 38800015 stw r2,0(r7) + 25908: d8802517 ldw r2,148(sp) + 2590c: 10019e26 beq r2,zero,25f88 <_dtoa_r+0x724> + 25910: d8c02517 ldw r3,148(sp) + 25914: 008000f4 movhi r2,3 + 25918: 10880c44 addi r2,r2,8241 + 2591c: 18800015 stw r2,0(r3) + 25920: 10bfffc4 addi r2,r2,-1 + 25924: dfc02117 ldw ra,132(sp) + 25928: df002017 ldw fp,128(sp) + 2592c: ddc01f17 ldw r23,124(sp) + 25930: dd801e17 ldw r22,120(sp) + 25934: dd401d17 ldw r21,116(sp) + 25938: dd001c17 ldw r20,112(sp) + 2593c: dcc01b17 ldw r19,108(sp) + 25940: dc801a17 ldw r18,104(sp) + 25944: dc401917 ldw r17,100(sp) + 25948: dc001817 ldw r16,96(sp) + 2594c: dec02204 addi sp,sp,136 + 25950: f800283a ret + 25954: d8c02317 ldw r3,140(sp) + 25958: 0089c3c4 movi r2,9999 + 2595c: 18800015 stw r2,0(r3) + 25960: 90017726 beq r18,zero,25f40 <_dtoa_r+0x6dc> + 25964: 008000f4 movhi r2,3 + 25968: 10881804 addi r2,r2,8288 + 2596c: d9002517 ldw r4,148(sp) + 25970: 203fec26 beq r4,zero,25924 <_gp+0xfffe93ec> + 25974: 10c000c7 ldb r3,3(r2) + 25978: 1801781e bne r3,zero,25f5c <_dtoa_r+0x6f8> + 2597c: 10c000c4 addi r3,r2,3 + 25980: d9802517 ldw r6,148(sp) + 25984: 30c00015 stw r3,0(r6) + 25988: 003fe606 br 25924 <_gp+0xfffe93ec> + 2598c: 04e00034 movhi r19,32768 + 25990: 9cffffc4 addi r19,r19,-1 + 25994: 00800044 movi r2,1 + 25998: 8ce6703a and r19,r17,r19 + 2599c: 80800015 stw r2,0(r16) + 259a0: 9823883a mov r17,r19 + 259a4: 003fcc06 br 258d8 <_gp+0xfffe93a0> + 259a8: d8800204 addi r2,sp,8 + 259ac: d8800015 stw r2,0(sp) + 259b0: d9c00104 addi r7,sp,4 + 259b4: 900b883a mov r5,r18 + 259b8: 980d883a mov r6,r19 + 259bc: e009883a mov r4,fp + 259c0: 8820d53a srli r16,r17,20 + 259c4: 00292600 call 29260 <__d2b> + 259c8: d8800915 stw r2,36(sp) + 259cc: 8001651e bne r16,zero,25f64 <_dtoa_r+0x700> + 259d0: dd800217 ldw r22,8(sp) + 259d4: dc000117 ldw r16,4(sp) + 259d8: 00800804 movi r2,32 + 259dc: b421883a add r16,r22,r16 + 259e0: 80c10c84 addi r3,r16,1074 + 259e4: 10c2d10e bge r2,r3,2652c <_dtoa_r+0xcc8> + 259e8: 00801004 movi r2,64 + 259ec: 81010484 addi r4,r16,1042 + 259f0: 10c7c83a sub r3,r2,r3 + 259f4: 9108d83a srl r4,r18,r4 + 259f8: 88e2983a sll r17,r17,r3 + 259fc: 2448b03a or r4,r4,r17 + 25a00: 002eea80 call 2eea8 <__floatunsidf> + 25a04: 017f8434 movhi r5,65040 + 25a08: 01800044 movi r6,1 + 25a0c: 1009883a mov r4,r2 + 25a10: 194b883a add r5,r3,r5 + 25a14: 843fffc4 addi r16,r16,-1 + 25a18: d9801115 stw r6,68(sp) + 25a1c: 000d883a mov r6,zero + 25a20: 01cffe34 movhi r7,16376 + 25a24: 002e4500 call 2e450 <__subdf3> + 25a28: 0198dbf4 movhi r6,25455 + 25a2c: 01cff4f4 movhi r7,16339 + 25a30: 3190d844 addi r6,r6,17249 + 25a34: 39e1e9c4 addi r7,r7,-30809 + 25a38: 1009883a mov r4,r2 + 25a3c: 180b883a mov r5,r3 + 25a40: 002dd380 call 2dd38 <__muldf3> + 25a44: 01a2d874 movhi r6,35681 + 25a48: 01cff1f4 movhi r7,16327 + 25a4c: 31b22cc4 addi r6,r6,-14157 + 25a50: 39e28a04 addi r7,r7,-30168 + 25a54: 180b883a mov r5,r3 + 25a58: 1009883a mov r4,r2 + 25a5c: 002c94c0 call 2c94c <__adddf3> + 25a60: 8009883a mov r4,r16 + 25a64: 1029883a mov r20,r2 + 25a68: 1823883a mov r17,r3 + 25a6c: 002edcc0 call 2edcc <__floatsidf> + 25a70: 019427f4 movhi r6,20639 + 25a74: 01cff4f4 movhi r7,16339 + 25a78: 319e7ec4 addi r6,r6,31227 + 25a7c: 39d104c4 addi r7,r7,17427 + 25a80: 1009883a mov r4,r2 + 25a84: 180b883a mov r5,r3 + 25a88: 002dd380 call 2dd38 <__muldf3> + 25a8c: 100d883a mov r6,r2 + 25a90: 180f883a mov r7,r3 + 25a94: a009883a mov r4,r20 + 25a98: 880b883a mov r5,r17 + 25a9c: 002c94c0 call 2c94c <__adddf3> + 25aa0: 1009883a mov r4,r2 + 25aa4: 180b883a mov r5,r3 + 25aa8: 1029883a mov r20,r2 + 25aac: 1823883a mov r17,r3 + 25ab0: 002ed4c0 call 2ed4c <__fixdfsi> + 25ab4: 000d883a mov r6,zero + 25ab8: 000f883a mov r7,zero + 25abc: a009883a mov r4,r20 + 25ac0: 880b883a mov r5,r17 + 25ac4: d8800515 stw r2,20(sp) + 25ac8: 002dc440 call 2dc44 <__ledf2> + 25acc: 10028716 blt r2,zero,264ec <_dtoa_r+0xc88> + 25ad0: d8c00517 ldw r3,20(sp) + 25ad4: 00800584 movi r2,22 + 25ad8: 10c27536 bltu r2,r3,264b0 <_dtoa_r+0xc4c> + 25adc: 180490fa slli r2,r3,3 + 25ae0: 00c000f4 movhi r3,3 + 25ae4: 18c83404 addi r3,r3,8400 + 25ae8: 1885883a add r2,r3,r2 + 25aec: 11000017 ldw r4,0(r2) + 25af0: 11400117 ldw r5,4(r2) + 25af4: 900d883a mov r6,r18 + 25af8: 980f883a mov r7,r19 + 25afc: 002db680 call 2db68 <__gedf2> + 25b00: 00828d0e bge zero,r2,26538 <_dtoa_r+0xcd4> + 25b04: d9000517 ldw r4,20(sp) + 25b08: d8000e15 stw zero,56(sp) + 25b0c: 213fffc4 addi r4,r4,-1 + 25b10: d9000515 stw r4,20(sp) + 25b14: b42dc83a sub r22,r22,r16 + 25b18: b5bfffc4 addi r22,r22,-1 + 25b1c: b0026f16 blt r22,zero,264dc <_dtoa_r+0xc78> + 25b20: d8000815 stw zero,32(sp) + 25b24: d9c00517 ldw r7,20(sp) + 25b28: 38026416 blt r7,zero,264bc <_dtoa_r+0xc58> + 25b2c: b1ed883a add r22,r22,r7 + 25b30: d9c00d15 stw r7,52(sp) + 25b34: d8000a15 stw zero,40(sp) + 25b38: d9800317 ldw r6,12(sp) + 25b3c: 00800244 movi r2,9 + 25b40: 11811436 bltu r2,r6,25f94 <_dtoa_r+0x730> + 25b44: 00800144 movi r2,5 + 25b48: 1184e10e bge r2,r6,26ed0 <_dtoa_r+0x166c> + 25b4c: 31bfff04 addi r6,r6,-4 + 25b50: d9800315 stw r6,12(sp) + 25b54: 0023883a mov r17,zero + 25b58: d9800317 ldw r6,12(sp) + 25b5c: 008000c4 movi r2,3 + 25b60: 30836726 beq r6,r2,26900 <_dtoa_r+0x109c> + 25b64: 1183410e bge r2,r6,2686c <_dtoa_r+0x1008> + 25b68: d9c00317 ldw r7,12(sp) + 25b6c: 00800104 movi r2,4 + 25b70: 38827c26 beq r7,r2,26564 <_dtoa_r+0xd00> + 25b74: 00800144 movi r2,5 + 25b78: 3884c41e bne r7,r2,26e8c <_dtoa_r+0x1628> + 25b7c: 00800044 movi r2,1 + 25b80: d8800b15 stw r2,44(sp) + 25b84: d8c00517 ldw r3,20(sp) + 25b88: d9002217 ldw r4,136(sp) + 25b8c: 1907883a add r3,r3,r4 + 25b90: 19800044 addi r6,r3,1 + 25b94: d8c00c15 stw r3,48(sp) + 25b98: d9800615 stw r6,24(sp) + 25b9c: 0183a40e bge zero,r6,26a30 <_dtoa_r+0x11cc> + 25ba0: d9800617 ldw r6,24(sp) + 25ba4: 3021883a mov r16,r6 + 25ba8: e0001115 stw zero,68(fp) + 25bac: 008005c4 movi r2,23 + 25bb0: 1184c92e bgeu r2,r6,26ed8 <_dtoa_r+0x1674> + 25bb4: 00c00044 movi r3,1 + 25bb8: 00800104 movi r2,4 + 25bbc: 1085883a add r2,r2,r2 + 25bc0: 11000504 addi r4,r2,20 + 25bc4: 180b883a mov r5,r3 + 25bc8: 18c00044 addi r3,r3,1 + 25bcc: 313ffb2e bgeu r6,r4,25bbc <_gp+0xfffe9684> + 25bd0: e1401115 stw r5,68(fp) + 25bd4: e009883a mov r4,fp + 25bd8: 00285cc0 call 285cc <_Balloc> + 25bdc: d8800715 stw r2,28(sp) + 25be0: e0801015 stw r2,64(fp) + 25be4: 00800384 movi r2,14 + 25be8: 1400f736 bltu r2,r16,25fc8 <_dtoa_r+0x764> + 25bec: 8800f626 beq r17,zero,25fc8 <_dtoa_r+0x764> + 25bf0: d9c00517 ldw r7,20(sp) + 25bf4: 01c39a0e bge zero,r7,26a60 <_dtoa_r+0x11fc> + 25bf8: 388003cc andi r2,r7,15 + 25bfc: 100490fa slli r2,r2,3 + 25c00: 382bd13a srai r21,r7,4 + 25c04: 00c000f4 movhi r3,3 + 25c08: 18c83404 addi r3,r3,8400 + 25c0c: 1885883a add r2,r3,r2 + 25c10: a8c0040c andi r3,r21,16 + 25c14: 12400017 ldw r9,0(r2) + 25c18: 12000117 ldw r8,4(r2) + 25c1c: 18037926 beq r3,zero,26a04 <_dtoa_r+0x11a0> + 25c20: 008000f4 movhi r2,3 + 25c24: 10882a04 addi r2,r2,8360 + 25c28: 11800817 ldw r6,32(r2) + 25c2c: 11c00917 ldw r7,36(r2) + 25c30: 9009883a mov r4,r18 + 25c34: 980b883a mov r5,r19 + 25c38: da001715 stw r8,92(sp) + 25c3c: da401615 stw r9,88(sp) + 25c40: 002d1f80 call 2d1f8 <__divdf3> + 25c44: da001717 ldw r8,92(sp) + 25c48: da401617 ldw r9,88(sp) + 25c4c: ad4003cc andi r21,r21,15 + 25c50: 040000c4 movi r16,3 + 25c54: 1023883a mov r17,r2 + 25c58: 1829883a mov r20,r3 + 25c5c: a8001126 beq r21,zero,25ca4 <_dtoa_r+0x440> + 25c60: 05c000f4 movhi r23,3 + 25c64: bdc82a04 addi r23,r23,8360 + 25c68: 4805883a mov r2,r9 + 25c6c: 4007883a mov r3,r8 + 25c70: a980004c andi r6,r21,1 + 25c74: 1009883a mov r4,r2 + 25c78: a82bd07a srai r21,r21,1 + 25c7c: 180b883a mov r5,r3 + 25c80: 30000426 beq r6,zero,25c94 <_dtoa_r+0x430> + 25c84: b9800017 ldw r6,0(r23) + 25c88: b9c00117 ldw r7,4(r23) + 25c8c: 84000044 addi r16,r16,1 + 25c90: 002dd380 call 2dd38 <__muldf3> + 25c94: bdc00204 addi r23,r23,8 + 25c98: a83ff51e bne r21,zero,25c70 <_gp+0xfffe9738> + 25c9c: 1013883a mov r9,r2 + 25ca0: 1811883a mov r8,r3 + 25ca4: 480d883a mov r6,r9 + 25ca8: 400f883a mov r7,r8 + 25cac: 8809883a mov r4,r17 + 25cb0: a00b883a mov r5,r20 + 25cb4: 002d1f80 call 2d1f8 <__divdf3> + 25cb8: d8800f15 stw r2,60(sp) + 25cbc: d8c01015 stw r3,64(sp) + 25cc0: d8c00e17 ldw r3,56(sp) + 25cc4: 18000626 beq r3,zero,25ce0 <_dtoa_r+0x47c> + 25cc8: d9000f17 ldw r4,60(sp) + 25ccc: d9401017 ldw r5,64(sp) + 25cd0: 000d883a mov r6,zero + 25cd4: 01cffc34 movhi r7,16368 + 25cd8: 002dc440 call 2dc44 <__ledf2> + 25cdc: 10040b16 blt r2,zero,26d0c <_dtoa_r+0x14a8> + 25ce0: 8009883a mov r4,r16 + 25ce4: 002edcc0 call 2edcc <__floatsidf> + 25ce8: d9800f17 ldw r6,60(sp) + 25cec: d9c01017 ldw r7,64(sp) + 25cf0: 1009883a mov r4,r2 + 25cf4: 180b883a mov r5,r3 + 25cf8: 002dd380 call 2dd38 <__muldf3> + 25cfc: 000d883a mov r6,zero + 25d00: 01d00734 movhi r7,16412 + 25d04: 1009883a mov r4,r2 + 25d08: 180b883a mov r5,r3 + 25d0c: 002c94c0 call 2c94c <__adddf3> + 25d10: 1021883a mov r16,r2 + 25d14: d8800617 ldw r2,24(sp) + 25d18: 047f3034 movhi r17,64704 + 25d1c: 1c63883a add r17,r3,r17 + 25d20: 10031826 beq r2,zero,26984 <_dtoa_r+0x1120> + 25d24: d8c00517 ldw r3,20(sp) + 25d28: db000617 ldw r12,24(sp) + 25d2c: d8c01315 stw r3,76(sp) + 25d30: d9000b17 ldw r4,44(sp) + 25d34: 20038f26 beq r4,zero,26b74 <_dtoa_r+0x1310> + 25d38: 60bfffc4 addi r2,r12,-1 + 25d3c: 100490fa slli r2,r2,3 + 25d40: 00c000f4 movhi r3,3 + 25d44: 18c83404 addi r3,r3,8400 + 25d48: 1885883a add r2,r3,r2 + 25d4c: 11800017 ldw r6,0(r2) + 25d50: 11c00117 ldw r7,4(r2) + 25d54: d8800717 ldw r2,28(sp) + 25d58: 0009883a mov r4,zero + 25d5c: 014ff834 movhi r5,16352 + 25d60: db001615 stw r12,88(sp) + 25d64: 15c00044 addi r23,r2,1 + 25d68: 002d1f80 call 2d1f8 <__divdf3> + 25d6c: 800d883a mov r6,r16 + 25d70: 880f883a mov r7,r17 + 25d74: 1009883a mov r4,r2 + 25d78: 180b883a mov r5,r3 + 25d7c: 002e4500 call 2e450 <__subdf3> + 25d80: d9401017 ldw r5,64(sp) + 25d84: d9000f17 ldw r4,60(sp) + 25d88: 102b883a mov r21,r2 + 25d8c: d8c01215 stw r3,72(sp) + 25d90: 002ed4c0 call 2ed4c <__fixdfsi> + 25d94: 1009883a mov r4,r2 + 25d98: 1029883a mov r20,r2 + 25d9c: 002edcc0 call 2edcc <__floatsidf> + 25da0: d9000f17 ldw r4,60(sp) + 25da4: d9401017 ldw r5,64(sp) + 25da8: 100d883a mov r6,r2 + 25dac: 180f883a mov r7,r3 + 25db0: 002e4500 call 2e450 <__subdf3> + 25db4: 1823883a mov r17,r3 + 25db8: d8c00717 ldw r3,28(sp) + 25dbc: d9401217 ldw r5,72(sp) + 25dc0: a2000c04 addi r8,r20,48 + 25dc4: 1021883a mov r16,r2 + 25dc8: 1a000005 stb r8,0(r3) + 25dcc: 800d883a mov r6,r16 + 25dd0: 880f883a mov r7,r17 + 25dd4: a809883a mov r4,r21 + 25dd8: 4029883a mov r20,r8 + 25ddc: 002db680 call 2db68 <__gedf2> + 25de0: 00841d16 blt zero,r2,26e58 <_dtoa_r+0x15f4> + 25de4: 800d883a mov r6,r16 + 25de8: 880f883a mov r7,r17 + 25dec: 0009883a mov r4,zero + 25df0: 014ffc34 movhi r5,16368 + 25df4: 002e4500 call 2e450 <__subdf3> + 25df8: d9401217 ldw r5,72(sp) + 25dfc: 100d883a mov r6,r2 + 25e00: 180f883a mov r7,r3 + 25e04: a809883a mov r4,r21 + 25e08: 002db680 call 2db68 <__gedf2> + 25e0c: db001617 ldw r12,88(sp) + 25e10: 00840e16 blt zero,r2,26e4c <_dtoa_r+0x15e8> + 25e14: 00800044 movi r2,1 + 25e18: 13006b0e bge r2,r12,25fc8 <_dtoa_r+0x764> + 25e1c: d9000717 ldw r4,28(sp) + 25e20: dd800f15 stw r22,60(sp) + 25e24: dcc01015 stw r19,64(sp) + 25e28: 2319883a add r12,r4,r12 + 25e2c: dcc01217 ldw r19,72(sp) + 25e30: 602d883a mov r22,r12 + 25e34: dc801215 stw r18,72(sp) + 25e38: b825883a mov r18,r23 + 25e3c: 00000906 br 25e64 <_dtoa_r+0x600> + 25e40: 002e4500 call 2e450 <__subdf3> + 25e44: a80d883a mov r6,r21 + 25e48: 980f883a mov r7,r19 + 25e4c: 1009883a mov r4,r2 + 25e50: 180b883a mov r5,r3 + 25e54: 002dc440 call 2dc44 <__ledf2> + 25e58: 1003e816 blt r2,zero,26dfc <_dtoa_r+0x1598> + 25e5c: b825883a mov r18,r23 + 25e60: bd83e926 beq r23,r22,26e08 <_dtoa_r+0x15a4> + 25e64: a809883a mov r4,r21 + 25e68: 980b883a mov r5,r19 + 25e6c: 000d883a mov r6,zero + 25e70: 01d00934 movhi r7,16420 + 25e74: 002dd380 call 2dd38 <__muldf3> + 25e78: 000d883a mov r6,zero + 25e7c: 01d00934 movhi r7,16420 + 25e80: 8009883a mov r4,r16 + 25e84: 880b883a mov r5,r17 + 25e88: 102b883a mov r21,r2 + 25e8c: 1827883a mov r19,r3 + 25e90: 002dd380 call 2dd38 <__muldf3> + 25e94: 180b883a mov r5,r3 + 25e98: 1009883a mov r4,r2 + 25e9c: 1821883a mov r16,r3 + 25ea0: 1023883a mov r17,r2 + 25ea4: 002ed4c0 call 2ed4c <__fixdfsi> + 25ea8: 1009883a mov r4,r2 + 25eac: 1029883a mov r20,r2 + 25eb0: 002edcc0 call 2edcc <__floatsidf> + 25eb4: 8809883a mov r4,r17 + 25eb8: 800b883a mov r5,r16 + 25ebc: 100d883a mov r6,r2 + 25ec0: 180f883a mov r7,r3 + 25ec4: 002e4500 call 2e450 <__subdf3> + 25ec8: a5000c04 addi r20,r20,48 + 25ecc: a80d883a mov r6,r21 + 25ed0: 980f883a mov r7,r19 + 25ed4: 1009883a mov r4,r2 + 25ed8: 180b883a mov r5,r3 + 25edc: 95000005 stb r20,0(r18) + 25ee0: 1021883a mov r16,r2 + 25ee4: 1823883a mov r17,r3 + 25ee8: 002dc440 call 2dc44 <__ledf2> + 25eec: bdc00044 addi r23,r23,1 + 25ef0: 800d883a mov r6,r16 + 25ef4: 880f883a mov r7,r17 + 25ef8: 0009883a mov r4,zero + 25efc: 014ffc34 movhi r5,16368 + 25f00: 103fcf0e bge r2,zero,25e40 <_gp+0xfffe9908> + 25f04: d8c01317 ldw r3,76(sp) + 25f08: d8c00515 stw r3,20(sp) + 25f0c: d9400917 ldw r5,36(sp) + 25f10: e009883a mov r4,fp + 25f14: 00286740 call 28674 <_Bfree> + 25f18: d9000517 ldw r4,20(sp) + 25f1c: d9802317 ldw r6,140(sp) + 25f20: d9c02517 ldw r7,148(sp) + 25f24: b8000005 stb zero,0(r23) + 25f28: 20800044 addi r2,r4,1 + 25f2c: 30800015 stw r2,0(r6) + 25f30: 3802aa26 beq r7,zero,269dc <_dtoa_r+0x1178> + 25f34: 3dc00015 stw r23,0(r7) + 25f38: d8800717 ldw r2,28(sp) + 25f3c: 003e7906 br 25924 <_gp+0xfffe93ec> + 25f40: 00800434 movhi r2,16 + 25f44: 10bfffc4 addi r2,r2,-1 + 25f48: 88a2703a and r17,r17,r2 + 25f4c: 883e851e bne r17,zero,25964 <_gp+0xfffe942c> + 25f50: 008000f4 movhi r2,3 + 25f54: 10881504 addi r2,r2,8276 + 25f58: 003e8406 br 2596c <_gp+0xfffe9434> + 25f5c: 10c00204 addi r3,r2,8 + 25f60: 003e8706 br 25980 <_gp+0xfffe9448> + 25f64: 01400434 movhi r5,16 + 25f68: 297fffc4 addi r5,r5,-1 + 25f6c: 994a703a and r5,r19,r5 + 25f70: 9009883a mov r4,r18 + 25f74: 843f0044 addi r16,r16,-1023 + 25f78: 294ffc34 orhi r5,r5,16368 + 25f7c: dd800217 ldw r22,8(sp) + 25f80: d8001115 stw zero,68(sp) + 25f84: 003ea506 br 25a1c <_gp+0xfffe94e4> + 25f88: 008000f4 movhi r2,3 + 25f8c: 10880c04 addi r2,r2,8240 + 25f90: 003e6406 br 25924 <_gp+0xfffe93ec> + 25f94: e0001115 stw zero,68(fp) + 25f98: 000b883a mov r5,zero + 25f9c: e009883a mov r4,fp + 25fa0: 00285cc0 call 285cc <_Balloc> + 25fa4: 01bfffc4 movi r6,-1 + 25fa8: 01c00044 movi r7,1 + 25fac: d8800715 stw r2,28(sp) + 25fb0: d9800c15 stw r6,48(sp) + 25fb4: e0801015 stw r2,64(fp) + 25fb8: d8000315 stw zero,12(sp) + 25fbc: d9c00b15 stw r7,44(sp) + 25fc0: d9800615 stw r6,24(sp) + 25fc4: d8002215 stw zero,136(sp) + 25fc8: d8800117 ldw r2,4(sp) + 25fcc: 10008916 blt r2,zero,261f4 <_dtoa_r+0x990> + 25fd0: d9000517 ldw r4,20(sp) + 25fd4: 00c00384 movi r3,14 + 25fd8: 19008616 blt r3,r4,261f4 <_dtoa_r+0x990> + 25fdc: 200490fa slli r2,r4,3 + 25fe0: 00c000f4 movhi r3,3 + 25fe4: d9802217 ldw r6,136(sp) + 25fe8: 18c83404 addi r3,r3,8400 + 25fec: 1885883a add r2,r3,r2 + 25ff0: 14000017 ldw r16,0(r2) + 25ff4: 14400117 ldw r17,4(r2) + 25ff8: 30016316 blt r6,zero,26588 <_dtoa_r+0xd24> + 25ffc: 800d883a mov r6,r16 + 26000: 880f883a mov r7,r17 + 26004: 9009883a mov r4,r18 + 26008: 980b883a mov r5,r19 + 2600c: 002d1f80 call 2d1f8 <__divdf3> + 26010: 180b883a mov r5,r3 + 26014: 1009883a mov r4,r2 + 26018: 002ed4c0 call 2ed4c <__fixdfsi> + 2601c: 1009883a mov r4,r2 + 26020: 102b883a mov r21,r2 + 26024: 002edcc0 call 2edcc <__floatsidf> + 26028: 800d883a mov r6,r16 + 2602c: 880f883a mov r7,r17 + 26030: 1009883a mov r4,r2 + 26034: 180b883a mov r5,r3 + 26038: 002dd380 call 2dd38 <__muldf3> + 2603c: 100d883a mov r6,r2 + 26040: 180f883a mov r7,r3 + 26044: 9009883a mov r4,r18 + 26048: 980b883a mov r5,r19 + 2604c: 002e4500 call 2e450 <__subdf3> + 26050: d9c00717 ldw r7,28(sp) + 26054: 1009883a mov r4,r2 + 26058: a8800c04 addi r2,r21,48 + 2605c: 38800005 stb r2,0(r7) + 26060: 3dc00044 addi r23,r7,1 + 26064: d9c00617 ldw r7,24(sp) + 26068: 01800044 movi r6,1 + 2606c: 180b883a mov r5,r3 + 26070: 2005883a mov r2,r4 + 26074: 39803826 beq r7,r6,26158 <_dtoa_r+0x8f4> + 26078: 000d883a mov r6,zero + 2607c: 01d00934 movhi r7,16420 + 26080: 002dd380 call 2dd38 <__muldf3> + 26084: 000d883a mov r6,zero + 26088: 000f883a mov r7,zero + 2608c: 1009883a mov r4,r2 + 26090: 180b883a mov r5,r3 + 26094: 1025883a mov r18,r2 + 26098: 1827883a mov r19,r3 + 2609c: 002dae00 call 2dae0 <__eqdf2> + 260a0: 103f9a26 beq r2,zero,25f0c <_gp+0xfffe99d4> + 260a4: d9c00617 ldw r7,24(sp) + 260a8: d8c00717 ldw r3,28(sp) + 260ac: b829883a mov r20,r23 + 260b0: 38bfffc4 addi r2,r7,-1 + 260b4: 18ad883a add r22,r3,r2 + 260b8: 00000a06 br 260e4 <_dtoa_r+0x880> + 260bc: 002dd380 call 2dd38 <__muldf3> + 260c0: 000d883a mov r6,zero + 260c4: 000f883a mov r7,zero + 260c8: 1009883a mov r4,r2 + 260cc: 180b883a mov r5,r3 + 260d0: 1025883a mov r18,r2 + 260d4: 1827883a mov r19,r3 + 260d8: b829883a mov r20,r23 + 260dc: 002dae00 call 2dae0 <__eqdf2> + 260e0: 103f8a26 beq r2,zero,25f0c <_gp+0xfffe99d4> + 260e4: 800d883a mov r6,r16 + 260e8: 880f883a mov r7,r17 + 260ec: 9009883a mov r4,r18 + 260f0: 980b883a mov r5,r19 + 260f4: 002d1f80 call 2d1f8 <__divdf3> + 260f8: 180b883a mov r5,r3 + 260fc: 1009883a mov r4,r2 + 26100: 002ed4c0 call 2ed4c <__fixdfsi> + 26104: 1009883a mov r4,r2 + 26108: 102b883a mov r21,r2 + 2610c: 002edcc0 call 2edcc <__floatsidf> + 26110: 800d883a mov r6,r16 + 26114: 880f883a mov r7,r17 + 26118: 1009883a mov r4,r2 + 2611c: 180b883a mov r5,r3 + 26120: 002dd380 call 2dd38 <__muldf3> + 26124: 100d883a mov r6,r2 + 26128: 180f883a mov r7,r3 + 2612c: 9009883a mov r4,r18 + 26130: 980b883a mov r5,r19 + 26134: 002e4500 call 2e450 <__subdf3> + 26138: aa000c04 addi r8,r21,48 + 2613c: a2000005 stb r8,0(r20) + 26140: 000d883a mov r6,zero + 26144: 01d00934 movhi r7,16420 + 26148: 1009883a mov r4,r2 + 2614c: 180b883a mov r5,r3 + 26150: a5c00044 addi r23,r20,1 + 26154: b53fd91e bne r22,r20,260bc <_gp+0xfffe9b84> + 26158: 100d883a mov r6,r2 + 2615c: 180f883a mov r7,r3 + 26160: 1009883a mov r4,r2 + 26164: 180b883a mov r5,r3 + 26168: 002c94c0 call 2c94c <__adddf3> + 2616c: 100d883a mov r6,r2 + 26170: 180f883a mov r7,r3 + 26174: 8009883a mov r4,r16 + 26178: 880b883a mov r5,r17 + 2617c: 1027883a mov r19,r2 + 26180: 1825883a mov r18,r3 + 26184: 002dc440 call 2dc44 <__ledf2> + 26188: 10000816 blt r2,zero,261ac <_dtoa_r+0x948> + 2618c: 980d883a mov r6,r19 + 26190: 900f883a mov r7,r18 + 26194: 8009883a mov r4,r16 + 26198: 880b883a mov r5,r17 + 2619c: 002dae00 call 2dae0 <__eqdf2> + 261a0: 103f5a1e bne r2,zero,25f0c <_gp+0xfffe99d4> + 261a4: ad40004c andi r21,r21,1 + 261a8: a83f5826 beq r21,zero,25f0c <_gp+0xfffe99d4> + 261ac: bd3fffc3 ldbu r20,-1(r23) + 261b0: b8bfffc4 addi r2,r23,-1 + 261b4: 1007883a mov r3,r2 + 261b8: 01400e44 movi r5,57 + 261bc: d9800717 ldw r6,28(sp) + 261c0: 00000506 br 261d8 <_dtoa_r+0x974> + 261c4: 18ffffc4 addi r3,r3,-1 + 261c8: 11824726 beq r2,r6,26ae8 <_dtoa_r+0x1284> + 261cc: 1d000003 ldbu r20,0(r3) + 261d0: 102f883a mov r23,r2 + 261d4: 10bfffc4 addi r2,r2,-1 + 261d8: a1003fcc andi r4,r20,255 + 261dc: 2100201c xori r4,r4,128 + 261e0: 213fe004 addi r4,r4,-128 + 261e4: 217ff726 beq r4,r5,261c4 <_gp+0xfffe9c8c> + 261e8: a2000044 addi r8,r20,1 + 261ec: 12000005 stb r8,0(r2) + 261f0: 003f4606 br 25f0c <_gp+0xfffe99d4> + 261f4: d9000b17 ldw r4,44(sp) + 261f8: 2000c826 beq r4,zero,2651c <_dtoa_r+0xcb8> + 261fc: d9800317 ldw r6,12(sp) + 26200: 00c00044 movi r3,1 + 26204: 1980f90e bge r3,r6,265ec <_dtoa_r+0xd88> + 26208: d8800617 ldw r2,24(sp) + 2620c: d8c00a17 ldw r3,40(sp) + 26210: 157fffc4 addi r21,r2,-1 + 26214: 1d41f316 blt r3,r21,269e4 <_dtoa_r+0x1180> + 26218: 1d6bc83a sub r21,r3,r21 + 2621c: d9c00617 ldw r7,24(sp) + 26220: 3802aa16 blt r7,zero,26ccc <_dtoa_r+0x1468> + 26224: dd000817 ldw r20,32(sp) + 26228: d8800617 ldw r2,24(sp) + 2622c: d8c00817 ldw r3,32(sp) + 26230: 01400044 movi r5,1 + 26234: e009883a mov r4,fp + 26238: 1887883a add r3,r3,r2 + 2623c: d8c00815 stw r3,32(sp) + 26240: b0ad883a add r22,r22,r2 + 26244: 00289d80 call 289d8 <__i2b> + 26248: 1023883a mov r17,r2 + 2624c: a0000826 beq r20,zero,26270 <_dtoa_r+0xa0c> + 26250: 0580070e bge zero,r22,26270 <_dtoa_r+0xa0c> + 26254: a005883a mov r2,r20 + 26258: b500b916 blt r22,r20,26540 <_dtoa_r+0xcdc> + 2625c: d9000817 ldw r4,32(sp) + 26260: a0a9c83a sub r20,r20,r2 + 26264: b0adc83a sub r22,r22,r2 + 26268: 2089c83a sub r4,r4,r2 + 2626c: d9000815 stw r4,32(sp) + 26270: d9800a17 ldw r6,40(sp) + 26274: 0181810e bge zero,r6,2687c <_dtoa_r+0x1018> + 26278: d9c00b17 ldw r7,44(sp) + 2627c: 3800b326 beq r7,zero,2654c <_dtoa_r+0xce8> + 26280: a800b226 beq r21,zero,2654c <_dtoa_r+0xce8> + 26284: 880b883a mov r5,r17 + 26288: a80d883a mov r6,r21 + 2628c: e009883a mov r4,fp + 26290: 0028c0c0 call 28c0c <__pow5mult> + 26294: d9800917 ldw r6,36(sp) + 26298: 100b883a mov r5,r2 + 2629c: e009883a mov r4,fp + 262a0: 1023883a mov r17,r2 + 262a4: 0028a140 call 28a14 <__multiply> + 262a8: 1021883a mov r16,r2 + 262ac: d8800a17 ldw r2,40(sp) + 262b0: d9400917 ldw r5,36(sp) + 262b4: e009883a mov r4,fp + 262b8: 1545c83a sub r2,r2,r21 + 262bc: d8800a15 stw r2,40(sp) + 262c0: 00286740 call 28674 <_Bfree> + 262c4: d8c00a17 ldw r3,40(sp) + 262c8: 18009f1e bne r3,zero,26548 <_dtoa_r+0xce4> + 262cc: 05c00044 movi r23,1 + 262d0: e009883a mov r4,fp + 262d4: b80b883a mov r5,r23 + 262d8: 00289d80 call 289d8 <__i2b> + 262dc: d9000d17 ldw r4,52(sp) + 262e0: 102b883a mov r21,r2 + 262e4: 2000ce26 beq r4,zero,26620 <_dtoa_r+0xdbc> + 262e8: 200d883a mov r6,r4 + 262ec: 100b883a mov r5,r2 + 262f0: e009883a mov r4,fp + 262f4: 0028c0c0 call 28c0c <__pow5mult> + 262f8: d9800317 ldw r6,12(sp) + 262fc: 102b883a mov r21,r2 + 26300: b981810e bge r23,r6,26908 <_dtoa_r+0x10a4> + 26304: 0027883a mov r19,zero + 26308: a8800417 ldw r2,16(r21) + 2630c: 05c00804 movi r23,32 + 26310: 10800104 addi r2,r2,4 + 26314: 1085883a add r2,r2,r2 + 26318: 1085883a add r2,r2,r2 + 2631c: a885883a add r2,r21,r2 + 26320: 11000017 ldw r4,0(r2) + 26324: 00288c00 call 288c0 <__hi0bits> + 26328: b885c83a sub r2,r23,r2 + 2632c: 1585883a add r2,r2,r22 + 26330: 108007cc andi r2,r2,31 + 26334: 1000b326 beq r2,zero,26604 <_dtoa_r+0xda0> + 26338: 00c00804 movi r3,32 + 2633c: 1887c83a sub r3,r3,r2 + 26340: 01000104 movi r4,4 + 26344: 20c2cd0e bge r4,r3,26e7c <_dtoa_r+0x1618> + 26348: 00c00704 movi r3,28 + 2634c: 1885c83a sub r2,r3,r2 + 26350: d8c00817 ldw r3,32(sp) + 26354: a0a9883a add r20,r20,r2 + 26358: b0ad883a add r22,r22,r2 + 2635c: 1887883a add r3,r3,r2 + 26360: d8c00815 stw r3,32(sp) + 26364: d9800817 ldw r6,32(sp) + 26368: 0180040e bge zero,r6,2637c <_dtoa_r+0xb18> + 2636c: 800b883a mov r5,r16 + 26370: e009883a mov r4,fp + 26374: 0028d4c0 call 28d4c <__lshift> + 26378: 1021883a mov r16,r2 + 2637c: 0580050e bge zero,r22,26394 <_dtoa_r+0xb30> + 26380: a80b883a mov r5,r21 + 26384: b00d883a mov r6,r22 + 26388: e009883a mov r4,fp + 2638c: 0028d4c0 call 28d4c <__lshift> + 26390: 102b883a mov r21,r2 + 26394: d9c00e17 ldw r7,56(sp) + 26398: 3801211e bne r7,zero,26820 <_dtoa_r+0xfbc> + 2639c: d9800617 ldw r6,24(sp) + 263a0: 0181380e bge zero,r6,26884 <_dtoa_r+0x1020> + 263a4: d8c00b17 ldw r3,44(sp) + 263a8: 1800ab1e bne r3,zero,26658 <_dtoa_r+0xdf4> + 263ac: dc800717 ldw r18,28(sp) + 263b0: dcc00617 ldw r19,24(sp) + 263b4: 9029883a mov r20,r18 + 263b8: 00000206 br 263c4 <_dtoa_r+0xb60> + 263bc: 002869c0 call 2869c <__multadd> + 263c0: 1021883a mov r16,r2 + 263c4: a80b883a mov r5,r21 + 263c8: 8009883a mov r4,r16 + 263cc: 00256640 call 25664 + 263d0: 10800c04 addi r2,r2,48 + 263d4: 90800005 stb r2,0(r18) + 263d8: 94800044 addi r18,r18,1 + 263dc: 9507c83a sub r3,r18,r20 + 263e0: 000f883a mov r7,zero + 263e4: 01800284 movi r6,10 + 263e8: 800b883a mov r5,r16 + 263ec: e009883a mov r4,fp + 263f0: 1cfff216 blt r3,r19,263bc <_gp+0xfffe9e84> + 263f4: 1011883a mov r8,r2 + 263f8: d8800617 ldw r2,24(sp) + 263fc: 0082370e bge zero,r2,26cdc <_dtoa_r+0x1478> + 26400: d9000717 ldw r4,28(sp) + 26404: 0025883a mov r18,zero + 26408: 20af883a add r23,r4,r2 + 2640c: 01800044 movi r6,1 + 26410: 800b883a mov r5,r16 + 26414: e009883a mov r4,fp + 26418: da001715 stw r8,92(sp) + 2641c: 0028d4c0 call 28d4c <__lshift> + 26420: a80b883a mov r5,r21 + 26424: 1009883a mov r4,r2 + 26428: d8800915 stw r2,36(sp) + 2642c: 0028e940 call 28e94 <__mcmp> + 26430: da001717 ldw r8,92(sp) + 26434: 0081800e bge zero,r2,26a38 <_dtoa_r+0x11d4> + 26438: b93fffc3 ldbu r4,-1(r23) + 2643c: b8bfffc4 addi r2,r23,-1 + 26440: 1007883a mov r3,r2 + 26444: 01800e44 movi r6,57 + 26448: d9c00717 ldw r7,28(sp) + 2644c: 00000506 br 26464 <_dtoa_r+0xc00> + 26450: 18ffffc4 addi r3,r3,-1 + 26454: 11c12326 beq r2,r7,268e4 <_dtoa_r+0x1080> + 26458: 19000003 ldbu r4,0(r3) + 2645c: 102f883a mov r23,r2 + 26460: 10bfffc4 addi r2,r2,-1 + 26464: 21403fcc andi r5,r4,255 + 26468: 2940201c xori r5,r5,128 + 2646c: 297fe004 addi r5,r5,-128 + 26470: 29bff726 beq r5,r6,26450 <_gp+0xfffe9f18> + 26474: 21000044 addi r4,r4,1 + 26478: 11000005 stb r4,0(r2) + 2647c: a80b883a mov r5,r21 + 26480: e009883a mov r4,fp + 26484: 00286740 call 28674 <_Bfree> + 26488: 883ea026 beq r17,zero,25f0c <_gp+0xfffe99d4> + 2648c: 90000426 beq r18,zero,264a0 <_dtoa_r+0xc3c> + 26490: 94400326 beq r18,r17,264a0 <_dtoa_r+0xc3c> + 26494: 900b883a mov r5,r18 + 26498: e009883a mov r4,fp + 2649c: 00286740 call 28674 <_Bfree> + 264a0: 880b883a mov r5,r17 + 264a4: e009883a mov r4,fp + 264a8: 00286740 call 28674 <_Bfree> + 264ac: 003e9706 br 25f0c <_gp+0xfffe99d4> + 264b0: 01800044 movi r6,1 + 264b4: d9800e15 stw r6,56(sp) + 264b8: 003d9606 br 25b14 <_gp+0xfffe95dc> + 264bc: d8800817 ldw r2,32(sp) + 264c0: d8c00517 ldw r3,20(sp) + 264c4: d8000d15 stw zero,52(sp) + 264c8: 10c5c83a sub r2,r2,r3 + 264cc: 00c9c83a sub r4,zero,r3 + 264d0: d8800815 stw r2,32(sp) + 264d4: d9000a15 stw r4,40(sp) + 264d8: 003d9706 br 25b38 <_gp+0xfffe9600> + 264dc: 05adc83a sub r22,zero,r22 + 264e0: dd800815 stw r22,32(sp) + 264e4: 002d883a mov r22,zero + 264e8: 003d8e06 br 25b24 <_gp+0xfffe95ec> + 264ec: d9000517 ldw r4,20(sp) + 264f0: 002edcc0 call 2edcc <__floatsidf> + 264f4: 100d883a mov r6,r2 + 264f8: 180f883a mov r7,r3 + 264fc: a009883a mov r4,r20 + 26500: 880b883a mov r5,r17 + 26504: 002dae00 call 2dae0 <__eqdf2> + 26508: 103d7126 beq r2,zero,25ad0 <_gp+0xfffe9598> + 2650c: d9c00517 ldw r7,20(sp) + 26510: 39ffffc4 addi r7,r7,-1 + 26514: d9c00515 stw r7,20(sp) + 26518: 003d6d06 br 25ad0 <_gp+0xfffe9598> + 2651c: dd400a17 ldw r21,40(sp) + 26520: dd000817 ldw r20,32(sp) + 26524: 0023883a mov r17,zero + 26528: 003f4806 br 2624c <_gp+0xfffe9d14> + 2652c: 10e3c83a sub r17,r2,r3 + 26530: 9448983a sll r4,r18,r17 + 26534: 003d3206 br 25a00 <_gp+0xfffe94c8> + 26538: d8000e15 stw zero,56(sp) + 2653c: 003d7506 br 25b14 <_gp+0xfffe95dc> + 26540: b005883a mov r2,r22 + 26544: 003f4506 br 2625c <_gp+0xfffe9d24> + 26548: dc000915 stw r16,36(sp) + 2654c: d9800a17 ldw r6,40(sp) + 26550: d9400917 ldw r5,36(sp) + 26554: e009883a mov r4,fp + 26558: 0028c0c0 call 28c0c <__pow5mult> + 2655c: 1021883a mov r16,r2 + 26560: 003f5a06 br 262cc <_gp+0xfffe9d94> + 26564: 01c00044 movi r7,1 + 26568: d9c00b15 stw r7,44(sp) + 2656c: d8802217 ldw r2,136(sp) + 26570: 0081280e bge zero,r2,26a14 <_dtoa_r+0x11b0> + 26574: 100d883a mov r6,r2 + 26578: 1021883a mov r16,r2 + 2657c: d8800c15 stw r2,48(sp) + 26580: d8800615 stw r2,24(sp) + 26584: 003d8806 br 25ba8 <_gp+0xfffe9670> + 26588: d8800617 ldw r2,24(sp) + 2658c: 00be9b16 blt zero,r2,25ffc <_gp+0xfffe9ac4> + 26590: 10010f1e bne r2,zero,269d0 <_dtoa_r+0x116c> + 26594: 880b883a mov r5,r17 + 26598: 000d883a mov r6,zero + 2659c: 01d00534 movhi r7,16404 + 265a0: 8009883a mov r4,r16 + 265a4: 002dd380 call 2dd38 <__muldf3> + 265a8: 900d883a mov r6,r18 + 265ac: 980f883a mov r7,r19 + 265b0: 1009883a mov r4,r2 + 265b4: 180b883a mov r5,r3 + 265b8: 002db680 call 2db68 <__gedf2> + 265bc: 002b883a mov r21,zero + 265c0: 0023883a mov r17,zero + 265c4: 1000bf16 blt r2,zero,268c4 <_dtoa_r+0x1060> + 265c8: d9802217 ldw r6,136(sp) + 265cc: ddc00717 ldw r23,28(sp) + 265d0: 018c303a nor r6,zero,r6 + 265d4: d9800515 stw r6,20(sp) + 265d8: a80b883a mov r5,r21 + 265dc: e009883a mov r4,fp + 265e0: 00286740 call 28674 <_Bfree> + 265e4: 883e4926 beq r17,zero,25f0c <_gp+0xfffe99d4> + 265e8: 003fad06 br 264a0 <_gp+0xfffe9f68> + 265ec: d9c01117 ldw r7,68(sp) + 265f0: 3801bc26 beq r7,zero,26ce4 <_dtoa_r+0x1480> + 265f4: 10810cc4 addi r2,r2,1075 + 265f8: dd400a17 ldw r21,40(sp) + 265fc: dd000817 ldw r20,32(sp) + 26600: 003f0a06 br 2622c <_gp+0xfffe9cf4> + 26604: 00800704 movi r2,28 + 26608: d9000817 ldw r4,32(sp) + 2660c: a0a9883a add r20,r20,r2 + 26610: b0ad883a add r22,r22,r2 + 26614: 2089883a add r4,r4,r2 + 26618: d9000815 stw r4,32(sp) + 2661c: 003f5106 br 26364 <_gp+0xfffe9e2c> + 26620: d8c00317 ldw r3,12(sp) + 26624: b8c1fc0e bge r23,r3,26e18 <_dtoa_r+0x15b4> + 26628: 0027883a mov r19,zero + 2662c: b805883a mov r2,r23 + 26630: 003f3e06 br 2632c <_gp+0xfffe9df4> + 26634: 880b883a mov r5,r17 + 26638: e009883a mov r4,fp + 2663c: 000f883a mov r7,zero + 26640: 01800284 movi r6,10 + 26644: 002869c0 call 2869c <__multadd> + 26648: d9000c17 ldw r4,48(sp) + 2664c: 1023883a mov r17,r2 + 26650: 0102040e bge zero,r4,26e64 <_dtoa_r+0x1600> + 26654: d9000615 stw r4,24(sp) + 26658: 0500050e bge zero,r20,26670 <_dtoa_r+0xe0c> + 2665c: 880b883a mov r5,r17 + 26660: a00d883a mov r6,r20 + 26664: e009883a mov r4,fp + 26668: 0028d4c0 call 28d4c <__lshift> + 2666c: 1023883a mov r17,r2 + 26670: 9801241e bne r19,zero,26b04 <_dtoa_r+0x12a0> + 26674: 8829883a mov r20,r17 + 26678: d9000617 ldw r4,24(sp) + 2667c: dcc00717 ldw r19,28(sp) + 26680: 9480004c andi r18,r18,1 + 26684: 20bfffc4 addi r2,r4,-1 + 26688: 9885883a add r2,r19,r2 + 2668c: d8800415 stw r2,16(sp) + 26690: dc800615 stw r18,24(sp) + 26694: a80b883a mov r5,r21 + 26698: 8009883a mov r4,r16 + 2669c: 00256640 call 25664 + 266a0: 880b883a mov r5,r17 + 266a4: 8009883a mov r4,r16 + 266a8: 102f883a mov r23,r2 + 266ac: 0028e940 call 28e94 <__mcmp> + 266b0: a80b883a mov r5,r21 + 266b4: a00d883a mov r6,r20 + 266b8: e009883a mov r4,fp + 266bc: 102d883a mov r22,r2 + 266c0: 0028ef40 call 28ef4 <__mdiff> + 266c4: 1007883a mov r3,r2 + 266c8: 10800317 ldw r2,12(r2) + 266cc: bc800c04 addi r18,r23,48 + 266d0: 180b883a mov r5,r3 + 266d4: 10004e1e bne r2,zero,26810 <_dtoa_r+0xfac> + 266d8: 8009883a mov r4,r16 + 266dc: d8c01615 stw r3,88(sp) + 266e0: 0028e940 call 28e94 <__mcmp> + 266e4: d8c01617 ldw r3,88(sp) + 266e8: e009883a mov r4,fp + 266ec: d8801615 stw r2,88(sp) + 266f0: 180b883a mov r5,r3 + 266f4: 00286740 call 28674 <_Bfree> + 266f8: d8801617 ldw r2,88(sp) + 266fc: 1000041e bne r2,zero,26710 <_dtoa_r+0xeac> + 26700: d9800317 ldw r6,12(sp) + 26704: 3000021e bne r6,zero,26710 <_dtoa_r+0xeac> + 26708: d8c00617 ldw r3,24(sp) + 2670c: 18003726 beq r3,zero,267ec <_dtoa_r+0xf88> + 26710: b0002016 blt r22,zero,26794 <_dtoa_r+0xf30> + 26714: b000041e bne r22,zero,26728 <_dtoa_r+0xec4> + 26718: d9000317 ldw r4,12(sp) + 2671c: 2000021e bne r4,zero,26728 <_dtoa_r+0xec4> + 26720: d8c00617 ldw r3,24(sp) + 26724: 18001b26 beq r3,zero,26794 <_dtoa_r+0xf30> + 26728: 00810716 blt zero,r2,26b48 <_dtoa_r+0x12e4> + 2672c: d8c00417 ldw r3,16(sp) + 26730: 9d800044 addi r22,r19,1 + 26734: 9c800005 stb r18,0(r19) + 26738: b02f883a mov r23,r22 + 2673c: 98c10626 beq r19,r3,26b58 <_dtoa_r+0x12f4> + 26740: 800b883a mov r5,r16 + 26744: 000f883a mov r7,zero + 26748: 01800284 movi r6,10 + 2674c: e009883a mov r4,fp + 26750: 002869c0 call 2869c <__multadd> + 26754: 1021883a mov r16,r2 + 26758: 000f883a mov r7,zero + 2675c: 01800284 movi r6,10 + 26760: 880b883a mov r5,r17 + 26764: e009883a mov r4,fp + 26768: 8d002526 beq r17,r20,26800 <_dtoa_r+0xf9c> + 2676c: 002869c0 call 2869c <__multadd> + 26770: a00b883a mov r5,r20 + 26774: 000f883a mov r7,zero + 26778: 01800284 movi r6,10 + 2677c: e009883a mov r4,fp + 26780: 1023883a mov r17,r2 + 26784: 002869c0 call 2869c <__multadd> + 26788: 1029883a mov r20,r2 + 2678c: b027883a mov r19,r22 + 26790: 003fc006 br 26694 <_gp+0xfffea15c> + 26794: 9011883a mov r8,r18 + 26798: 00800e0e bge zero,r2,267d4 <_dtoa_r+0xf70> + 2679c: 800b883a mov r5,r16 + 267a0: 01800044 movi r6,1 + 267a4: e009883a mov r4,fp + 267a8: da001715 stw r8,92(sp) + 267ac: 0028d4c0 call 28d4c <__lshift> + 267b0: a80b883a mov r5,r21 + 267b4: 1009883a mov r4,r2 + 267b8: 1021883a mov r16,r2 + 267bc: 0028e940 call 28e94 <__mcmp> + 267c0: da001717 ldw r8,92(sp) + 267c4: 0081960e bge zero,r2,26e20 <_dtoa_r+0x15bc> + 267c8: 00800e44 movi r2,57 + 267cc: 40817026 beq r8,r2,26d90 <_dtoa_r+0x152c> + 267d0: ba000c44 addi r8,r23,49 + 267d4: 8825883a mov r18,r17 + 267d8: 9dc00044 addi r23,r19,1 + 267dc: 9a000005 stb r8,0(r19) + 267e0: a023883a mov r17,r20 + 267e4: dc000915 stw r16,36(sp) + 267e8: 003f2406 br 2647c <_gp+0xfffe9f44> + 267ec: 00800e44 movi r2,57 + 267f0: 9011883a mov r8,r18 + 267f4: 90816626 beq r18,r2,26d90 <_dtoa_r+0x152c> + 267f8: 05bff516 blt zero,r22,267d0 <_gp+0xfffea298> + 267fc: 003ff506 br 267d4 <_gp+0xfffea29c> + 26800: 002869c0 call 2869c <__multadd> + 26804: 1023883a mov r17,r2 + 26808: 1029883a mov r20,r2 + 2680c: 003fdf06 br 2678c <_gp+0xfffea254> + 26810: e009883a mov r4,fp + 26814: 00286740 call 28674 <_Bfree> + 26818: 00800044 movi r2,1 + 2681c: 003fbc06 br 26710 <_gp+0xfffea1d8> + 26820: a80b883a mov r5,r21 + 26824: 8009883a mov r4,r16 + 26828: 0028e940 call 28e94 <__mcmp> + 2682c: 103edb0e bge r2,zero,2639c <_gp+0xfffe9e64> + 26830: 800b883a mov r5,r16 + 26834: 000f883a mov r7,zero + 26838: 01800284 movi r6,10 + 2683c: e009883a mov r4,fp + 26840: 002869c0 call 2869c <__multadd> + 26844: 1021883a mov r16,r2 + 26848: d8800517 ldw r2,20(sp) + 2684c: d8c00b17 ldw r3,44(sp) + 26850: 10bfffc4 addi r2,r2,-1 + 26854: d8800515 stw r2,20(sp) + 26858: 183f761e bne r3,zero,26634 <_gp+0xfffea0fc> + 2685c: d9000c17 ldw r4,48(sp) + 26860: 0101730e bge zero,r4,26e30 <_dtoa_r+0x15cc> + 26864: d9000615 stw r4,24(sp) + 26868: 003ed006 br 263ac <_gp+0xfffe9e74> + 2686c: 00800084 movi r2,2 + 26870: 3081861e bne r6,r2,26e8c <_dtoa_r+0x1628> + 26874: d8000b15 stw zero,44(sp) + 26878: 003f3c06 br 2656c <_gp+0xfffea034> + 2687c: dc000917 ldw r16,36(sp) + 26880: 003e9206 br 262cc <_gp+0xfffe9d94> + 26884: d9c00317 ldw r7,12(sp) + 26888: 00800084 movi r2,2 + 2688c: 11fec50e bge r2,r7,263a4 <_gp+0xfffe9e6c> + 26890: d9000617 ldw r4,24(sp) + 26894: 20013c1e bne r4,zero,26d88 <_dtoa_r+0x1524> + 26898: a80b883a mov r5,r21 + 2689c: 000f883a mov r7,zero + 268a0: 01800144 movi r6,5 + 268a4: e009883a mov r4,fp + 268a8: 002869c0 call 2869c <__multadd> + 268ac: 100b883a mov r5,r2 + 268b0: 8009883a mov r4,r16 + 268b4: 102b883a mov r21,r2 + 268b8: 0028e940 call 28e94 <__mcmp> + 268bc: dc000915 stw r16,36(sp) + 268c0: 00bf410e bge zero,r2,265c8 <_gp+0xfffea090> + 268c4: d9c00717 ldw r7,28(sp) + 268c8: 00800c44 movi r2,49 + 268cc: 38800005 stb r2,0(r7) + 268d0: d8800517 ldw r2,20(sp) + 268d4: 3dc00044 addi r23,r7,1 + 268d8: 10800044 addi r2,r2,1 + 268dc: d8800515 stw r2,20(sp) + 268e0: 003f3d06 br 265d8 <_gp+0xfffea0a0> + 268e4: d9800517 ldw r6,20(sp) + 268e8: d9c00717 ldw r7,28(sp) + 268ec: 00800c44 movi r2,49 + 268f0: 31800044 addi r6,r6,1 + 268f4: d9800515 stw r6,20(sp) + 268f8: 38800005 stb r2,0(r7) + 268fc: 003edf06 br 2647c <_gp+0xfffe9f44> + 26900: d8000b15 stw zero,44(sp) + 26904: 003c9f06 br 25b84 <_gp+0xfffe964c> + 26908: 903e7e1e bne r18,zero,26304 <_gp+0xfffe9dcc> + 2690c: 00800434 movhi r2,16 + 26910: 10bfffc4 addi r2,r2,-1 + 26914: 9884703a and r2,r19,r2 + 26918: 1000ea1e bne r2,zero,26cc4 <_dtoa_r+0x1460> + 2691c: 9cdffc2c andhi r19,r19,32752 + 26920: 9800e826 beq r19,zero,26cc4 <_dtoa_r+0x1460> + 26924: d9c00817 ldw r7,32(sp) + 26928: b5800044 addi r22,r22,1 + 2692c: 04c00044 movi r19,1 + 26930: 39c00044 addi r7,r7,1 + 26934: d9c00815 stw r7,32(sp) + 26938: d8800d17 ldw r2,52(sp) + 2693c: 103e721e bne r2,zero,26308 <_gp+0xfffe9dd0> + 26940: 00800044 movi r2,1 + 26944: 003e7906 br 2632c <_gp+0xfffe9df4> + 26948: 8009883a mov r4,r16 + 2694c: 002edcc0 call 2edcc <__floatsidf> + 26950: d9800f17 ldw r6,60(sp) + 26954: d9c01017 ldw r7,64(sp) + 26958: 1009883a mov r4,r2 + 2695c: 180b883a mov r5,r3 + 26960: 002dd380 call 2dd38 <__muldf3> + 26964: 000d883a mov r6,zero + 26968: 01d00734 movhi r7,16412 + 2696c: 1009883a mov r4,r2 + 26970: 180b883a mov r5,r3 + 26974: 002c94c0 call 2c94c <__adddf3> + 26978: 047f3034 movhi r17,64704 + 2697c: 1021883a mov r16,r2 + 26980: 1c63883a add r17,r3,r17 + 26984: d9000f17 ldw r4,60(sp) + 26988: d9401017 ldw r5,64(sp) + 2698c: 000d883a mov r6,zero + 26990: 01d00534 movhi r7,16404 + 26994: 002e4500 call 2e450 <__subdf3> + 26998: 800d883a mov r6,r16 + 2699c: 880f883a mov r7,r17 + 269a0: 1009883a mov r4,r2 + 269a4: 180b883a mov r5,r3 + 269a8: 102b883a mov r21,r2 + 269ac: 1829883a mov r20,r3 + 269b0: 002db680 call 2db68 <__gedf2> + 269b4: 00806c16 blt zero,r2,26b68 <_dtoa_r+0x1304> + 269b8: 89e0003c xorhi r7,r17,32768 + 269bc: 800d883a mov r6,r16 + 269c0: a809883a mov r4,r21 + 269c4: a00b883a mov r5,r20 + 269c8: 002dc440 call 2dc44 <__ledf2> + 269cc: 103d7e0e bge r2,zero,25fc8 <_gp+0xfffe9a90> + 269d0: 002b883a mov r21,zero + 269d4: 0023883a mov r17,zero + 269d8: 003efb06 br 265c8 <_gp+0xfffea090> + 269dc: d8800717 ldw r2,28(sp) + 269e0: 003bd006 br 25924 <_gp+0xfffe93ec> + 269e4: d9000a17 ldw r4,40(sp) + 269e8: d9800d17 ldw r6,52(sp) + 269ec: dd400a15 stw r21,40(sp) + 269f0: a905c83a sub r2,r21,r4 + 269f4: 308d883a add r6,r6,r2 + 269f8: d9800d15 stw r6,52(sp) + 269fc: 002b883a mov r21,zero + 26a00: 003e0606 br 2621c <_gp+0xfffe9ce4> + 26a04: 9023883a mov r17,r18 + 26a08: 9829883a mov r20,r19 + 26a0c: 04000084 movi r16,2 + 26a10: 003c9206 br 25c5c <_gp+0xfffe9724> + 26a14: 04000044 movi r16,1 + 26a18: dc000c15 stw r16,48(sp) + 26a1c: dc000615 stw r16,24(sp) + 26a20: dc002215 stw r16,136(sp) + 26a24: e0001115 stw zero,68(fp) + 26a28: 000b883a mov r5,zero + 26a2c: 003c6906 br 25bd4 <_gp+0xfffe969c> + 26a30: 3021883a mov r16,r6 + 26a34: 003ffb06 br 26a24 <_gp+0xfffea4ec> + 26a38: 1000021e bne r2,zero,26a44 <_dtoa_r+0x11e0> + 26a3c: 4200004c andi r8,r8,1 + 26a40: 403e7d1e bne r8,zero,26438 <_gp+0xfffe9f00> + 26a44: 01000c04 movi r4,48 + 26a48: 00000106 br 26a50 <_dtoa_r+0x11ec> + 26a4c: 102f883a mov r23,r2 + 26a50: b8bfffc4 addi r2,r23,-1 + 26a54: 10c00007 ldb r3,0(r2) + 26a58: 193ffc26 beq r3,r4,26a4c <_gp+0xfffea514> + 26a5c: 003e8706 br 2647c <_gp+0xfffe9f44> + 26a60: d8800517 ldw r2,20(sp) + 26a64: 00a3c83a sub r17,zero,r2 + 26a68: 8800a426 beq r17,zero,26cfc <_dtoa_r+0x1498> + 26a6c: 888003cc andi r2,r17,15 + 26a70: 100490fa slli r2,r2,3 + 26a74: 00c000f4 movhi r3,3 + 26a78: 18c83404 addi r3,r3,8400 + 26a7c: 1885883a add r2,r3,r2 + 26a80: 11800017 ldw r6,0(r2) + 26a84: 11c00117 ldw r7,4(r2) + 26a88: 9009883a mov r4,r18 + 26a8c: 980b883a mov r5,r19 + 26a90: 8823d13a srai r17,r17,4 + 26a94: 002dd380 call 2dd38 <__muldf3> + 26a98: d8800f15 stw r2,60(sp) + 26a9c: d8c01015 stw r3,64(sp) + 26aa0: 8800e826 beq r17,zero,26e44 <_dtoa_r+0x15e0> + 26aa4: 050000f4 movhi r20,3 + 26aa8: a5082a04 addi r20,r20,8360 + 26aac: 04000084 movi r16,2 + 26ab0: 8980004c andi r6,r17,1 + 26ab4: 1009883a mov r4,r2 + 26ab8: 8823d07a srai r17,r17,1 + 26abc: 180b883a mov r5,r3 + 26ac0: 30000426 beq r6,zero,26ad4 <_dtoa_r+0x1270> + 26ac4: a1800017 ldw r6,0(r20) + 26ac8: a1c00117 ldw r7,4(r20) + 26acc: 84000044 addi r16,r16,1 + 26ad0: 002dd380 call 2dd38 <__muldf3> + 26ad4: a5000204 addi r20,r20,8 + 26ad8: 883ff51e bne r17,zero,26ab0 <_gp+0xfffea578> + 26adc: d8800f15 stw r2,60(sp) + 26ae0: d8c01015 stw r3,64(sp) + 26ae4: 003c7606 br 25cc0 <_gp+0xfffe9788> + 26ae8: 00c00c04 movi r3,48 + 26aec: 10c00005 stb r3,0(r2) + 26af0: d8c00517 ldw r3,20(sp) + 26af4: bd3fffc3 ldbu r20,-1(r23) + 26af8: 18c00044 addi r3,r3,1 + 26afc: d8c00515 stw r3,20(sp) + 26b00: 003db906 br 261e8 <_gp+0xfffe9cb0> + 26b04: 89400117 ldw r5,4(r17) + 26b08: e009883a mov r4,fp + 26b0c: 00285cc0 call 285cc <_Balloc> + 26b10: 89800417 ldw r6,16(r17) + 26b14: 89400304 addi r5,r17,12 + 26b18: 11000304 addi r4,r2,12 + 26b1c: 31800084 addi r6,r6,2 + 26b20: 318d883a add r6,r6,r6 + 26b24: 318d883a add r6,r6,r6 + 26b28: 1027883a mov r19,r2 + 26b2c: 00283280 call 28328 + 26b30: 01800044 movi r6,1 + 26b34: 980b883a mov r5,r19 + 26b38: e009883a mov r4,fp + 26b3c: 0028d4c0 call 28d4c <__lshift> + 26b40: 1029883a mov r20,r2 + 26b44: 003ecc06 br 26678 <_gp+0xfffea140> + 26b48: 00800e44 movi r2,57 + 26b4c: 90809026 beq r18,r2,26d90 <_dtoa_r+0x152c> + 26b50: 92000044 addi r8,r18,1 + 26b54: 003f1f06 br 267d4 <_gp+0xfffea29c> + 26b58: 9011883a mov r8,r18 + 26b5c: 8825883a mov r18,r17 + 26b60: a023883a mov r17,r20 + 26b64: 003e2906 br 2640c <_gp+0xfffe9ed4> + 26b68: 002b883a mov r21,zero + 26b6c: 0023883a mov r17,zero + 26b70: 003f5406 br 268c4 <_gp+0xfffea38c> + 26b74: 61bfffc4 addi r6,r12,-1 + 26b78: 300490fa slli r2,r6,3 + 26b7c: 00c000f4 movhi r3,3 + 26b80: 18c83404 addi r3,r3,8400 + 26b84: 1885883a add r2,r3,r2 + 26b88: 11000017 ldw r4,0(r2) + 26b8c: 11400117 ldw r5,4(r2) + 26b90: d8800717 ldw r2,28(sp) + 26b94: 880f883a mov r7,r17 + 26b98: d9801215 stw r6,72(sp) + 26b9c: 800d883a mov r6,r16 + 26ba0: db001615 stw r12,88(sp) + 26ba4: 15c00044 addi r23,r2,1 + 26ba8: 002dd380 call 2dd38 <__muldf3> + 26bac: d9401017 ldw r5,64(sp) + 26bb0: d9000f17 ldw r4,60(sp) + 26bb4: d8c01515 stw r3,84(sp) + 26bb8: d8801415 stw r2,80(sp) + 26bbc: 002ed4c0 call 2ed4c <__fixdfsi> + 26bc0: 1009883a mov r4,r2 + 26bc4: 1021883a mov r16,r2 + 26bc8: 002edcc0 call 2edcc <__floatsidf> + 26bcc: d9000f17 ldw r4,60(sp) + 26bd0: d9401017 ldw r5,64(sp) + 26bd4: 100d883a mov r6,r2 + 26bd8: 180f883a mov r7,r3 + 26bdc: 002e4500 call 2e450 <__subdf3> + 26be0: 1829883a mov r20,r3 + 26be4: d8c00717 ldw r3,28(sp) + 26be8: 84000c04 addi r16,r16,48 + 26bec: 1023883a mov r17,r2 + 26bf0: 1c000005 stb r16,0(r3) + 26bf4: db001617 ldw r12,88(sp) + 26bf8: 00800044 movi r2,1 + 26bfc: 60802226 beq r12,r2,26c88 <_dtoa_r+0x1424> + 26c00: d9c00717 ldw r7,28(sp) + 26c04: 8805883a mov r2,r17 + 26c08: b82b883a mov r21,r23 + 26c0c: 3b19883a add r12,r7,r12 + 26c10: 6023883a mov r17,r12 + 26c14: a007883a mov r3,r20 + 26c18: dc800f15 stw r18,60(sp) + 26c1c: 000d883a mov r6,zero + 26c20: 01d00934 movhi r7,16420 + 26c24: 1009883a mov r4,r2 + 26c28: 180b883a mov r5,r3 + 26c2c: 002dd380 call 2dd38 <__muldf3> + 26c30: 180b883a mov r5,r3 + 26c34: 1009883a mov r4,r2 + 26c38: 1829883a mov r20,r3 + 26c3c: 1025883a mov r18,r2 + 26c40: 002ed4c0 call 2ed4c <__fixdfsi> + 26c44: 1009883a mov r4,r2 + 26c48: 1021883a mov r16,r2 + 26c4c: 002edcc0 call 2edcc <__floatsidf> + 26c50: 100d883a mov r6,r2 + 26c54: 180f883a mov r7,r3 + 26c58: 9009883a mov r4,r18 + 26c5c: a00b883a mov r5,r20 + 26c60: 84000c04 addi r16,r16,48 + 26c64: 002e4500 call 2e450 <__subdf3> + 26c68: ad400044 addi r21,r21,1 + 26c6c: ac3fffc5 stb r16,-1(r21) + 26c70: ac7fea1e bne r21,r17,26c1c <_gp+0xfffea6e4> + 26c74: 1023883a mov r17,r2 + 26c78: d8801217 ldw r2,72(sp) + 26c7c: dc800f17 ldw r18,60(sp) + 26c80: 1829883a mov r20,r3 + 26c84: b8af883a add r23,r23,r2 + 26c88: d9001417 ldw r4,80(sp) + 26c8c: d9401517 ldw r5,84(sp) + 26c90: 000d883a mov r6,zero + 26c94: 01cff834 movhi r7,16352 + 26c98: 002c94c0 call 2c94c <__adddf3> + 26c9c: 880d883a mov r6,r17 + 26ca0: a00f883a mov r7,r20 + 26ca4: 1009883a mov r4,r2 + 26ca8: 180b883a mov r5,r3 + 26cac: 002dc440 call 2dc44 <__ledf2> + 26cb0: 10003e0e bge r2,zero,26dac <_dtoa_r+0x1548> + 26cb4: d9001317 ldw r4,76(sp) + 26cb8: bd3fffc3 ldbu r20,-1(r23) + 26cbc: d9000515 stw r4,20(sp) + 26cc0: 003d3b06 br 261b0 <_gp+0xfffe9c78> + 26cc4: 0027883a mov r19,zero + 26cc8: 003f1b06 br 26938 <_gp+0xfffea400> + 26ccc: d8800817 ldw r2,32(sp) + 26cd0: 11e9c83a sub r20,r2,r7 + 26cd4: 0005883a mov r2,zero + 26cd8: 003d5406 br 2622c <_gp+0xfffe9cf4> + 26cdc: 00800044 movi r2,1 + 26ce0: 003dc706 br 26400 <_gp+0xfffe9ec8> + 26ce4: d8c00217 ldw r3,8(sp) + 26ce8: 00800d84 movi r2,54 + 26cec: dd400a17 ldw r21,40(sp) + 26cf0: 10c5c83a sub r2,r2,r3 + 26cf4: dd000817 ldw r20,32(sp) + 26cf8: 003d4c06 br 2622c <_gp+0xfffe9cf4> + 26cfc: dc800f15 stw r18,60(sp) + 26d00: dcc01015 stw r19,64(sp) + 26d04: 04000084 movi r16,2 + 26d08: 003bed06 br 25cc0 <_gp+0xfffe9788> + 26d0c: d9000617 ldw r4,24(sp) + 26d10: 203f0d26 beq r4,zero,26948 <_gp+0xfffea410> + 26d14: d9800c17 ldw r6,48(sp) + 26d18: 01bcab0e bge zero,r6,25fc8 <_gp+0xfffe9a90> + 26d1c: d9401017 ldw r5,64(sp) + 26d20: d9000f17 ldw r4,60(sp) + 26d24: 000d883a mov r6,zero + 26d28: 01d00934 movhi r7,16420 + 26d2c: 002dd380 call 2dd38 <__muldf3> + 26d30: 81000044 addi r4,r16,1 + 26d34: d8800f15 stw r2,60(sp) + 26d38: d8c01015 stw r3,64(sp) + 26d3c: 002edcc0 call 2edcc <__floatsidf> + 26d40: d9800f17 ldw r6,60(sp) + 26d44: d9c01017 ldw r7,64(sp) + 26d48: 1009883a mov r4,r2 + 26d4c: 180b883a mov r5,r3 + 26d50: 002dd380 call 2dd38 <__muldf3> + 26d54: 01d00734 movhi r7,16412 + 26d58: 000d883a mov r6,zero + 26d5c: 1009883a mov r4,r2 + 26d60: 180b883a mov r5,r3 + 26d64: 002c94c0 call 2c94c <__adddf3> + 26d68: d9c00517 ldw r7,20(sp) + 26d6c: 047f3034 movhi r17,64704 + 26d70: 1021883a mov r16,r2 + 26d74: 39ffffc4 addi r7,r7,-1 + 26d78: d9c01315 stw r7,76(sp) + 26d7c: 1c63883a add r17,r3,r17 + 26d80: db000c17 ldw r12,48(sp) + 26d84: 003bea06 br 25d30 <_gp+0xfffe97f8> + 26d88: dc000915 stw r16,36(sp) + 26d8c: 003e0e06 br 265c8 <_gp+0xfffea090> + 26d90: 01000e44 movi r4,57 + 26d94: 8825883a mov r18,r17 + 26d98: 9dc00044 addi r23,r19,1 + 26d9c: 99000005 stb r4,0(r19) + 26da0: a023883a mov r17,r20 + 26da4: dc000915 stw r16,36(sp) + 26da8: 003da406 br 2643c <_gp+0xfffe9f04> + 26dac: d9801417 ldw r6,80(sp) + 26db0: d9c01517 ldw r7,84(sp) + 26db4: 0009883a mov r4,zero + 26db8: 014ff834 movhi r5,16352 + 26dbc: 002e4500 call 2e450 <__subdf3> + 26dc0: 880d883a mov r6,r17 + 26dc4: a00f883a mov r7,r20 + 26dc8: 1009883a mov r4,r2 + 26dcc: 180b883a mov r5,r3 + 26dd0: 002db680 call 2db68 <__gedf2> + 26dd4: 00bc7c0e bge zero,r2,25fc8 <_gp+0xfffe9a90> + 26dd8: 01000c04 movi r4,48 + 26ddc: 00000106 br 26de4 <_dtoa_r+0x1580> + 26de0: 102f883a mov r23,r2 + 26de4: b8bfffc4 addi r2,r23,-1 + 26de8: 10c00007 ldb r3,0(r2) + 26dec: 193ffc26 beq r3,r4,26de0 <_gp+0xfffea8a8> + 26df0: d9801317 ldw r6,76(sp) + 26df4: d9800515 stw r6,20(sp) + 26df8: 003c4406 br 25f0c <_gp+0xfffe99d4> + 26dfc: d9801317 ldw r6,76(sp) + 26e00: d9800515 stw r6,20(sp) + 26e04: 003cea06 br 261b0 <_gp+0xfffe9c78> + 26e08: dd800f17 ldw r22,60(sp) + 26e0c: dcc01017 ldw r19,64(sp) + 26e10: dc801217 ldw r18,72(sp) + 26e14: 003c6c06 br 25fc8 <_gp+0xfffe9a90> + 26e18: 903e031e bne r18,zero,26628 <_gp+0xfffea0f0> + 26e1c: 003ebb06 br 2690c <_gp+0xfffea3d4> + 26e20: 103e6c1e bne r2,zero,267d4 <_gp+0xfffea29c> + 26e24: 4080004c andi r2,r8,1 + 26e28: 103e6a26 beq r2,zero,267d4 <_gp+0xfffea29c> + 26e2c: 003e6606 br 267c8 <_gp+0xfffea290> + 26e30: d8c00317 ldw r3,12(sp) + 26e34: 00800084 movi r2,2 + 26e38: 10c02916 blt r2,r3,26ee0 <_dtoa_r+0x167c> + 26e3c: d9000c17 ldw r4,48(sp) + 26e40: 003e8806 br 26864 <_gp+0xfffea32c> + 26e44: 04000084 movi r16,2 + 26e48: 003b9d06 br 25cc0 <_gp+0xfffe9788> + 26e4c: d9001317 ldw r4,76(sp) + 26e50: d9000515 stw r4,20(sp) + 26e54: 003cd606 br 261b0 <_gp+0xfffe9c78> + 26e58: d8801317 ldw r2,76(sp) + 26e5c: d8800515 stw r2,20(sp) + 26e60: 003c2a06 br 25f0c <_gp+0xfffe99d4> + 26e64: d9800317 ldw r6,12(sp) + 26e68: 00800084 movi r2,2 + 26e6c: 11801516 blt r2,r6,26ec4 <_dtoa_r+0x1660> + 26e70: d9c00c17 ldw r7,48(sp) + 26e74: d9c00615 stw r7,24(sp) + 26e78: 003df706 br 26658 <_gp+0xfffea120> + 26e7c: 193d3926 beq r3,r4,26364 <_gp+0xfffe9e2c> + 26e80: 00c00f04 movi r3,60 + 26e84: 1885c83a sub r2,r3,r2 + 26e88: 003ddf06 br 26608 <_gp+0xfffea0d0> + 26e8c: e009883a mov r4,fp + 26e90: e0001115 stw zero,68(fp) + 26e94: 000b883a mov r5,zero + 26e98: 00285cc0 call 285cc <_Balloc> + 26e9c: d8800715 stw r2,28(sp) + 26ea0: d8c00717 ldw r3,28(sp) + 26ea4: 00bfffc4 movi r2,-1 + 26ea8: 01000044 movi r4,1 + 26eac: d8800c15 stw r2,48(sp) + 26eb0: e0c01015 stw r3,64(fp) + 26eb4: d9000b15 stw r4,44(sp) + 26eb8: d8800615 stw r2,24(sp) + 26ebc: d8002215 stw zero,136(sp) + 26ec0: 003c4106 br 25fc8 <_gp+0xfffe9a90> + 26ec4: d8c00c17 ldw r3,48(sp) + 26ec8: d8c00615 stw r3,24(sp) + 26ecc: 003e7006 br 26890 <_gp+0xfffea358> + 26ed0: 04400044 movi r17,1 + 26ed4: 003b2006 br 25b58 <_gp+0xfffe9620> + 26ed8: 000b883a mov r5,zero + 26edc: 003b3d06 br 25bd4 <_gp+0xfffe969c> + 26ee0: d8800c17 ldw r2,48(sp) + 26ee4: d8800615 stw r2,24(sp) + 26ee8: 003e6906 br 26890 <_gp+0xfffea358> + +00026eec <__sflush_r>: + 26eec: 2880030b ldhu r2,12(r5) + 26ef0: defffb04 addi sp,sp,-20 + 26ef4: dcc00315 stw r19,12(sp) + 26ef8: dc400115 stw r17,4(sp) + 26efc: dfc00415 stw ra,16(sp) + 26f00: dc800215 stw r18,8(sp) + 26f04: dc000015 stw r16,0(sp) + 26f08: 10c0020c andi r3,r2,8 + 26f0c: 2823883a mov r17,r5 + 26f10: 2027883a mov r19,r4 + 26f14: 1800311e bne r3,zero,26fdc <__sflush_r+0xf0> + 26f18: 28c00117 ldw r3,4(r5) + 26f1c: 10820014 ori r2,r2,2048 + 26f20: 2880030d sth r2,12(r5) + 26f24: 00c04b0e bge zero,r3,27054 <__sflush_r+0x168> + 26f28: 8a000a17 ldw r8,40(r17) + 26f2c: 40002326 beq r8,zero,26fbc <__sflush_r+0xd0> + 26f30: 9c000017 ldw r16,0(r19) + 26f34: 10c4000c andi r3,r2,4096 + 26f38: 98000015 stw zero,0(r19) + 26f3c: 18004826 beq r3,zero,27060 <__sflush_r+0x174> + 26f40: 89801417 ldw r6,80(r17) + 26f44: 10c0010c andi r3,r2,4 + 26f48: 18000626 beq r3,zero,26f64 <__sflush_r+0x78> + 26f4c: 88c00117 ldw r3,4(r17) + 26f50: 88800c17 ldw r2,48(r17) + 26f54: 30cdc83a sub r6,r6,r3 + 26f58: 10000226 beq r2,zero,26f64 <__sflush_r+0x78> + 26f5c: 88800f17 ldw r2,60(r17) + 26f60: 308dc83a sub r6,r6,r2 + 26f64: 89400717 ldw r5,28(r17) + 26f68: 000f883a mov r7,zero + 26f6c: 9809883a mov r4,r19 + 26f70: 403ee83a callr r8 + 26f74: 00ffffc4 movi r3,-1 + 26f78: 10c04426 beq r2,r3,2708c <__sflush_r+0x1a0> + 26f7c: 88c0030b ldhu r3,12(r17) + 26f80: 89000417 ldw r4,16(r17) + 26f84: 88000115 stw zero,4(r17) + 26f88: 197dffcc andi r5,r3,63487 + 26f8c: 8940030d sth r5,12(r17) + 26f90: 89000015 stw r4,0(r17) + 26f94: 18c4000c andi r3,r3,4096 + 26f98: 18002c1e bne r3,zero,2704c <__sflush_r+0x160> + 26f9c: 89400c17 ldw r5,48(r17) + 26fa0: 9c000015 stw r16,0(r19) + 26fa4: 28000526 beq r5,zero,26fbc <__sflush_r+0xd0> + 26fa8: 88801004 addi r2,r17,64 + 26fac: 28800226 beq r5,r2,26fb8 <__sflush_r+0xcc> + 26fb0: 9809883a mov r4,r19 + 26fb4: 00276580 call 27658 <_free_r> + 26fb8: 88000c15 stw zero,48(r17) + 26fbc: 0005883a mov r2,zero + 26fc0: dfc00417 ldw ra,16(sp) + 26fc4: dcc00317 ldw r19,12(sp) + 26fc8: dc800217 ldw r18,8(sp) + 26fcc: dc400117 ldw r17,4(sp) + 26fd0: dc000017 ldw r16,0(sp) + 26fd4: dec00504 addi sp,sp,20 + 26fd8: f800283a ret + 26fdc: 2c800417 ldw r18,16(r5) + 26fe0: 903ff626 beq r18,zero,26fbc <_gp+0xfffeaa84> + 26fe4: 2c000017 ldw r16,0(r5) + 26fe8: 108000cc andi r2,r2,3 + 26fec: 2c800015 stw r18,0(r5) + 26ff0: 84a1c83a sub r16,r16,r18 + 26ff4: 1000131e bne r2,zero,27044 <__sflush_r+0x158> + 26ff8: 28800517 ldw r2,20(r5) + 26ffc: 88800215 stw r2,8(r17) + 27000: 04000316 blt zero,r16,27010 <__sflush_r+0x124> + 27004: 003fed06 br 26fbc <_gp+0xfffeaa84> + 27008: 90a5883a add r18,r18,r2 + 2700c: 043feb0e bge zero,r16,26fbc <_gp+0xfffeaa84> + 27010: 88800917 ldw r2,36(r17) + 27014: 89400717 ldw r5,28(r17) + 27018: 800f883a mov r7,r16 + 2701c: 900d883a mov r6,r18 + 27020: 9809883a mov r4,r19 + 27024: 103ee83a callr r2 + 27028: 80a1c83a sub r16,r16,r2 + 2702c: 00bff616 blt zero,r2,27008 <_gp+0xfffeaad0> + 27030: 88c0030b ldhu r3,12(r17) + 27034: 00bfffc4 movi r2,-1 + 27038: 18c01014 ori r3,r3,64 + 2703c: 88c0030d sth r3,12(r17) + 27040: 003fdf06 br 26fc0 <_gp+0xfffeaa88> + 27044: 0005883a mov r2,zero + 27048: 003fec06 br 26ffc <_gp+0xfffeaac4> + 2704c: 88801415 stw r2,80(r17) + 27050: 003fd206 br 26f9c <_gp+0xfffeaa64> + 27054: 28c00f17 ldw r3,60(r5) + 27058: 00ffb316 blt zero,r3,26f28 <_gp+0xfffea9f0> + 2705c: 003fd706 br 26fbc <_gp+0xfffeaa84> + 27060: 89400717 ldw r5,28(r17) + 27064: 000d883a mov r6,zero + 27068: 01c00044 movi r7,1 + 2706c: 9809883a mov r4,r19 + 27070: 403ee83a callr r8 + 27074: 100d883a mov r6,r2 + 27078: 00bfffc4 movi r2,-1 + 2707c: 30801426 beq r6,r2,270d0 <__sflush_r+0x1e4> + 27080: 8880030b ldhu r2,12(r17) + 27084: 8a000a17 ldw r8,40(r17) + 27088: 003fae06 br 26f44 <_gp+0xfffeaa0c> + 2708c: 98c00017 ldw r3,0(r19) + 27090: 183fba26 beq r3,zero,26f7c <_gp+0xfffeaa44> + 27094: 01000744 movi r4,29 + 27098: 19000626 beq r3,r4,270b4 <__sflush_r+0x1c8> + 2709c: 01000584 movi r4,22 + 270a0: 19000426 beq r3,r4,270b4 <__sflush_r+0x1c8> + 270a4: 88c0030b ldhu r3,12(r17) + 270a8: 18c01014 ori r3,r3,64 + 270ac: 88c0030d sth r3,12(r17) + 270b0: 003fc306 br 26fc0 <_gp+0xfffeaa88> + 270b4: 8880030b ldhu r2,12(r17) + 270b8: 88c00417 ldw r3,16(r17) + 270bc: 88000115 stw zero,4(r17) + 270c0: 10bdffcc andi r2,r2,63487 + 270c4: 8880030d sth r2,12(r17) + 270c8: 88c00015 stw r3,0(r17) + 270cc: 003fb306 br 26f9c <_gp+0xfffeaa64> + 270d0: 98800017 ldw r2,0(r19) + 270d4: 103fea26 beq r2,zero,27080 <_gp+0xfffeab48> + 270d8: 00c00744 movi r3,29 + 270dc: 10c00226 beq r2,r3,270e8 <__sflush_r+0x1fc> + 270e0: 00c00584 movi r3,22 + 270e4: 10c0031e bne r2,r3,270f4 <__sflush_r+0x208> + 270e8: 9c000015 stw r16,0(r19) + 270ec: 0005883a mov r2,zero + 270f0: 003fb306 br 26fc0 <_gp+0xfffeaa88> + 270f4: 88c0030b ldhu r3,12(r17) + 270f8: 3005883a mov r2,r6 + 270fc: 18c01014 ori r3,r3,64 + 27100: 88c0030d sth r3,12(r17) + 27104: 003fae06 br 26fc0 <_gp+0xfffeaa88> + +00027108 <_fflush_r>: + 27108: defffd04 addi sp,sp,-12 + 2710c: dc000115 stw r16,4(sp) + 27110: dfc00215 stw ra,8(sp) + 27114: 2021883a mov r16,r4 + 27118: 20000226 beq r4,zero,27124 <_fflush_r+0x1c> + 2711c: 20800e17 ldw r2,56(r4) + 27120: 10000c26 beq r2,zero,27154 <_fflush_r+0x4c> + 27124: 2880030f ldh r2,12(r5) + 27128: 1000051e bne r2,zero,27140 <_fflush_r+0x38> + 2712c: 0005883a mov r2,zero + 27130: dfc00217 ldw ra,8(sp) + 27134: dc000117 ldw r16,4(sp) + 27138: dec00304 addi sp,sp,12 + 2713c: f800283a ret + 27140: 8009883a mov r4,r16 + 27144: dfc00217 ldw ra,8(sp) + 27148: dc000117 ldw r16,4(sp) + 2714c: dec00304 addi sp,sp,12 + 27150: 0026eec1 jmpi 26eec <__sflush_r> + 27154: d9400015 stw r5,0(sp) + 27158: 00274e40 call 274e4 <__sinit> + 2715c: d9400017 ldw r5,0(sp) + 27160: 003ff006 br 27124 <_gp+0xfffeabec> + +00027164 : + 27164: 20000526 beq r4,zero,2717c + 27168: 008000f4 movhi r2,3 + 2716c: 10915404 addi r2,r2,17744 + 27170: 200b883a mov r5,r4 + 27174: 11000017 ldw r4,0(r2) + 27178: 00271081 jmpi 27108 <_fflush_r> + 2717c: 008000f4 movhi r2,3 + 27180: 10915304 addi r2,r2,17740 + 27184: 11000017 ldw r4,0(r2) + 27188: 014000b4 movhi r5,2 + 2718c: 295c4204 addi r5,r5,28936 + 27190: 0027ee81 jmpi 27ee8 <_fwalk_reent> + +00027194 <__fp_unlock>: + 27194: 0005883a mov r2,zero + 27198: f800283a ret + +0002719c <_cleanup_r>: + 2719c: 014000f4 movhi r5,3 + 271a0: 296e0e04 addi r5,r5,-18376 + 271a4: 0027ee81 jmpi 27ee8 <_fwalk_reent> + +000271a8 <__sinit.part.1>: + 271a8: defff704 addi sp,sp,-36 + 271ac: 00c000b4 movhi r3,2 + 271b0: dfc00815 stw ra,32(sp) + 271b4: ddc00715 stw r23,28(sp) + 271b8: dd800615 stw r22,24(sp) + 271bc: dd400515 stw r21,20(sp) + 271c0: dd000415 stw r20,16(sp) + 271c4: dcc00315 stw r19,12(sp) + 271c8: dc800215 stw r18,8(sp) + 271cc: dc400115 stw r17,4(sp) + 271d0: dc000015 stw r16,0(sp) + 271d4: 18dc6704 addi r3,r3,29084 + 271d8: 24000117 ldw r16,4(r4) + 271dc: 20c00f15 stw r3,60(r4) + 271e0: 2080bb04 addi r2,r4,748 + 271e4: 00c000c4 movi r3,3 + 271e8: 20c0b915 stw r3,740(r4) + 271ec: 2080ba15 stw r2,744(r4) + 271f0: 2000b815 stw zero,736(r4) + 271f4: 05c00204 movi r23,8 + 271f8: 00800104 movi r2,4 + 271fc: 2025883a mov r18,r4 + 27200: b80d883a mov r6,r23 + 27204: 81001704 addi r4,r16,92 + 27208: 000b883a mov r5,zero + 2720c: 80000015 stw zero,0(r16) + 27210: 80000115 stw zero,4(r16) + 27214: 80000215 stw zero,8(r16) + 27218: 8080030d sth r2,12(r16) + 2721c: 80001915 stw zero,100(r16) + 27220: 8000038d sth zero,14(r16) + 27224: 80000415 stw zero,16(r16) + 27228: 80000515 stw zero,20(r16) + 2722c: 80000615 stw zero,24(r16) + 27230: 0022ecc0 call 22ecc + 27234: 058000f4 movhi r22,3 + 27238: 94400217 ldw r17,8(r18) + 2723c: 054000f4 movhi r21,3 + 27240: 050000f4 movhi r20,3 + 27244: 04c000f4 movhi r19,3 + 27248: b5a74204 addi r22,r22,-25336 + 2724c: ad675904 addi r21,r21,-25244 + 27250: a5277804 addi r20,r20,-25120 + 27254: 9ce78f04 addi r19,r19,-25028 + 27258: 85800815 stw r22,32(r16) + 2725c: 85400915 stw r21,36(r16) + 27260: 85000a15 stw r20,40(r16) + 27264: 84c00b15 stw r19,44(r16) + 27268: 84000715 stw r16,28(r16) + 2726c: 00800284 movi r2,10 + 27270: 8880030d sth r2,12(r17) + 27274: 00800044 movi r2,1 + 27278: b80d883a mov r6,r23 + 2727c: 89001704 addi r4,r17,92 + 27280: 000b883a mov r5,zero + 27284: 88000015 stw zero,0(r17) + 27288: 88000115 stw zero,4(r17) + 2728c: 88000215 stw zero,8(r17) + 27290: 88001915 stw zero,100(r17) + 27294: 8880038d sth r2,14(r17) + 27298: 88000415 stw zero,16(r17) + 2729c: 88000515 stw zero,20(r17) + 272a0: 88000615 stw zero,24(r17) + 272a4: 0022ecc0 call 22ecc + 272a8: 94000317 ldw r16,12(r18) + 272ac: 00800484 movi r2,18 + 272b0: 8c400715 stw r17,28(r17) + 272b4: 8d800815 stw r22,32(r17) + 272b8: 8d400915 stw r21,36(r17) + 272bc: 8d000a15 stw r20,40(r17) + 272c0: 8cc00b15 stw r19,44(r17) + 272c4: 8080030d sth r2,12(r16) + 272c8: 00800084 movi r2,2 + 272cc: 80000015 stw zero,0(r16) + 272d0: 80000115 stw zero,4(r16) + 272d4: 80000215 stw zero,8(r16) + 272d8: 80001915 stw zero,100(r16) + 272dc: 8080038d sth r2,14(r16) + 272e0: 80000415 stw zero,16(r16) + 272e4: 80000515 stw zero,20(r16) + 272e8: 80000615 stw zero,24(r16) + 272ec: b80d883a mov r6,r23 + 272f0: 000b883a mov r5,zero + 272f4: 81001704 addi r4,r16,92 + 272f8: 0022ecc0 call 22ecc + 272fc: 00800044 movi r2,1 + 27300: 84000715 stw r16,28(r16) + 27304: 85800815 stw r22,32(r16) + 27308: 85400915 stw r21,36(r16) + 2730c: 85000a15 stw r20,40(r16) + 27310: 84c00b15 stw r19,44(r16) + 27314: 90800e15 stw r2,56(r18) + 27318: dfc00817 ldw ra,32(sp) + 2731c: ddc00717 ldw r23,28(sp) + 27320: dd800617 ldw r22,24(sp) + 27324: dd400517 ldw r21,20(sp) + 27328: dd000417 ldw r20,16(sp) + 2732c: dcc00317 ldw r19,12(sp) + 27330: dc800217 ldw r18,8(sp) + 27334: dc400117 ldw r17,4(sp) + 27338: dc000017 ldw r16,0(sp) + 2733c: dec00904 addi sp,sp,36 + 27340: f800283a ret + +00027344 <__fp_lock>: + 27344: 0005883a mov r2,zero + 27348: f800283a ret + +0002734c <__sfmoreglue>: + 2734c: defffc04 addi sp,sp,-16 + 27350: dc400115 stw r17,4(sp) + 27354: 2c7fffc4 addi r17,r5,-1 + 27358: 8c401a24 muli r17,r17,104 + 2735c: dc800215 stw r18,8(sp) + 27360: 2825883a mov r18,r5 + 27364: 89401d04 addi r5,r17,116 + 27368: dc000015 stw r16,0(sp) + 2736c: dfc00315 stw ra,12(sp) + 27370: 00226c00 call 226c0 <_malloc_r> + 27374: 1021883a mov r16,r2 + 27378: 10000726 beq r2,zero,27398 <__sfmoreglue+0x4c> + 2737c: 11000304 addi r4,r2,12 + 27380: 10000015 stw zero,0(r2) + 27384: 14800115 stw r18,4(r2) + 27388: 11000215 stw r4,8(r2) + 2738c: 89801a04 addi r6,r17,104 + 27390: 000b883a mov r5,zero + 27394: 0022ecc0 call 22ecc + 27398: 8005883a mov r2,r16 + 2739c: dfc00317 ldw ra,12(sp) + 273a0: dc800217 ldw r18,8(sp) + 273a4: dc400117 ldw r17,4(sp) + 273a8: dc000017 ldw r16,0(sp) + 273ac: dec00404 addi sp,sp,16 + 273b0: f800283a ret + +000273b4 <__sfp>: + 273b4: defffb04 addi sp,sp,-20 + 273b8: dc000015 stw r16,0(sp) + 273bc: 040000f4 movhi r16,3 + 273c0: 84115304 addi r16,r16,17740 + 273c4: dcc00315 stw r19,12(sp) + 273c8: 2027883a mov r19,r4 + 273cc: 81000017 ldw r4,0(r16) + 273d0: dfc00415 stw ra,16(sp) + 273d4: dc800215 stw r18,8(sp) + 273d8: 20800e17 ldw r2,56(r4) + 273dc: dc400115 stw r17,4(sp) + 273e0: 1000021e bne r2,zero,273ec <__sfp+0x38> + 273e4: 00271a80 call 271a8 <__sinit.part.1> + 273e8: 81000017 ldw r4,0(r16) + 273ec: 2480b804 addi r18,r4,736 + 273f0: 047fffc4 movi r17,-1 + 273f4: 91000117 ldw r4,4(r18) + 273f8: 94000217 ldw r16,8(r18) + 273fc: 213fffc4 addi r4,r4,-1 + 27400: 20000a16 blt r4,zero,2742c <__sfp+0x78> + 27404: 8080030f ldh r2,12(r16) + 27408: 10000c26 beq r2,zero,2743c <__sfp+0x88> + 2740c: 80c01d04 addi r3,r16,116 + 27410: 00000206 br 2741c <__sfp+0x68> + 27414: 18bfe60f ldh r2,-104(r3) + 27418: 10000826 beq r2,zero,2743c <__sfp+0x88> + 2741c: 213fffc4 addi r4,r4,-1 + 27420: 1c3ffd04 addi r16,r3,-12 + 27424: 18c01a04 addi r3,r3,104 + 27428: 247ffa1e bne r4,r17,27414 <_gp+0xfffeaedc> + 2742c: 90800017 ldw r2,0(r18) + 27430: 10001d26 beq r2,zero,274a8 <__sfp+0xf4> + 27434: 1025883a mov r18,r2 + 27438: 003fee06 br 273f4 <_gp+0xfffeaebc> + 2743c: 00bfffc4 movi r2,-1 + 27440: 8080038d sth r2,14(r16) + 27444: 00800044 movi r2,1 + 27448: 8080030d sth r2,12(r16) + 2744c: 80001915 stw zero,100(r16) + 27450: 80000015 stw zero,0(r16) + 27454: 80000215 stw zero,8(r16) + 27458: 80000115 stw zero,4(r16) + 2745c: 80000415 stw zero,16(r16) + 27460: 80000515 stw zero,20(r16) + 27464: 80000615 stw zero,24(r16) + 27468: 01800204 movi r6,8 + 2746c: 000b883a mov r5,zero + 27470: 81001704 addi r4,r16,92 + 27474: 0022ecc0 call 22ecc + 27478: 8005883a mov r2,r16 + 2747c: 80000c15 stw zero,48(r16) + 27480: 80000d15 stw zero,52(r16) + 27484: 80001115 stw zero,68(r16) + 27488: 80001215 stw zero,72(r16) + 2748c: dfc00417 ldw ra,16(sp) + 27490: dcc00317 ldw r19,12(sp) + 27494: dc800217 ldw r18,8(sp) + 27498: dc400117 ldw r17,4(sp) + 2749c: dc000017 ldw r16,0(sp) + 274a0: dec00504 addi sp,sp,20 + 274a4: f800283a ret + 274a8: 01400104 movi r5,4 + 274ac: 9809883a mov r4,r19 + 274b0: 002734c0 call 2734c <__sfmoreglue> + 274b4: 90800015 stw r2,0(r18) + 274b8: 103fde1e bne r2,zero,27434 <_gp+0xfffeaefc> + 274bc: 00800304 movi r2,12 + 274c0: 98800015 stw r2,0(r19) + 274c4: 0005883a mov r2,zero + 274c8: 003ff006 br 2748c <_gp+0xfffeaf54> + +000274cc <_cleanup>: + 274cc: 008000f4 movhi r2,3 + 274d0: 10915304 addi r2,r2,17740 + 274d4: 11000017 ldw r4,0(r2) + 274d8: 014000f4 movhi r5,3 + 274dc: 296e0e04 addi r5,r5,-18376 + 274e0: 0027ee81 jmpi 27ee8 <_fwalk_reent> + +000274e4 <__sinit>: + 274e4: 20800e17 ldw r2,56(r4) + 274e8: 10000126 beq r2,zero,274f0 <__sinit+0xc> + 274ec: f800283a ret + 274f0: 00271a81 jmpi 271a8 <__sinit.part.1> + +000274f4 <__sfp_lock_acquire>: + 274f4: f800283a ret + +000274f8 <__sfp_lock_release>: + 274f8: f800283a ret + +000274fc <__sinit_lock_acquire>: + 274fc: f800283a ret + +00027500 <__sinit_lock_release>: + 27500: f800283a ret + +00027504 <__fp_lock_all>: + 27504: 008000f4 movhi r2,3 + 27508: 10915404 addi r2,r2,17744 + 2750c: 11000017 ldw r4,0(r2) + 27510: 014000b4 movhi r5,2 + 27514: 295cd104 addi r5,r5,29508 + 27518: 0027e241 jmpi 27e24 <_fwalk> + +0002751c <__fp_unlock_all>: + 2751c: 008000f4 movhi r2,3 + 27520: 10915404 addi r2,r2,17744 + 27524: 11000017 ldw r4,0(r2) + 27528: 014000b4 movhi r5,2 + 2752c: 295c6504 addi r5,r5,29076 + 27530: 0027e241 jmpi 27e24 <_fwalk> + +00027534 <_malloc_trim_r>: + 27534: defffb04 addi sp,sp,-20 + 27538: dcc00315 stw r19,12(sp) + 2753c: 04c000f4 movhi r19,3 + 27540: dc800215 stw r18,8(sp) + 27544: dc400115 stw r17,4(sp) + 27548: dc000015 stw r16,0(sp) + 2754c: dfc00415 stw ra,16(sp) + 27550: 2821883a mov r16,r5 + 27554: 9ccaa304 addi r19,r19,10892 + 27558: 2025883a mov r18,r4 + 2755c: 002f5800 call 2f580 <__malloc_lock> + 27560: 98800217 ldw r2,8(r19) + 27564: 14400117 ldw r17,4(r2) + 27568: 00bfff04 movi r2,-4 + 2756c: 88a2703a and r17,r17,r2 + 27570: 8c21c83a sub r16,r17,r16 + 27574: 8403fbc4 addi r16,r16,4079 + 27578: 8020d33a srli r16,r16,12 + 2757c: 0083ffc4 movi r2,4095 + 27580: 843fffc4 addi r16,r16,-1 + 27584: 8020933a slli r16,r16,12 + 27588: 1400060e bge r2,r16,275a4 <_malloc_trim_r+0x70> + 2758c: 000b883a mov r5,zero + 27590: 9009883a mov r4,r18 + 27594: 00231540 call 23154 <_sbrk_r> + 27598: 98c00217 ldw r3,8(r19) + 2759c: 1c47883a add r3,r3,r17 + 275a0: 10c00a26 beq r2,r3,275cc <_malloc_trim_r+0x98> + 275a4: 9009883a mov r4,r18 + 275a8: 002f5a40 call 2f5a4 <__malloc_unlock> + 275ac: 0005883a mov r2,zero + 275b0: dfc00417 ldw ra,16(sp) + 275b4: dcc00317 ldw r19,12(sp) + 275b8: dc800217 ldw r18,8(sp) + 275bc: dc400117 ldw r17,4(sp) + 275c0: dc000017 ldw r16,0(sp) + 275c4: dec00504 addi sp,sp,20 + 275c8: f800283a ret + 275cc: 040bc83a sub r5,zero,r16 + 275d0: 9009883a mov r4,r18 + 275d4: 00231540 call 23154 <_sbrk_r> + 275d8: 00ffffc4 movi r3,-1 + 275dc: 10c00d26 beq r2,r3,27614 <_malloc_trim_r+0xe0> + 275e0: 00c000f4 movhi r3,3 + 275e4: 18da1704 addi r3,r3,26716 + 275e8: 18800017 ldw r2,0(r3) + 275ec: 99000217 ldw r4,8(r19) + 275f0: 8c23c83a sub r17,r17,r16 + 275f4: 8c400054 ori r17,r17,1 + 275f8: 1421c83a sub r16,r2,r16 + 275fc: 24400115 stw r17,4(r4) + 27600: 9009883a mov r4,r18 + 27604: 1c000015 stw r16,0(r3) + 27608: 002f5a40 call 2f5a4 <__malloc_unlock> + 2760c: 00800044 movi r2,1 + 27610: 003fe706 br 275b0 <_gp+0xfffeb078> + 27614: 000b883a mov r5,zero + 27618: 9009883a mov r4,r18 + 2761c: 00231540 call 23154 <_sbrk_r> + 27620: 99000217 ldw r4,8(r19) + 27624: 014003c4 movi r5,15 + 27628: 1107c83a sub r3,r2,r4 + 2762c: 28ffdd0e bge r5,r3,275a4 <_gp+0xfffeb06c> + 27630: 014000f4 movhi r5,3 + 27634: 29515104 addi r5,r5,17732 + 27638: 29400017 ldw r5,0(r5) + 2763c: 18c00054 ori r3,r3,1 + 27640: 20c00115 stw r3,4(r4) + 27644: 00c000f4 movhi r3,3 + 27648: 1145c83a sub r2,r2,r5 + 2764c: 18da1704 addi r3,r3,26716 + 27650: 18800015 stw r2,0(r3) + 27654: 003fd306 br 275a4 <_gp+0xfffeb06c> + +00027658 <_free_r>: + 27658: 28004126 beq r5,zero,27760 <_free_r+0x108> + 2765c: defffd04 addi sp,sp,-12 + 27660: dc400115 stw r17,4(sp) + 27664: dc000015 stw r16,0(sp) + 27668: 2023883a mov r17,r4 + 2766c: 2821883a mov r16,r5 + 27670: dfc00215 stw ra,8(sp) + 27674: 002f5800 call 2f580 <__malloc_lock> + 27678: 81ffff17 ldw r7,-4(r16) + 2767c: 00bfff84 movi r2,-2 + 27680: 010000f4 movhi r4,3 + 27684: 81bffe04 addi r6,r16,-8 + 27688: 3884703a and r2,r7,r2 + 2768c: 210aa304 addi r4,r4,10892 + 27690: 308b883a add r5,r6,r2 + 27694: 2a400117 ldw r9,4(r5) + 27698: 22000217 ldw r8,8(r4) + 2769c: 00ffff04 movi r3,-4 + 276a0: 48c6703a and r3,r9,r3 + 276a4: 2a005726 beq r5,r8,27804 <_free_r+0x1ac> + 276a8: 28c00115 stw r3,4(r5) + 276ac: 39c0004c andi r7,r7,1 + 276b0: 3800091e bne r7,zero,276d8 <_free_r+0x80> + 276b4: 823ffe17 ldw r8,-8(r16) + 276b8: 22400204 addi r9,r4,8 + 276bc: 320dc83a sub r6,r6,r8 + 276c0: 31c00217 ldw r7,8(r6) + 276c4: 1205883a add r2,r2,r8 + 276c8: 3a406526 beq r7,r9,27860 <_free_r+0x208> + 276cc: 32000317 ldw r8,12(r6) + 276d0: 3a000315 stw r8,12(r7) + 276d4: 41c00215 stw r7,8(r8) + 276d8: 28cf883a add r7,r5,r3 + 276dc: 39c00117 ldw r7,4(r7) + 276e0: 39c0004c andi r7,r7,1 + 276e4: 38003a26 beq r7,zero,277d0 <_free_r+0x178> + 276e8: 10c00054 ori r3,r2,1 + 276ec: 30c00115 stw r3,4(r6) + 276f0: 3087883a add r3,r6,r2 + 276f4: 18800015 stw r2,0(r3) + 276f8: 00c07fc4 movi r3,511 + 276fc: 18801936 bltu r3,r2,27764 <_free_r+0x10c> + 27700: 1004d0fa srli r2,r2,3 + 27704: 01c00044 movi r7,1 + 27708: 21400117 ldw r5,4(r4) + 2770c: 10c00044 addi r3,r2,1 + 27710: 18c7883a add r3,r3,r3 + 27714: 1005d0ba srai r2,r2,2 + 27718: 18c7883a add r3,r3,r3 + 2771c: 18c7883a add r3,r3,r3 + 27720: 1907883a add r3,r3,r4 + 27724: 3884983a sll r2,r7,r2 + 27728: 19c00017 ldw r7,0(r3) + 2772c: 1a3ffe04 addi r8,r3,-8 + 27730: 1144b03a or r2,r2,r5 + 27734: 32000315 stw r8,12(r6) + 27738: 31c00215 stw r7,8(r6) + 2773c: 20800115 stw r2,4(r4) + 27740: 19800015 stw r6,0(r3) + 27744: 39800315 stw r6,12(r7) + 27748: 8809883a mov r4,r17 + 2774c: dfc00217 ldw ra,8(sp) + 27750: dc400117 ldw r17,4(sp) + 27754: dc000017 ldw r16,0(sp) + 27758: dec00304 addi sp,sp,12 + 2775c: 002f5a41 jmpi 2f5a4 <__malloc_unlock> + 27760: f800283a ret + 27764: 100ad27a srli r5,r2,9 + 27768: 00c00104 movi r3,4 + 2776c: 19404a36 bltu r3,r5,27898 <_free_r+0x240> + 27770: 100ad1ba srli r5,r2,6 + 27774: 28c00e44 addi r3,r5,57 + 27778: 18c7883a add r3,r3,r3 + 2777c: 29400e04 addi r5,r5,56 + 27780: 18c7883a add r3,r3,r3 + 27784: 18c7883a add r3,r3,r3 + 27788: 1909883a add r4,r3,r4 + 2778c: 20c00017 ldw r3,0(r4) + 27790: 01c000f4 movhi r7,3 + 27794: 213ffe04 addi r4,r4,-8 + 27798: 39caa304 addi r7,r7,10892 + 2779c: 20c04426 beq r4,r3,278b0 <_free_r+0x258> + 277a0: 01ffff04 movi r7,-4 + 277a4: 19400117 ldw r5,4(r3) + 277a8: 29ca703a and r5,r5,r7 + 277ac: 1140022e bgeu r2,r5,277b8 <_free_r+0x160> + 277b0: 18c00217 ldw r3,8(r3) + 277b4: 20fffb1e bne r4,r3,277a4 <_gp+0xfffeb26c> + 277b8: 19000317 ldw r4,12(r3) + 277bc: 31000315 stw r4,12(r6) + 277c0: 30c00215 stw r3,8(r6) + 277c4: 21800215 stw r6,8(r4) + 277c8: 19800315 stw r6,12(r3) + 277cc: 003fde06 br 27748 <_gp+0xfffeb210> + 277d0: 29c00217 ldw r7,8(r5) + 277d4: 10c5883a add r2,r2,r3 + 277d8: 00c000f4 movhi r3,3 + 277dc: 18caa504 addi r3,r3,10900 + 277e0: 38c03b26 beq r7,r3,278d0 <_free_r+0x278> + 277e4: 2a000317 ldw r8,12(r5) + 277e8: 11400054 ori r5,r2,1 + 277ec: 3087883a add r3,r6,r2 + 277f0: 3a000315 stw r8,12(r7) + 277f4: 41c00215 stw r7,8(r8) + 277f8: 31400115 stw r5,4(r6) + 277fc: 18800015 stw r2,0(r3) + 27800: 003fbd06 br 276f8 <_gp+0xfffeb1c0> + 27804: 39c0004c andi r7,r7,1 + 27808: 10c5883a add r2,r2,r3 + 2780c: 3800071e bne r7,zero,2782c <_free_r+0x1d4> + 27810: 81fffe17 ldw r7,-8(r16) + 27814: 31cdc83a sub r6,r6,r7 + 27818: 30c00317 ldw r3,12(r6) + 2781c: 31400217 ldw r5,8(r6) + 27820: 11c5883a add r2,r2,r7 + 27824: 28c00315 stw r3,12(r5) + 27828: 19400215 stw r5,8(r3) + 2782c: 10c00054 ori r3,r2,1 + 27830: 30c00115 stw r3,4(r6) + 27834: 00c000f4 movhi r3,3 + 27838: 18d15204 addi r3,r3,17736 + 2783c: 18c00017 ldw r3,0(r3) + 27840: 21800215 stw r6,8(r4) + 27844: 10ffc036 bltu r2,r3,27748 <_gp+0xfffeb210> + 27848: 008000f4 movhi r2,3 + 2784c: 109a0b04 addi r2,r2,26668 + 27850: 11400017 ldw r5,0(r2) + 27854: 8809883a mov r4,r17 + 27858: 00275340 call 27534 <_malloc_trim_r> + 2785c: 003fba06 br 27748 <_gp+0xfffeb210> + 27860: 28c9883a add r4,r5,r3 + 27864: 21000117 ldw r4,4(r4) + 27868: 2100004c andi r4,r4,1 + 2786c: 2000391e bne r4,zero,27954 <_free_r+0x2fc> + 27870: 29c00217 ldw r7,8(r5) + 27874: 29000317 ldw r4,12(r5) + 27878: 1885883a add r2,r3,r2 + 2787c: 10c00054 ori r3,r2,1 + 27880: 39000315 stw r4,12(r7) + 27884: 21c00215 stw r7,8(r4) + 27888: 30c00115 stw r3,4(r6) + 2788c: 308d883a add r6,r6,r2 + 27890: 30800015 stw r2,0(r6) + 27894: 003fac06 br 27748 <_gp+0xfffeb210> + 27898: 00c00504 movi r3,20 + 2789c: 19401536 bltu r3,r5,278f4 <_free_r+0x29c> + 278a0: 28c01704 addi r3,r5,92 + 278a4: 18c7883a add r3,r3,r3 + 278a8: 294016c4 addi r5,r5,91 + 278ac: 003fb406 br 27780 <_gp+0xfffeb248> + 278b0: 280bd0ba srai r5,r5,2 + 278b4: 00c00044 movi r3,1 + 278b8: 38800117 ldw r2,4(r7) + 278bc: 194a983a sll r5,r3,r5 + 278c0: 2007883a mov r3,r4 + 278c4: 2884b03a or r2,r5,r2 + 278c8: 38800115 stw r2,4(r7) + 278cc: 003fbb06 br 277bc <_gp+0xfffeb284> + 278d0: 21800515 stw r6,20(r4) + 278d4: 21800415 stw r6,16(r4) + 278d8: 10c00054 ori r3,r2,1 + 278dc: 31c00315 stw r7,12(r6) + 278e0: 31c00215 stw r7,8(r6) + 278e4: 30c00115 stw r3,4(r6) + 278e8: 308d883a add r6,r6,r2 + 278ec: 30800015 stw r2,0(r6) + 278f0: 003f9506 br 27748 <_gp+0xfffeb210> + 278f4: 00c01504 movi r3,84 + 278f8: 19400536 bltu r3,r5,27910 <_free_r+0x2b8> + 278fc: 100ad33a srli r5,r2,12 + 27900: 28c01bc4 addi r3,r5,111 + 27904: 18c7883a add r3,r3,r3 + 27908: 29401b84 addi r5,r5,110 + 2790c: 003f9c06 br 27780 <_gp+0xfffeb248> + 27910: 00c05504 movi r3,340 + 27914: 19400536 bltu r3,r5,2792c <_free_r+0x2d4> + 27918: 100ad3fa srli r5,r2,15 + 2791c: 28c01e04 addi r3,r5,120 + 27920: 18c7883a add r3,r3,r3 + 27924: 29401dc4 addi r5,r5,119 + 27928: 003f9506 br 27780 <_gp+0xfffeb248> + 2792c: 00c15504 movi r3,1364 + 27930: 19400536 bltu r3,r5,27948 <_free_r+0x2f0> + 27934: 100ad4ba srli r5,r2,18 + 27938: 28c01f44 addi r3,r5,125 + 2793c: 18c7883a add r3,r3,r3 + 27940: 29401f04 addi r5,r5,124 + 27944: 003f8e06 br 27780 <_gp+0xfffeb248> + 27948: 00c03f84 movi r3,254 + 2794c: 01401f84 movi r5,126 + 27950: 003f8b06 br 27780 <_gp+0xfffeb248> + 27954: 10c00054 ori r3,r2,1 + 27958: 30c00115 stw r3,4(r6) + 2795c: 308d883a add r6,r6,r2 + 27960: 30800015 stw r2,0(r6) + 27964: 003f7806 br 27748 <_gp+0xfffeb210> + +00027968 <__sfvwrite_r>: + 27968: 30800217 ldw r2,8(r6) + 2796c: 10006726 beq r2,zero,27b0c <__sfvwrite_r+0x1a4> + 27970: 28c0030b ldhu r3,12(r5) + 27974: defff404 addi sp,sp,-48 + 27978: dd400715 stw r21,28(sp) + 2797c: dd000615 stw r20,24(sp) + 27980: dc000215 stw r16,8(sp) + 27984: dfc00b15 stw ra,44(sp) + 27988: df000a15 stw fp,40(sp) + 2798c: ddc00915 stw r23,36(sp) + 27990: dd800815 stw r22,32(sp) + 27994: dcc00515 stw r19,20(sp) + 27998: dc800415 stw r18,16(sp) + 2799c: dc400315 stw r17,12(sp) + 279a0: 1880020c andi r2,r3,8 + 279a4: 2821883a mov r16,r5 + 279a8: 202b883a mov r21,r4 + 279ac: 3029883a mov r20,r6 + 279b0: 10002726 beq r2,zero,27a50 <__sfvwrite_r+0xe8> + 279b4: 28800417 ldw r2,16(r5) + 279b8: 10002526 beq r2,zero,27a50 <__sfvwrite_r+0xe8> + 279bc: 1880008c andi r2,r3,2 + 279c0: a4400017 ldw r17,0(r20) + 279c4: 10002a26 beq r2,zero,27a70 <__sfvwrite_r+0x108> + 279c8: 05a00034 movhi r22,32768 + 279cc: 0027883a mov r19,zero + 279d0: 0025883a mov r18,zero + 279d4: b5bf0004 addi r22,r22,-1024 + 279d8: 980d883a mov r6,r19 + 279dc: a809883a mov r4,r21 + 279e0: 90004626 beq r18,zero,27afc <__sfvwrite_r+0x194> + 279e4: 900f883a mov r7,r18 + 279e8: b480022e bgeu r22,r18,279f4 <__sfvwrite_r+0x8c> + 279ec: 01e00034 movhi r7,32768 + 279f0: 39ff0004 addi r7,r7,-1024 + 279f4: 80800917 ldw r2,36(r16) + 279f8: 81400717 ldw r5,28(r16) + 279fc: 103ee83a callr r2 + 27a00: 0080570e bge zero,r2,27b60 <__sfvwrite_r+0x1f8> + 27a04: a0c00217 ldw r3,8(r20) + 27a08: 98a7883a add r19,r19,r2 + 27a0c: 90a5c83a sub r18,r18,r2 + 27a10: 1885c83a sub r2,r3,r2 + 27a14: a0800215 stw r2,8(r20) + 27a18: 103fef1e bne r2,zero,279d8 <_gp+0xfffeb4a0> + 27a1c: 0005883a mov r2,zero + 27a20: dfc00b17 ldw ra,44(sp) + 27a24: df000a17 ldw fp,40(sp) + 27a28: ddc00917 ldw r23,36(sp) + 27a2c: dd800817 ldw r22,32(sp) + 27a30: dd400717 ldw r21,28(sp) + 27a34: dd000617 ldw r20,24(sp) + 27a38: dcc00517 ldw r19,20(sp) + 27a3c: dc800417 ldw r18,16(sp) + 27a40: dc400317 ldw r17,12(sp) + 27a44: dc000217 ldw r16,8(sp) + 27a48: dec00c04 addi sp,sp,48 + 27a4c: f800283a ret + 27a50: 800b883a mov r5,r16 + 27a54: a809883a mov r4,r21 + 27a58: 00255100 call 25510 <__swsetup_r> + 27a5c: 1000eb1e bne r2,zero,27e0c <__sfvwrite_r+0x4a4> + 27a60: 80c0030b ldhu r3,12(r16) + 27a64: a4400017 ldw r17,0(r20) + 27a68: 1880008c andi r2,r3,2 + 27a6c: 103fd61e bne r2,zero,279c8 <_gp+0xfffeb490> + 27a70: 1880004c andi r2,r3,1 + 27a74: 10003f1e bne r2,zero,27b74 <__sfvwrite_r+0x20c> + 27a78: 0039883a mov fp,zero + 27a7c: 0025883a mov r18,zero + 27a80: 90001a26 beq r18,zero,27aec <__sfvwrite_r+0x184> + 27a84: 1880800c andi r2,r3,512 + 27a88: 84c00217 ldw r19,8(r16) + 27a8c: 10002126 beq r2,zero,27b14 <__sfvwrite_r+0x1ac> + 27a90: 982f883a mov r23,r19 + 27a94: 94c09336 bltu r18,r19,27ce4 <__sfvwrite_r+0x37c> + 27a98: 1881200c andi r2,r3,1152 + 27a9c: 10009e1e bne r2,zero,27d18 <__sfvwrite_r+0x3b0> + 27aa0: 81000017 ldw r4,0(r16) + 27aa4: b80d883a mov r6,r23 + 27aa8: e00b883a mov r5,fp + 27aac: 00284700 call 28470 + 27ab0: 80c00217 ldw r3,8(r16) + 27ab4: 81000017 ldw r4,0(r16) + 27ab8: 9005883a mov r2,r18 + 27abc: 1ce7c83a sub r19,r3,r19 + 27ac0: 25cf883a add r7,r4,r23 + 27ac4: 84c00215 stw r19,8(r16) + 27ac8: 81c00015 stw r7,0(r16) + 27acc: a0c00217 ldw r3,8(r20) + 27ad0: e0b9883a add fp,fp,r2 + 27ad4: 90a5c83a sub r18,r18,r2 + 27ad8: 18a7c83a sub r19,r3,r2 + 27adc: a4c00215 stw r19,8(r20) + 27ae0: 983fce26 beq r19,zero,27a1c <_gp+0xfffeb4e4> + 27ae4: 80c0030b ldhu r3,12(r16) + 27ae8: 903fe61e bne r18,zero,27a84 <_gp+0xfffeb54c> + 27aec: 8f000017 ldw fp,0(r17) + 27af0: 8c800117 ldw r18,4(r17) + 27af4: 8c400204 addi r17,r17,8 + 27af8: 003fe106 br 27a80 <_gp+0xfffeb548> + 27afc: 8cc00017 ldw r19,0(r17) + 27b00: 8c800117 ldw r18,4(r17) + 27b04: 8c400204 addi r17,r17,8 + 27b08: 003fb306 br 279d8 <_gp+0xfffeb4a0> + 27b0c: 0005883a mov r2,zero + 27b10: f800283a ret + 27b14: 81000017 ldw r4,0(r16) + 27b18: 80800417 ldw r2,16(r16) + 27b1c: 11005736 bltu r2,r4,27c7c <__sfvwrite_r+0x314> + 27b20: 85c00517 ldw r23,20(r16) + 27b24: 95c05536 bltu r18,r23,27c7c <__sfvwrite_r+0x314> + 27b28: 00a00034 movhi r2,32768 + 27b2c: 10bfffc4 addi r2,r2,-1 + 27b30: 9009883a mov r4,r18 + 27b34: 1480012e bgeu r2,r18,27b3c <__sfvwrite_r+0x1d4> + 27b38: 1009883a mov r4,r2 + 27b3c: b80b883a mov r5,r23 + 27b40: 00224e40 call 224e4 <__divsi3> + 27b44: 15cf383a mul r7,r2,r23 + 27b48: 81400717 ldw r5,28(r16) + 27b4c: 80800917 ldw r2,36(r16) + 27b50: e00d883a mov r6,fp + 27b54: a809883a mov r4,r21 + 27b58: 103ee83a callr r2 + 27b5c: 00bfdb16 blt zero,r2,27acc <_gp+0xfffeb594> + 27b60: 8080030b ldhu r2,12(r16) + 27b64: 10801014 ori r2,r2,64 + 27b68: 8080030d sth r2,12(r16) + 27b6c: 00bfffc4 movi r2,-1 + 27b70: 003fab06 br 27a20 <_gp+0xfffeb4e8> + 27b74: 0027883a mov r19,zero + 27b78: 0011883a mov r8,zero + 27b7c: 0039883a mov fp,zero + 27b80: 0025883a mov r18,zero + 27b84: 90001f26 beq r18,zero,27c04 <__sfvwrite_r+0x29c> + 27b88: 40005a26 beq r8,zero,27cf4 <__sfvwrite_r+0x38c> + 27b8c: 982d883a mov r22,r19 + 27b90: 94c0012e bgeu r18,r19,27b98 <__sfvwrite_r+0x230> + 27b94: 902d883a mov r22,r18 + 27b98: 81000017 ldw r4,0(r16) + 27b9c: 80800417 ldw r2,16(r16) + 27ba0: b02f883a mov r23,r22 + 27ba4: 81c00517 ldw r7,20(r16) + 27ba8: 1100032e bgeu r2,r4,27bb8 <__sfvwrite_r+0x250> + 27bac: 80c00217 ldw r3,8(r16) + 27bb0: 38c7883a add r3,r7,r3 + 27bb4: 1d801816 blt r3,r22,27c18 <__sfvwrite_r+0x2b0> + 27bb8: b1c03e16 blt r22,r7,27cb4 <__sfvwrite_r+0x34c> + 27bbc: 80800917 ldw r2,36(r16) + 27bc0: 81400717 ldw r5,28(r16) + 27bc4: e00d883a mov r6,fp + 27bc8: da000115 stw r8,4(sp) + 27bcc: a809883a mov r4,r21 + 27bd0: 103ee83a callr r2 + 27bd4: 102f883a mov r23,r2 + 27bd8: da000117 ldw r8,4(sp) + 27bdc: 00bfe00e bge zero,r2,27b60 <_gp+0xfffeb628> + 27be0: 9de7c83a sub r19,r19,r23 + 27be4: 98001f26 beq r19,zero,27c64 <__sfvwrite_r+0x2fc> + 27be8: a0800217 ldw r2,8(r20) + 27bec: e5f9883a add fp,fp,r23 + 27bf0: 95e5c83a sub r18,r18,r23 + 27bf4: 15efc83a sub r23,r2,r23 + 27bf8: a5c00215 stw r23,8(r20) + 27bfc: b83f8726 beq r23,zero,27a1c <_gp+0xfffeb4e4> + 27c00: 903fe11e bne r18,zero,27b88 <_gp+0xfffeb650> + 27c04: 8f000017 ldw fp,0(r17) + 27c08: 8c800117 ldw r18,4(r17) + 27c0c: 0011883a mov r8,zero + 27c10: 8c400204 addi r17,r17,8 + 27c14: 003fdb06 br 27b84 <_gp+0xfffeb64c> + 27c18: 180d883a mov r6,r3 + 27c1c: e00b883a mov r5,fp + 27c20: da000115 stw r8,4(sp) + 27c24: d8c00015 stw r3,0(sp) + 27c28: 00284700 call 28470 + 27c2c: d8c00017 ldw r3,0(sp) + 27c30: 80800017 ldw r2,0(r16) + 27c34: 800b883a mov r5,r16 + 27c38: a809883a mov r4,r21 + 27c3c: 10c5883a add r2,r2,r3 + 27c40: 80800015 stw r2,0(r16) + 27c44: d8c00015 stw r3,0(sp) + 27c48: 00271080 call 27108 <_fflush_r> + 27c4c: d8c00017 ldw r3,0(sp) + 27c50: da000117 ldw r8,4(sp) + 27c54: 103fc21e bne r2,zero,27b60 <_gp+0xfffeb628> + 27c58: 182f883a mov r23,r3 + 27c5c: 9de7c83a sub r19,r19,r23 + 27c60: 983fe11e bne r19,zero,27be8 <_gp+0xfffeb6b0> + 27c64: 800b883a mov r5,r16 + 27c68: a809883a mov r4,r21 + 27c6c: 00271080 call 27108 <_fflush_r> + 27c70: 103fbb1e bne r2,zero,27b60 <_gp+0xfffeb628> + 27c74: 0011883a mov r8,zero + 27c78: 003fdb06 br 27be8 <_gp+0xfffeb6b0> + 27c7c: 94c0012e bgeu r18,r19,27c84 <__sfvwrite_r+0x31c> + 27c80: 9027883a mov r19,r18 + 27c84: 980d883a mov r6,r19 + 27c88: e00b883a mov r5,fp + 27c8c: 00284700 call 28470 + 27c90: 80800217 ldw r2,8(r16) + 27c94: 80c00017 ldw r3,0(r16) + 27c98: 14c5c83a sub r2,r2,r19 + 27c9c: 1cc7883a add r3,r3,r19 + 27ca0: 80800215 stw r2,8(r16) + 27ca4: 80c00015 stw r3,0(r16) + 27ca8: 10004326 beq r2,zero,27db8 <__sfvwrite_r+0x450> + 27cac: 9805883a mov r2,r19 + 27cb0: 003f8606 br 27acc <_gp+0xfffeb594> + 27cb4: b00d883a mov r6,r22 + 27cb8: e00b883a mov r5,fp + 27cbc: da000115 stw r8,4(sp) + 27cc0: 00284700 call 28470 + 27cc4: 80800217 ldw r2,8(r16) + 27cc8: 80c00017 ldw r3,0(r16) + 27ccc: da000117 ldw r8,4(sp) + 27cd0: 1585c83a sub r2,r2,r22 + 27cd4: 1dad883a add r22,r3,r22 + 27cd8: 80800215 stw r2,8(r16) + 27cdc: 85800015 stw r22,0(r16) + 27ce0: 003fbf06 br 27be0 <_gp+0xfffeb6a8> + 27ce4: 81000017 ldw r4,0(r16) + 27ce8: 9027883a mov r19,r18 + 27cec: 902f883a mov r23,r18 + 27cf0: 003f6c06 br 27aa4 <_gp+0xfffeb56c> + 27cf4: 900d883a mov r6,r18 + 27cf8: 01400284 movi r5,10 + 27cfc: e009883a mov r4,fp + 27d00: 00282440 call 28244 + 27d04: 10003e26 beq r2,zero,27e00 <__sfvwrite_r+0x498> + 27d08: 10800044 addi r2,r2,1 + 27d0c: 1727c83a sub r19,r2,fp + 27d10: 02000044 movi r8,1 + 27d14: 003f9d06 br 27b8c <_gp+0xfffeb654> + 27d18: 80800517 ldw r2,20(r16) + 27d1c: 81400417 ldw r5,16(r16) + 27d20: 81c00017 ldw r7,0(r16) + 27d24: 10a7883a add r19,r2,r2 + 27d28: 9885883a add r2,r19,r2 + 27d2c: 1026d7fa srli r19,r2,31 + 27d30: 396dc83a sub r22,r7,r5 + 27d34: b1000044 addi r4,r22,1 + 27d38: 9885883a add r2,r19,r2 + 27d3c: 1027d07a srai r19,r2,1 + 27d40: 2485883a add r2,r4,r18 + 27d44: 980d883a mov r6,r19 + 27d48: 9880022e bgeu r19,r2,27d54 <__sfvwrite_r+0x3ec> + 27d4c: 1027883a mov r19,r2 + 27d50: 100d883a mov r6,r2 + 27d54: 18c1000c andi r3,r3,1024 + 27d58: 18001c26 beq r3,zero,27dcc <__sfvwrite_r+0x464> + 27d5c: 300b883a mov r5,r6 + 27d60: a809883a mov r4,r21 + 27d64: 00226c00 call 226c0 <_malloc_r> + 27d68: 102f883a mov r23,r2 + 27d6c: 10002926 beq r2,zero,27e14 <__sfvwrite_r+0x4ac> + 27d70: 81400417 ldw r5,16(r16) + 27d74: b00d883a mov r6,r22 + 27d78: 1009883a mov r4,r2 + 27d7c: 00283280 call 28328 + 27d80: 8080030b ldhu r2,12(r16) + 27d84: 00fedfc4 movi r3,-1153 + 27d88: 10c4703a and r2,r2,r3 + 27d8c: 10802014 ori r2,r2,128 + 27d90: 8080030d sth r2,12(r16) + 27d94: bd89883a add r4,r23,r22 + 27d98: 9d8fc83a sub r7,r19,r22 + 27d9c: 85c00415 stw r23,16(r16) + 27da0: 84c00515 stw r19,20(r16) + 27da4: 81000015 stw r4,0(r16) + 27da8: 9027883a mov r19,r18 + 27dac: 81c00215 stw r7,8(r16) + 27db0: 902f883a mov r23,r18 + 27db4: 003f3b06 br 27aa4 <_gp+0xfffeb56c> + 27db8: 800b883a mov r5,r16 + 27dbc: a809883a mov r4,r21 + 27dc0: 00271080 call 27108 <_fflush_r> + 27dc4: 103fb926 beq r2,zero,27cac <_gp+0xfffeb774> + 27dc8: 003f6506 br 27b60 <_gp+0xfffeb628> + 27dcc: a809883a mov r4,r21 + 27dd0: 00297300 call 29730 <_realloc_r> + 27dd4: 102f883a mov r23,r2 + 27dd8: 103fee1e bne r2,zero,27d94 <_gp+0xfffeb85c> + 27ddc: 81400417 ldw r5,16(r16) + 27de0: a809883a mov r4,r21 + 27de4: 00276580 call 27658 <_free_r> + 27de8: 8080030b ldhu r2,12(r16) + 27dec: 00ffdfc4 movi r3,-129 + 27df0: 1884703a and r2,r3,r2 + 27df4: 00c00304 movi r3,12 + 27df8: a8c00015 stw r3,0(r21) + 27dfc: 003f5906 br 27b64 <_gp+0xfffeb62c> + 27e00: 94c00044 addi r19,r18,1 + 27e04: 02000044 movi r8,1 + 27e08: 003f6006 br 27b8c <_gp+0xfffeb654> + 27e0c: 00bfffc4 movi r2,-1 + 27e10: 003f0306 br 27a20 <_gp+0xfffeb4e8> + 27e14: 00800304 movi r2,12 + 27e18: a8800015 stw r2,0(r21) + 27e1c: 8080030b ldhu r2,12(r16) + 27e20: 003f5006 br 27b64 <_gp+0xfffeb62c> + +00027e24 <_fwalk>: + 27e24: defff704 addi sp,sp,-36 + 27e28: dd000415 stw r20,16(sp) + 27e2c: dfc00815 stw ra,32(sp) + 27e30: ddc00715 stw r23,28(sp) + 27e34: dd800615 stw r22,24(sp) + 27e38: dd400515 stw r21,20(sp) + 27e3c: dcc00315 stw r19,12(sp) + 27e40: dc800215 stw r18,8(sp) + 27e44: dc400115 stw r17,4(sp) + 27e48: dc000015 stw r16,0(sp) + 27e4c: 2500b804 addi r20,r4,736 + 27e50: a0002326 beq r20,zero,27ee0 <_fwalk+0xbc> + 27e54: 282b883a mov r21,r5 + 27e58: 002f883a mov r23,zero + 27e5c: 05800044 movi r22,1 + 27e60: 04ffffc4 movi r19,-1 + 27e64: a4400117 ldw r17,4(r20) + 27e68: a4800217 ldw r18,8(r20) + 27e6c: 8c7fffc4 addi r17,r17,-1 + 27e70: 88000d16 blt r17,zero,27ea8 <_fwalk+0x84> + 27e74: 94000304 addi r16,r18,12 + 27e78: 94800384 addi r18,r18,14 + 27e7c: 8080000b ldhu r2,0(r16) + 27e80: 8c7fffc4 addi r17,r17,-1 + 27e84: 813ffd04 addi r4,r16,-12 + 27e88: b080042e bgeu r22,r2,27e9c <_fwalk+0x78> + 27e8c: 9080000f ldh r2,0(r18) + 27e90: 14c00226 beq r2,r19,27e9c <_fwalk+0x78> + 27e94: a83ee83a callr r21 + 27e98: b8aeb03a or r23,r23,r2 + 27e9c: 84001a04 addi r16,r16,104 + 27ea0: 94801a04 addi r18,r18,104 + 27ea4: 8cfff51e bne r17,r19,27e7c <_gp+0xfffeb944> + 27ea8: a5000017 ldw r20,0(r20) + 27eac: a03fed1e bne r20,zero,27e64 <_gp+0xfffeb92c> + 27eb0: b805883a mov r2,r23 + 27eb4: dfc00817 ldw ra,32(sp) + 27eb8: ddc00717 ldw r23,28(sp) + 27ebc: dd800617 ldw r22,24(sp) + 27ec0: dd400517 ldw r21,20(sp) + 27ec4: dd000417 ldw r20,16(sp) + 27ec8: dcc00317 ldw r19,12(sp) + 27ecc: dc800217 ldw r18,8(sp) + 27ed0: dc400117 ldw r17,4(sp) + 27ed4: dc000017 ldw r16,0(sp) + 27ed8: dec00904 addi sp,sp,36 + 27edc: f800283a ret + 27ee0: 002f883a mov r23,zero + 27ee4: 003ff206 br 27eb0 <_gp+0xfffeb978> + +00027ee8 <_fwalk_reent>: + 27ee8: defff704 addi sp,sp,-36 + 27eec: dd000415 stw r20,16(sp) + 27ef0: dfc00815 stw ra,32(sp) + 27ef4: ddc00715 stw r23,28(sp) + 27ef8: dd800615 stw r22,24(sp) + 27efc: dd400515 stw r21,20(sp) + 27f00: dcc00315 stw r19,12(sp) + 27f04: dc800215 stw r18,8(sp) + 27f08: dc400115 stw r17,4(sp) + 27f0c: dc000015 stw r16,0(sp) + 27f10: 2500b804 addi r20,r4,736 + 27f14: a0002326 beq r20,zero,27fa4 <_fwalk_reent+0xbc> + 27f18: 282b883a mov r21,r5 + 27f1c: 2027883a mov r19,r4 + 27f20: 002f883a mov r23,zero + 27f24: 05800044 movi r22,1 + 27f28: 04bfffc4 movi r18,-1 + 27f2c: a4400117 ldw r17,4(r20) + 27f30: a4000217 ldw r16,8(r20) + 27f34: 8c7fffc4 addi r17,r17,-1 + 27f38: 88000c16 blt r17,zero,27f6c <_fwalk_reent+0x84> + 27f3c: 84000304 addi r16,r16,12 + 27f40: 8080000b ldhu r2,0(r16) + 27f44: 8c7fffc4 addi r17,r17,-1 + 27f48: 817ffd04 addi r5,r16,-12 + 27f4c: b080052e bgeu r22,r2,27f64 <_fwalk_reent+0x7c> + 27f50: 8080008f ldh r2,2(r16) + 27f54: 9809883a mov r4,r19 + 27f58: 14800226 beq r2,r18,27f64 <_fwalk_reent+0x7c> + 27f5c: a83ee83a callr r21 + 27f60: b8aeb03a or r23,r23,r2 + 27f64: 84001a04 addi r16,r16,104 + 27f68: 8cbff51e bne r17,r18,27f40 <_gp+0xfffeba08> + 27f6c: a5000017 ldw r20,0(r20) + 27f70: a03fee1e bne r20,zero,27f2c <_gp+0xfffeb9f4> + 27f74: b805883a mov r2,r23 + 27f78: dfc00817 ldw ra,32(sp) + 27f7c: ddc00717 ldw r23,28(sp) + 27f80: dd800617 ldw r22,24(sp) + 27f84: dd400517 ldw r21,20(sp) + 27f88: dd000417 ldw r20,16(sp) + 27f8c: dcc00317 ldw r19,12(sp) + 27f90: dc800217 ldw r18,8(sp) + 27f94: dc400117 ldw r17,4(sp) + 27f98: dc000017 ldw r16,0(sp) + 27f9c: dec00904 addi sp,sp,36 + 27fa0: f800283a ret + 27fa4: 002f883a mov r23,zero + 27fa8: 003ff206 br 27f74 <_gp+0xfffeba3c> + +00027fac <_setlocale_r>: + 27fac: 30001b26 beq r6,zero,2801c <_setlocale_r+0x70> + 27fb0: 014000f4 movhi r5,3 + 27fb4: defffe04 addi sp,sp,-8 + 27fb8: 29481a04 addi r5,r5,8296 + 27fbc: 3009883a mov r4,r6 + 27fc0: dc000015 stw r16,0(sp) + 27fc4: dfc00115 stw ra,4(sp) + 27fc8: 3021883a mov r16,r6 + 27fcc: 0029e440 call 29e44 + 27fd0: 1000061e bne r2,zero,27fec <_setlocale_r+0x40> + 27fd4: 008000f4 movhi r2,3 + 27fd8: 10881904 addi r2,r2,8292 + 27fdc: dfc00117 ldw ra,4(sp) + 27fe0: dc000017 ldw r16,0(sp) + 27fe4: dec00204 addi sp,sp,8 + 27fe8: f800283a ret + 27fec: 014000f4 movhi r5,3 + 27ff0: 29481904 addi r5,r5,8292 + 27ff4: 8009883a mov r4,r16 + 27ff8: 0029e440 call 29e44 + 27ffc: 103ff526 beq r2,zero,27fd4 <_gp+0xfffeba9c> + 28000: 014000f4 movhi r5,3 + 28004: 29480404 addi r5,r5,8208 + 28008: 8009883a mov r4,r16 + 2800c: 0029e440 call 29e44 + 28010: 103ff026 beq r2,zero,27fd4 <_gp+0xfffeba9c> + 28014: 0005883a mov r2,zero + 28018: 003ff006 br 27fdc <_gp+0xfffebaa4> + 2801c: 008000f4 movhi r2,3 + 28020: 10881904 addi r2,r2,8292 + 28024: f800283a ret + +00028028 <__locale_charset>: + 28028: 008000f4 movhi r2,3 + 2802c: 108cb604 addi r2,r2,13016 + 28030: f800283a ret + +00028034 <__locale_mb_cur_max>: + 28034: 008000f4 movhi r2,3 + 28038: 10915504 addi r2,r2,17748 + 2803c: 10800017 ldw r2,0(r2) + 28040: f800283a ret + +00028044 <__locale_msgcharset>: + 28044: 008000f4 movhi r2,3 + 28048: 108cae04 addi r2,r2,12984 + 2804c: f800283a ret + +00028050 <__locale_cjk_lang>: + 28050: 0005883a mov r2,zero + 28054: f800283a ret + +00028058 <_localeconv_r>: + 28058: 008000f4 movhi r2,3 + 2805c: 108cbe04 addi r2,r2,13048 + 28060: f800283a ret + +00028064 : + 28064: 008000f4 movhi r2,3 + 28068: 10915404 addi r2,r2,17744 + 2806c: 280d883a mov r6,r5 + 28070: 200b883a mov r5,r4 + 28074: 11000017 ldw r4,0(r2) + 28078: 0027fac1 jmpi 27fac <_setlocale_r> + +0002807c : + 2807c: 008000f4 movhi r2,3 + 28080: 108cbe04 addi r2,r2,13048 + 28084: f800283a ret + +00028088 <__smakebuf_r>: + 28088: 2880030b ldhu r2,12(r5) + 2808c: 10c0008c andi r3,r2,2 + 28090: 1800411e bne r3,zero,28198 <__smakebuf_r+0x110> + 28094: deffec04 addi sp,sp,-80 + 28098: dc000f15 stw r16,60(sp) + 2809c: 2821883a mov r16,r5 + 280a0: 2940038f ldh r5,14(r5) + 280a4: dc401015 stw r17,64(sp) + 280a8: dfc01315 stw ra,76(sp) + 280ac: dcc01215 stw r19,72(sp) + 280b0: dc801115 stw r18,68(sp) + 280b4: 2023883a mov r17,r4 + 280b8: 28001c16 blt r5,zero,2812c <__smakebuf_r+0xa4> + 280bc: d80d883a mov r6,sp + 280c0: 002bb440 call 2bb44 <_fstat_r> + 280c4: 10001816 blt r2,zero,28128 <__smakebuf_r+0xa0> + 280c8: d8800117 ldw r2,4(sp) + 280cc: 00e00014 movui r3,32768 + 280d0: 10bc000c andi r2,r2,61440 + 280d4: 14c80020 cmpeqi r19,r2,8192 + 280d8: 10c03726 beq r2,r3,281b8 <__smakebuf_r+0x130> + 280dc: 80c0030b ldhu r3,12(r16) + 280e0: 18c20014 ori r3,r3,2048 + 280e4: 80c0030d sth r3,12(r16) + 280e8: 00c80004 movi r3,8192 + 280ec: 10c0521e bne r2,r3,28238 <__smakebuf_r+0x1b0> + 280f0: 8140038f ldh r5,14(r16) + 280f4: 8809883a mov r4,r17 + 280f8: 002bba00 call 2bba0 <_isatty_r> + 280fc: 10004c26 beq r2,zero,28230 <__smakebuf_r+0x1a8> + 28100: 8080030b ldhu r2,12(r16) + 28104: 80c010c4 addi r3,r16,67 + 28108: 80c00015 stw r3,0(r16) + 2810c: 10800054 ori r2,r2,1 + 28110: 8080030d sth r2,12(r16) + 28114: 00800044 movi r2,1 + 28118: 80c00415 stw r3,16(r16) + 2811c: 80800515 stw r2,20(r16) + 28120: 04810004 movi r18,1024 + 28124: 00000706 br 28144 <__smakebuf_r+0xbc> + 28128: 8080030b ldhu r2,12(r16) + 2812c: 10c0200c andi r3,r2,128 + 28130: 18001f1e bne r3,zero,281b0 <__smakebuf_r+0x128> + 28134: 04810004 movi r18,1024 + 28138: 10820014 ori r2,r2,2048 + 2813c: 8080030d sth r2,12(r16) + 28140: 0027883a mov r19,zero + 28144: 900b883a mov r5,r18 + 28148: 8809883a mov r4,r17 + 2814c: 00226c00 call 226c0 <_malloc_r> + 28150: 10002c26 beq r2,zero,28204 <__smakebuf_r+0x17c> + 28154: 80c0030b ldhu r3,12(r16) + 28158: 010000b4 movhi r4,2 + 2815c: 211c6704 addi r4,r4,29084 + 28160: 89000f15 stw r4,60(r17) + 28164: 18c02014 ori r3,r3,128 + 28168: 80c0030d sth r3,12(r16) + 2816c: 80800015 stw r2,0(r16) + 28170: 80800415 stw r2,16(r16) + 28174: 84800515 stw r18,20(r16) + 28178: 98001a1e bne r19,zero,281e4 <__smakebuf_r+0x15c> + 2817c: dfc01317 ldw ra,76(sp) + 28180: dcc01217 ldw r19,72(sp) + 28184: dc801117 ldw r18,68(sp) + 28188: dc401017 ldw r17,64(sp) + 2818c: dc000f17 ldw r16,60(sp) + 28190: dec01404 addi sp,sp,80 + 28194: f800283a ret + 28198: 288010c4 addi r2,r5,67 + 2819c: 28800015 stw r2,0(r5) + 281a0: 28800415 stw r2,16(r5) + 281a4: 00800044 movi r2,1 + 281a8: 28800515 stw r2,20(r5) + 281ac: f800283a ret + 281b0: 04801004 movi r18,64 + 281b4: 003fe006 br 28138 <_gp+0xfffebc00> + 281b8: 81000a17 ldw r4,40(r16) + 281bc: 00c000f4 movhi r3,3 + 281c0: 18e77804 addi r3,r3,-25120 + 281c4: 20ffc51e bne r4,r3,280dc <_gp+0xfffebba4> + 281c8: 8080030b ldhu r2,12(r16) + 281cc: 04810004 movi r18,1024 + 281d0: 84801315 stw r18,76(r16) + 281d4: 1484b03a or r2,r2,r18 + 281d8: 8080030d sth r2,12(r16) + 281dc: 0027883a mov r19,zero + 281e0: 003fd806 br 28144 <_gp+0xfffebc0c> + 281e4: 8140038f ldh r5,14(r16) + 281e8: 8809883a mov r4,r17 + 281ec: 002bba00 call 2bba0 <_isatty_r> + 281f0: 103fe226 beq r2,zero,2817c <_gp+0xfffebc44> + 281f4: 8080030b ldhu r2,12(r16) + 281f8: 10800054 ori r2,r2,1 + 281fc: 8080030d sth r2,12(r16) + 28200: 003fde06 br 2817c <_gp+0xfffebc44> + 28204: 8080030b ldhu r2,12(r16) + 28208: 10c0800c andi r3,r2,512 + 2820c: 183fdb1e bne r3,zero,2817c <_gp+0xfffebc44> + 28210: 10800094 ori r2,r2,2 + 28214: 80c010c4 addi r3,r16,67 + 28218: 8080030d sth r2,12(r16) + 2821c: 00800044 movi r2,1 + 28220: 80c00015 stw r3,0(r16) + 28224: 80c00415 stw r3,16(r16) + 28228: 80800515 stw r2,20(r16) + 2822c: 003fd306 br 2817c <_gp+0xfffebc44> + 28230: 04810004 movi r18,1024 + 28234: 003fc306 br 28144 <_gp+0xfffebc0c> + 28238: 0027883a mov r19,zero + 2823c: 04810004 movi r18,1024 + 28240: 003fc006 br 28144 <_gp+0xfffebc0c> + +00028244 : + 28244: 208000cc andi r2,r4,3 + 28248: 280f883a mov r7,r5 + 2824c: 10003426 beq r2,zero,28320 + 28250: 30bfffc4 addi r2,r6,-1 + 28254: 30001a26 beq r6,zero,282c0 + 28258: 20c00003 ldbu r3,0(r4) + 2825c: 29803fcc andi r6,r5,255 + 28260: 30c0051e bne r6,r3,28278 + 28264: 00001806 br 282c8 + 28268: 10001526 beq r2,zero,282c0 + 2826c: 20c00003 ldbu r3,0(r4) + 28270: 10bfffc4 addi r2,r2,-1 + 28274: 30c01426 beq r6,r3,282c8 + 28278: 21000044 addi r4,r4,1 + 2827c: 20c000cc andi r3,r4,3 + 28280: 183ff91e bne r3,zero,28268 <_gp+0xfffebd30> + 28284: 020000c4 movi r8,3 + 28288: 40801136 bltu r8,r2,282d0 + 2828c: 10000c26 beq r2,zero,282c0 + 28290: 20c00003 ldbu r3,0(r4) + 28294: 29403fcc andi r5,r5,255 + 28298: 28c00b26 beq r5,r3,282c8 + 2829c: 20c00044 addi r3,r4,1 + 282a0: 39803fcc andi r6,r7,255 + 282a4: 2089883a add r4,r4,r2 + 282a8: 00000306 br 282b8 + 282ac: 18c00044 addi r3,r3,1 + 282b0: 197fffc3 ldbu r5,-1(r3) + 282b4: 31400526 beq r6,r5,282cc + 282b8: 1805883a mov r2,r3 + 282bc: 20fffb1e bne r4,r3,282ac <_gp+0xfffebd74> + 282c0: 0005883a mov r2,zero + 282c4: f800283a ret + 282c8: 2005883a mov r2,r4 + 282cc: f800283a ret + 282d0: 28c03fcc andi r3,r5,255 + 282d4: 1812923a slli r9,r3,8 + 282d8: 02ffbff4 movhi r11,65279 + 282dc: 02a02074 movhi r10,32897 + 282e0: 48d2b03a or r9,r9,r3 + 282e4: 4806943a slli r3,r9,16 + 282e8: 5affbfc4 addi r11,r11,-257 + 282ec: 52a02004 addi r10,r10,-32640 + 282f0: 48d2b03a or r9,r9,r3 + 282f4: 20c00017 ldw r3,0(r4) + 282f8: 48c6f03a xor r3,r9,r3 + 282fc: 1acd883a add r6,r3,r11 + 28300: 00c6303a nor r3,zero,r3 + 28304: 30c6703a and r3,r6,r3 + 28308: 1a86703a and r3,r3,r10 + 2830c: 183fe01e bne r3,zero,28290 <_gp+0xfffebd58> + 28310: 10bfff04 addi r2,r2,-4 + 28314: 21000104 addi r4,r4,4 + 28318: 40bff636 bltu r8,r2,282f4 <_gp+0xfffebdbc> + 2831c: 003fdb06 br 2828c <_gp+0xfffebd54> + 28320: 3005883a mov r2,r6 + 28324: 003fd706 br 28284 <_gp+0xfffebd4c> + +00028328 : + 28328: defffd04 addi sp,sp,-12 + 2832c: dfc00215 stw ra,8(sp) + 28330: dc400115 stw r17,4(sp) + 28334: dc000015 stw r16,0(sp) + 28338: 00c003c4 movi r3,15 + 2833c: 2005883a mov r2,r4 + 28340: 1980452e bgeu r3,r6,28458 + 28344: 2906b03a or r3,r5,r4 + 28348: 18c000cc andi r3,r3,3 + 2834c: 1800441e bne r3,zero,28460 + 28350: 347ffc04 addi r17,r6,-16 + 28354: 8822d13a srli r17,r17,4 + 28358: 28c00104 addi r3,r5,4 + 2835c: 23400104 addi r13,r4,4 + 28360: 8820913a slli r16,r17,4 + 28364: 2b000204 addi r12,r5,8 + 28368: 22c00204 addi r11,r4,8 + 2836c: 84000504 addi r16,r16,20 + 28370: 2a800304 addi r10,r5,12 + 28374: 22400304 addi r9,r4,12 + 28378: 2c21883a add r16,r5,r16 + 2837c: 2811883a mov r8,r5 + 28380: 200f883a mov r7,r4 + 28384: 41000017 ldw r4,0(r8) + 28388: 1fc00017 ldw ra,0(r3) + 2838c: 63c00017 ldw r15,0(r12) + 28390: 39000015 stw r4,0(r7) + 28394: 53800017 ldw r14,0(r10) + 28398: 6fc00015 stw ra,0(r13) + 2839c: 5bc00015 stw r15,0(r11) + 283a0: 4b800015 stw r14,0(r9) + 283a4: 18c00404 addi r3,r3,16 + 283a8: 39c00404 addi r7,r7,16 + 283ac: 42000404 addi r8,r8,16 + 283b0: 6b400404 addi r13,r13,16 + 283b4: 63000404 addi r12,r12,16 + 283b8: 5ac00404 addi r11,r11,16 + 283bc: 52800404 addi r10,r10,16 + 283c0: 4a400404 addi r9,r9,16 + 283c4: 1c3fef1e bne r3,r16,28384 <_gp+0xfffebe4c> + 283c8: 89c00044 addi r7,r17,1 + 283cc: 380e913a slli r7,r7,4 + 283d0: 310003cc andi r4,r6,15 + 283d4: 02c000c4 movi r11,3 + 283d8: 11c7883a add r3,r2,r7 + 283dc: 29cb883a add r5,r5,r7 + 283e0: 5900212e bgeu r11,r4,28468 + 283e4: 1813883a mov r9,r3 + 283e8: 2811883a mov r8,r5 + 283ec: 200f883a mov r7,r4 + 283f0: 42800017 ldw r10,0(r8) + 283f4: 4a400104 addi r9,r9,4 + 283f8: 39ffff04 addi r7,r7,-4 + 283fc: 4abfff15 stw r10,-4(r9) + 28400: 42000104 addi r8,r8,4 + 28404: 59fffa36 bltu r11,r7,283f0 <_gp+0xfffebeb8> + 28408: 213fff04 addi r4,r4,-4 + 2840c: 2008d0ba srli r4,r4,2 + 28410: 318000cc andi r6,r6,3 + 28414: 21000044 addi r4,r4,1 + 28418: 2109883a add r4,r4,r4 + 2841c: 2109883a add r4,r4,r4 + 28420: 1907883a add r3,r3,r4 + 28424: 290b883a add r5,r5,r4 + 28428: 30000626 beq r6,zero,28444 + 2842c: 198d883a add r6,r3,r6 + 28430: 29c00003 ldbu r7,0(r5) + 28434: 18c00044 addi r3,r3,1 + 28438: 29400044 addi r5,r5,1 + 2843c: 19ffffc5 stb r7,-1(r3) + 28440: 19bffb1e bne r3,r6,28430 <_gp+0xfffebef8> + 28444: dfc00217 ldw ra,8(sp) + 28448: dc400117 ldw r17,4(sp) + 2844c: dc000017 ldw r16,0(sp) + 28450: dec00304 addi sp,sp,12 + 28454: f800283a ret + 28458: 2007883a mov r3,r4 + 2845c: 003ff206 br 28428 <_gp+0xfffebef0> + 28460: 2007883a mov r3,r4 + 28464: 003ff106 br 2842c <_gp+0xfffebef4> + 28468: 200d883a mov r6,r4 + 2846c: 003fee06 br 28428 <_gp+0xfffebef0> + +00028470 : + 28470: 2005883a mov r2,r4 + 28474: 29000b2e bgeu r5,r4,284a4 + 28478: 298f883a add r7,r5,r6 + 2847c: 21c0092e bgeu r4,r7,284a4 + 28480: 2187883a add r3,r4,r6 + 28484: 198bc83a sub r5,r3,r6 + 28488: 30004826 beq r6,zero,285ac + 2848c: 39ffffc4 addi r7,r7,-1 + 28490: 39000003 ldbu r4,0(r7) + 28494: 18ffffc4 addi r3,r3,-1 + 28498: 19000005 stb r4,0(r3) + 2849c: 28fffb1e bne r5,r3,2848c <_gp+0xfffebf54> + 284a0: f800283a ret + 284a4: 00c003c4 movi r3,15 + 284a8: 1980412e bgeu r3,r6,285b0 + 284ac: 2886b03a or r3,r5,r2 + 284b0: 18c000cc andi r3,r3,3 + 284b4: 1800401e bne r3,zero,285b8 + 284b8: 33fffc04 addi r15,r6,-16 + 284bc: 781ed13a srli r15,r15,4 + 284c0: 28c00104 addi r3,r5,4 + 284c4: 13400104 addi r13,r2,4 + 284c8: 781c913a slli r14,r15,4 + 284cc: 2b000204 addi r12,r5,8 + 284d0: 12c00204 addi r11,r2,8 + 284d4: 73800504 addi r14,r14,20 + 284d8: 2a800304 addi r10,r5,12 + 284dc: 12400304 addi r9,r2,12 + 284e0: 2b9d883a add r14,r5,r14 + 284e4: 2811883a mov r8,r5 + 284e8: 100f883a mov r7,r2 + 284ec: 41000017 ldw r4,0(r8) + 284f0: 39c00404 addi r7,r7,16 + 284f4: 18c00404 addi r3,r3,16 + 284f8: 393ffc15 stw r4,-16(r7) + 284fc: 193ffc17 ldw r4,-16(r3) + 28500: 6b400404 addi r13,r13,16 + 28504: 5ac00404 addi r11,r11,16 + 28508: 693ffc15 stw r4,-16(r13) + 2850c: 61000017 ldw r4,0(r12) + 28510: 4a400404 addi r9,r9,16 + 28514: 42000404 addi r8,r8,16 + 28518: 593ffc15 stw r4,-16(r11) + 2851c: 51000017 ldw r4,0(r10) + 28520: 63000404 addi r12,r12,16 + 28524: 52800404 addi r10,r10,16 + 28528: 493ffc15 stw r4,-16(r9) + 2852c: 1bbfef1e bne r3,r14,284ec <_gp+0xfffebfb4> + 28530: 79000044 addi r4,r15,1 + 28534: 2008913a slli r4,r4,4 + 28538: 328003cc andi r10,r6,15 + 2853c: 02c000c4 movi r11,3 + 28540: 1107883a add r3,r2,r4 + 28544: 290b883a add r5,r5,r4 + 28548: 5a801e2e bgeu r11,r10,285c4 + 2854c: 1813883a mov r9,r3 + 28550: 2811883a mov r8,r5 + 28554: 500f883a mov r7,r10 + 28558: 41000017 ldw r4,0(r8) + 2855c: 4a400104 addi r9,r9,4 + 28560: 39ffff04 addi r7,r7,-4 + 28564: 493fff15 stw r4,-4(r9) + 28568: 42000104 addi r8,r8,4 + 2856c: 59fffa36 bltu r11,r7,28558 <_gp+0xfffec020> + 28570: 513fff04 addi r4,r10,-4 + 28574: 2008d0ba srli r4,r4,2 + 28578: 318000cc andi r6,r6,3 + 2857c: 21000044 addi r4,r4,1 + 28580: 2109883a add r4,r4,r4 + 28584: 2109883a add r4,r4,r4 + 28588: 1907883a add r3,r3,r4 + 2858c: 290b883a add r5,r5,r4 + 28590: 30000b26 beq r6,zero,285c0 + 28594: 198d883a add r6,r3,r6 + 28598: 29c00003 ldbu r7,0(r5) + 2859c: 18c00044 addi r3,r3,1 + 285a0: 29400044 addi r5,r5,1 + 285a4: 19ffffc5 stb r7,-1(r3) + 285a8: 19bffb1e bne r3,r6,28598 <_gp+0xfffec060> + 285ac: f800283a ret + 285b0: 1007883a mov r3,r2 + 285b4: 003ff606 br 28590 <_gp+0xfffec058> + 285b8: 1007883a mov r3,r2 + 285bc: 003ff506 br 28594 <_gp+0xfffec05c> + 285c0: f800283a ret + 285c4: 500d883a mov r6,r10 + 285c8: 003ff106 br 28590 <_gp+0xfffec058> + +000285cc <_Balloc>: + 285cc: 20801317 ldw r2,76(r4) + 285d0: defffc04 addi sp,sp,-16 + 285d4: dc400115 stw r17,4(sp) + 285d8: dc000015 stw r16,0(sp) + 285dc: dfc00315 stw ra,12(sp) + 285e0: dc800215 stw r18,8(sp) + 285e4: 2023883a mov r17,r4 + 285e8: 2821883a mov r16,r5 + 285ec: 10000f26 beq r2,zero,2862c <_Balloc+0x60> + 285f0: 8407883a add r3,r16,r16 + 285f4: 18c7883a add r3,r3,r3 + 285f8: 10c7883a add r3,r2,r3 + 285fc: 18800017 ldw r2,0(r3) + 28600: 10001126 beq r2,zero,28648 <_Balloc+0x7c> + 28604: 11000017 ldw r4,0(r2) + 28608: 19000015 stw r4,0(r3) + 2860c: 10000415 stw zero,16(r2) + 28610: 10000315 stw zero,12(r2) + 28614: dfc00317 ldw ra,12(sp) + 28618: dc800217 ldw r18,8(sp) + 2861c: dc400117 ldw r17,4(sp) + 28620: dc000017 ldw r16,0(sp) + 28624: dec00404 addi sp,sp,16 + 28628: f800283a ret + 2862c: 01800844 movi r6,33 + 28630: 01400104 movi r5,4 + 28634: 002b7740 call 2b774 <_calloc_r> + 28638: 88801315 stw r2,76(r17) + 2863c: 103fec1e bne r2,zero,285f0 <_gp+0xfffec0b8> + 28640: 0005883a mov r2,zero + 28644: 003ff306 br 28614 <_gp+0xfffec0dc> + 28648: 01400044 movi r5,1 + 2864c: 2c24983a sll r18,r5,r16 + 28650: 8809883a mov r4,r17 + 28654: 91800144 addi r6,r18,5 + 28658: 318d883a add r6,r6,r6 + 2865c: 318d883a add r6,r6,r6 + 28660: 002b7740 call 2b774 <_calloc_r> + 28664: 103ff626 beq r2,zero,28640 <_gp+0xfffec108> + 28668: 14000115 stw r16,4(r2) + 2866c: 14800215 stw r18,8(r2) + 28670: 003fe606 br 2860c <_gp+0xfffec0d4> + +00028674 <_Bfree>: + 28674: 28000826 beq r5,zero,28698 <_Bfree+0x24> + 28678: 28c00117 ldw r3,4(r5) + 2867c: 20801317 ldw r2,76(r4) + 28680: 18c7883a add r3,r3,r3 + 28684: 18c7883a add r3,r3,r3 + 28688: 10c5883a add r2,r2,r3 + 2868c: 10c00017 ldw r3,0(r2) + 28690: 28c00015 stw r3,0(r5) + 28694: 11400015 stw r5,0(r2) + 28698: f800283a ret + +0002869c <__multadd>: + 2869c: defffa04 addi sp,sp,-24 + 286a0: dc800315 stw r18,12(sp) + 286a4: dc400215 stw r17,8(sp) + 286a8: dc000115 stw r16,4(sp) + 286ac: 2823883a mov r17,r5 + 286b0: 2c000417 ldw r16,16(r5) + 286b4: dfc00515 stw ra,20(sp) + 286b8: dcc00415 stw r19,16(sp) + 286bc: 2025883a mov r18,r4 + 286c0: 29400504 addi r5,r5,20 + 286c4: 0011883a mov r8,zero + 286c8: 28c00017 ldw r3,0(r5) + 286cc: 29400104 addi r5,r5,4 + 286d0: 42000044 addi r8,r8,1 + 286d4: 18bfffcc andi r2,r3,65535 + 286d8: 1185383a mul r2,r2,r6 + 286dc: 1806d43a srli r3,r3,16 + 286e0: 11cf883a add r7,r2,r7 + 286e4: 3808d43a srli r4,r7,16 + 286e8: 1987383a mul r3,r3,r6 + 286ec: 38bfffcc andi r2,r7,65535 + 286f0: 1907883a add r3,r3,r4 + 286f4: 1808943a slli r4,r3,16 + 286f8: 180ed43a srli r7,r3,16 + 286fc: 2085883a add r2,r4,r2 + 28700: 28bfff15 stw r2,-4(r5) + 28704: 443ff016 blt r8,r16,286c8 <_gp+0xfffec190> + 28708: 38000926 beq r7,zero,28730 <__multadd+0x94> + 2870c: 88800217 ldw r2,8(r17) + 28710: 80800f0e bge r16,r2,28750 <__multadd+0xb4> + 28714: 80800144 addi r2,r16,5 + 28718: 1085883a add r2,r2,r2 + 2871c: 1085883a add r2,r2,r2 + 28720: 8885883a add r2,r17,r2 + 28724: 11c00015 stw r7,0(r2) + 28728: 84000044 addi r16,r16,1 + 2872c: 8c000415 stw r16,16(r17) + 28730: 8805883a mov r2,r17 + 28734: dfc00517 ldw ra,20(sp) + 28738: dcc00417 ldw r19,16(sp) + 2873c: dc800317 ldw r18,12(sp) + 28740: dc400217 ldw r17,8(sp) + 28744: dc000117 ldw r16,4(sp) + 28748: dec00604 addi sp,sp,24 + 2874c: f800283a ret + 28750: 89400117 ldw r5,4(r17) + 28754: 9009883a mov r4,r18 + 28758: d9c00015 stw r7,0(sp) + 2875c: 29400044 addi r5,r5,1 + 28760: 00285cc0 call 285cc <_Balloc> + 28764: 89800417 ldw r6,16(r17) + 28768: 89400304 addi r5,r17,12 + 2876c: 11000304 addi r4,r2,12 + 28770: 31800084 addi r6,r6,2 + 28774: 318d883a add r6,r6,r6 + 28778: 318d883a add r6,r6,r6 + 2877c: 1027883a mov r19,r2 + 28780: 00283280 call 28328 + 28784: d9c00017 ldw r7,0(sp) + 28788: 88000a26 beq r17,zero,287b4 <__multadd+0x118> + 2878c: 88c00117 ldw r3,4(r17) + 28790: 90801317 ldw r2,76(r18) + 28794: 18c7883a add r3,r3,r3 + 28798: 18c7883a add r3,r3,r3 + 2879c: 10c5883a add r2,r2,r3 + 287a0: 10c00017 ldw r3,0(r2) + 287a4: 88c00015 stw r3,0(r17) + 287a8: 14400015 stw r17,0(r2) + 287ac: 9823883a mov r17,r19 + 287b0: 003fd806 br 28714 <_gp+0xfffec1dc> + 287b4: 9823883a mov r17,r19 + 287b8: 003fd606 br 28714 <_gp+0xfffec1dc> + +000287bc <__s2b>: + 287bc: defff904 addi sp,sp,-28 + 287c0: dc400115 stw r17,4(sp) + 287c4: dc000015 stw r16,0(sp) + 287c8: 2023883a mov r17,r4 + 287cc: 2821883a mov r16,r5 + 287d0: 39000204 addi r4,r7,8 + 287d4: 01400244 movi r5,9 + 287d8: dcc00315 stw r19,12(sp) + 287dc: dc800215 stw r18,8(sp) + 287e0: dfc00615 stw ra,24(sp) + 287e4: dd400515 stw r21,20(sp) + 287e8: dd000415 stw r20,16(sp) + 287ec: 3825883a mov r18,r7 + 287f0: 3027883a mov r19,r6 + 287f4: 00224e40 call 224e4 <__divsi3> + 287f8: 00c00044 movi r3,1 + 287fc: 000b883a mov r5,zero + 28800: 1880030e bge r3,r2,28810 <__s2b+0x54> + 28804: 18c7883a add r3,r3,r3 + 28808: 29400044 addi r5,r5,1 + 2880c: 18bffd16 blt r3,r2,28804 <_gp+0xfffec2cc> + 28810: 8809883a mov r4,r17 + 28814: 00285cc0 call 285cc <_Balloc> + 28818: d8c00717 ldw r3,28(sp) + 2881c: 10c00515 stw r3,20(r2) + 28820: 00c00044 movi r3,1 + 28824: 10c00415 stw r3,16(r2) + 28828: 00c00244 movi r3,9 + 2882c: 1cc0210e bge r3,r19,288b4 <__s2b+0xf8> + 28830: 80eb883a add r21,r16,r3 + 28834: a829883a mov r20,r21 + 28838: 84e1883a add r16,r16,r19 + 2883c: a1c00007 ldb r7,0(r20) + 28840: 01800284 movi r6,10 + 28844: a5000044 addi r20,r20,1 + 28848: 100b883a mov r5,r2 + 2884c: 39fff404 addi r7,r7,-48 + 28850: 8809883a mov r4,r17 + 28854: 002869c0 call 2869c <__multadd> + 28858: a43ff81e bne r20,r16,2883c <_gp+0xfffec304> + 2885c: ace1883a add r16,r21,r19 + 28860: 843ffe04 addi r16,r16,-8 + 28864: 9c800a0e bge r19,r18,28890 <__s2b+0xd4> + 28868: 94e5c83a sub r18,r18,r19 + 2886c: 84a5883a add r18,r16,r18 + 28870: 81c00007 ldb r7,0(r16) + 28874: 01800284 movi r6,10 + 28878: 84000044 addi r16,r16,1 + 2887c: 100b883a mov r5,r2 + 28880: 39fff404 addi r7,r7,-48 + 28884: 8809883a mov r4,r17 + 28888: 002869c0 call 2869c <__multadd> + 2888c: 84bff81e bne r16,r18,28870 <_gp+0xfffec338> + 28890: dfc00617 ldw ra,24(sp) + 28894: dd400517 ldw r21,20(sp) + 28898: dd000417 ldw r20,16(sp) + 2889c: dcc00317 ldw r19,12(sp) + 288a0: dc800217 ldw r18,8(sp) + 288a4: dc400117 ldw r17,4(sp) + 288a8: dc000017 ldw r16,0(sp) + 288ac: dec00704 addi sp,sp,28 + 288b0: f800283a ret + 288b4: 84000284 addi r16,r16,10 + 288b8: 1827883a mov r19,r3 + 288bc: 003fe906 br 28864 <_gp+0xfffec32c> + +000288c0 <__hi0bits>: + 288c0: 20bfffec andhi r2,r4,65535 + 288c4: 1000141e bne r2,zero,28918 <__hi0bits+0x58> + 288c8: 2008943a slli r4,r4,16 + 288cc: 00800404 movi r2,16 + 288d0: 20ffc02c andhi r3,r4,65280 + 288d4: 1800021e bne r3,zero,288e0 <__hi0bits+0x20> + 288d8: 2008923a slli r4,r4,8 + 288dc: 10800204 addi r2,r2,8 + 288e0: 20fc002c andhi r3,r4,61440 + 288e4: 1800021e bne r3,zero,288f0 <__hi0bits+0x30> + 288e8: 2008913a slli r4,r4,4 + 288ec: 10800104 addi r2,r2,4 + 288f0: 20f0002c andhi r3,r4,49152 + 288f4: 1800031e bne r3,zero,28904 <__hi0bits+0x44> + 288f8: 2109883a add r4,r4,r4 + 288fc: 10800084 addi r2,r2,2 + 28900: 2109883a add r4,r4,r4 + 28904: 20000316 blt r4,zero,28914 <__hi0bits+0x54> + 28908: 2110002c andhi r4,r4,16384 + 2890c: 2000041e bne r4,zero,28920 <__hi0bits+0x60> + 28910: 00800804 movi r2,32 + 28914: f800283a ret + 28918: 0005883a mov r2,zero + 2891c: 003fec06 br 288d0 <_gp+0xfffec398> + 28920: 10800044 addi r2,r2,1 + 28924: f800283a ret + +00028928 <__lo0bits>: + 28928: 20c00017 ldw r3,0(r4) + 2892c: 188001cc andi r2,r3,7 + 28930: 10000826 beq r2,zero,28954 <__lo0bits+0x2c> + 28934: 1880004c andi r2,r3,1 + 28938: 1000211e bne r2,zero,289c0 <__lo0bits+0x98> + 2893c: 1880008c andi r2,r3,2 + 28940: 1000211e bne r2,zero,289c8 <__lo0bits+0xa0> + 28944: 1806d0ba srli r3,r3,2 + 28948: 00800084 movi r2,2 + 2894c: 20c00015 stw r3,0(r4) + 28950: f800283a ret + 28954: 18bfffcc andi r2,r3,65535 + 28958: 10001326 beq r2,zero,289a8 <__lo0bits+0x80> + 2895c: 0005883a mov r2,zero + 28960: 19403fcc andi r5,r3,255 + 28964: 2800021e bne r5,zero,28970 <__lo0bits+0x48> + 28968: 1806d23a srli r3,r3,8 + 2896c: 10800204 addi r2,r2,8 + 28970: 194003cc andi r5,r3,15 + 28974: 2800021e bne r5,zero,28980 <__lo0bits+0x58> + 28978: 1806d13a srli r3,r3,4 + 2897c: 10800104 addi r2,r2,4 + 28980: 194000cc andi r5,r3,3 + 28984: 2800021e bne r5,zero,28990 <__lo0bits+0x68> + 28988: 1806d0ba srli r3,r3,2 + 2898c: 10800084 addi r2,r2,2 + 28990: 1940004c andi r5,r3,1 + 28994: 2800081e bne r5,zero,289b8 <__lo0bits+0x90> + 28998: 1806d07a srli r3,r3,1 + 2899c: 1800051e bne r3,zero,289b4 <__lo0bits+0x8c> + 289a0: 00800804 movi r2,32 + 289a4: f800283a ret + 289a8: 1806d43a srli r3,r3,16 + 289ac: 00800404 movi r2,16 + 289b0: 003feb06 br 28960 <_gp+0xfffec428> + 289b4: 10800044 addi r2,r2,1 + 289b8: 20c00015 stw r3,0(r4) + 289bc: f800283a ret + 289c0: 0005883a mov r2,zero + 289c4: f800283a ret + 289c8: 1806d07a srli r3,r3,1 + 289cc: 00800044 movi r2,1 + 289d0: 20c00015 stw r3,0(r4) + 289d4: f800283a ret + +000289d8 <__i2b>: + 289d8: defffd04 addi sp,sp,-12 + 289dc: dc000015 stw r16,0(sp) + 289e0: 04000044 movi r16,1 + 289e4: dc400115 stw r17,4(sp) + 289e8: 2823883a mov r17,r5 + 289ec: 800b883a mov r5,r16 + 289f0: dfc00215 stw ra,8(sp) + 289f4: 00285cc0 call 285cc <_Balloc> + 289f8: 14400515 stw r17,20(r2) + 289fc: 14000415 stw r16,16(r2) + 28a00: dfc00217 ldw ra,8(sp) + 28a04: dc400117 ldw r17,4(sp) + 28a08: dc000017 ldw r16,0(sp) + 28a0c: dec00304 addi sp,sp,12 + 28a10: f800283a ret + +00028a14 <__multiply>: + 28a14: defffa04 addi sp,sp,-24 + 28a18: dcc00315 stw r19,12(sp) + 28a1c: dc800215 stw r18,8(sp) + 28a20: 34c00417 ldw r19,16(r6) + 28a24: 2c800417 ldw r18,16(r5) + 28a28: dd000415 stw r20,16(sp) + 28a2c: dc400115 stw r17,4(sp) + 28a30: dfc00515 stw ra,20(sp) + 28a34: dc000015 stw r16,0(sp) + 28a38: 2829883a mov r20,r5 + 28a3c: 3023883a mov r17,r6 + 28a40: 94c0050e bge r18,r19,28a58 <__multiply+0x44> + 28a44: 9007883a mov r3,r18 + 28a48: 3029883a mov r20,r6 + 28a4c: 9825883a mov r18,r19 + 28a50: 2823883a mov r17,r5 + 28a54: 1827883a mov r19,r3 + 28a58: a0800217 ldw r2,8(r20) + 28a5c: 94e1883a add r16,r18,r19 + 28a60: a1400117 ldw r5,4(r20) + 28a64: 1400010e bge r2,r16,28a6c <__multiply+0x58> + 28a68: 29400044 addi r5,r5,1 + 28a6c: 00285cc0 call 285cc <_Balloc> + 28a70: 8415883a add r10,r16,r16 + 28a74: 12c00504 addi r11,r2,20 + 28a78: 5295883a add r10,r10,r10 + 28a7c: 5a95883a add r10,r11,r10 + 28a80: 5807883a mov r3,r11 + 28a84: 5a80032e bgeu r11,r10,28a94 <__multiply+0x80> + 28a88: 18000015 stw zero,0(r3) + 28a8c: 18c00104 addi r3,r3,4 + 28a90: 1abffd36 bltu r3,r10,28a88 <_gp+0xfffec550> + 28a94: 9ce7883a add r19,r19,r19 + 28a98: 94a5883a add r18,r18,r18 + 28a9c: 89800504 addi r6,r17,20 + 28aa0: 9ce7883a add r19,r19,r19 + 28aa4: a3400504 addi r13,r20,20 + 28aa8: 94a5883a add r18,r18,r18 + 28aac: 34d9883a add r12,r6,r19 + 28ab0: 6c93883a add r9,r13,r18 + 28ab4: 3300422e bgeu r6,r12,28bc0 <__multiply+0x1ac> + 28ab8: 37c00017 ldw ra,0(r6) + 28abc: fbffffcc andi r15,ra,65535 + 28ac0: 78001b26 beq r15,zero,28b30 <__multiply+0x11c> + 28ac4: 5811883a mov r8,r11 + 28ac8: 681d883a mov r14,r13 + 28acc: 000f883a mov r7,zero + 28ad0: 71000017 ldw r4,0(r14) + 28ad4: 40c00017 ldw r3,0(r8) + 28ad8: 73800104 addi r14,r14,4 + 28adc: 217fffcc andi r5,r4,65535 + 28ae0: 2bcb383a mul r5,r5,r15 + 28ae4: 2008d43a srli r4,r4,16 + 28ae8: 1c7fffcc andi r17,r3,65535 + 28aec: 2c4b883a add r5,r5,r17 + 28af0: 29cb883a add r5,r5,r7 + 28af4: 23c9383a mul r4,r4,r15 + 28af8: 1806d43a srli r3,r3,16 + 28afc: 280ed43a srli r7,r5,16 + 28b00: 297fffcc andi r5,r5,65535 + 28b04: 20c7883a add r3,r4,r3 + 28b08: 19c7883a add r3,r3,r7 + 28b0c: 1808943a slli r4,r3,16 + 28b10: 4023883a mov r17,r8 + 28b14: 180ed43a srli r7,r3,16 + 28b18: 214ab03a or r5,r4,r5 + 28b1c: 41400015 stw r5,0(r8) + 28b20: 42000104 addi r8,r8,4 + 28b24: 727fea36 bltu r14,r9,28ad0 <_gp+0xfffec598> + 28b28: 89c00115 stw r7,4(r17) + 28b2c: 37c00017 ldw ra,0(r6) + 28b30: f83ed43a srli ra,ra,16 + 28b34: f8001f26 beq ra,zero,28bb4 <__multiply+0x1a0> + 28b38: 58c00017 ldw r3,0(r11) + 28b3c: 681d883a mov r14,r13 + 28b40: 581f883a mov r15,r11 + 28b44: 1811883a mov r8,r3 + 28b48: 5825883a mov r18,r11 + 28b4c: 000f883a mov r7,zero + 28b50: 00000106 br 28b58 <__multiply+0x144> + 28b54: 8825883a mov r18,r17 + 28b58: 7140000b ldhu r5,0(r14) + 28b5c: 4010d43a srli r8,r8,16 + 28b60: 193fffcc andi r4,r3,65535 + 28b64: 2fcb383a mul r5,r5,ra + 28b68: 7bc00104 addi r15,r15,4 + 28b6c: 73800104 addi r14,r14,4 + 28b70: 2a0b883a add r5,r5,r8 + 28b74: 29cb883a add r5,r5,r7 + 28b78: 2806943a slli r3,r5,16 + 28b7c: 94400104 addi r17,r18,4 + 28b80: 280ad43a srli r5,r5,16 + 28b84: 1908b03a or r4,r3,r4 + 28b88: 793fff15 stw r4,-4(r15) + 28b8c: 70ffff17 ldw r3,-4(r14) + 28b90: 8a000017 ldw r8,0(r17) + 28b94: 1806d43a srli r3,r3,16 + 28b98: 413fffcc andi r4,r8,65535 + 28b9c: 1fc7383a mul r3,r3,ra + 28ba0: 1907883a add r3,r3,r4 + 28ba4: 1947883a add r3,r3,r5 + 28ba8: 180ed43a srli r7,r3,16 + 28bac: 727fe936 bltu r14,r9,28b54 <_gp+0xfffec61c> + 28bb0: 90c00115 stw r3,4(r18) + 28bb4: 31800104 addi r6,r6,4 + 28bb8: 5ac00104 addi r11,r11,4 + 28bbc: 333fbe36 bltu r6,r12,28ab8 <_gp+0xfffec580> + 28bc0: 0400090e bge zero,r16,28be8 <__multiply+0x1d4> + 28bc4: 50ffff17 ldw r3,-4(r10) + 28bc8: 52bfff04 addi r10,r10,-4 + 28bcc: 18000326 beq r3,zero,28bdc <__multiply+0x1c8> + 28bd0: 00000506 br 28be8 <__multiply+0x1d4> + 28bd4: 50c00017 ldw r3,0(r10) + 28bd8: 1800031e bne r3,zero,28be8 <__multiply+0x1d4> + 28bdc: 843fffc4 addi r16,r16,-1 + 28be0: 52bfff04 addi r10,r10,-4 + 28be4: 803ffb1e bne r16,zero,28bd4 <_gp+0xfffec69c> + 28be8: 14000415 stw r16,16(r2) + 28bec: dfc00517 ldw ra,20(sp) + 28bf0: dd000417 ldw r20,16(sp) + 28bf4: dcc00317 ldw r19,12(sp) + 28bf8: dc800217 ldw r18,8(sp) + 28bfc: dc400117 ldw r17,4(sp) + 28c00: dc000017 ldw r16,0(sp) + 28c04: dec00604 addi sp,sp,24 + 28c08: f800283a ret + +00028c0c <__pow5mult>: + 28c0c: defffa04 addi sp,sp,-24 + 28c10: dcc00315 stw r19,12(sp) + 28c14: dc000015 stw r16,0(sp) + 28c18: dfc00515 stw ra,20(sp) + 28c1c: dd000415 stw r20,16(sp) + 28c20: dc800215 stw r18,8(sp) + 28c24: dc400115 stw r17,4(sp) + 28c28: 308000cc andi r2,r6,3 + 28c2c: 3021883a mov r16,r6 + 28c30: 2027883a mov r19,r4 + 28c34: 10002f1e bne r2,zero,28cf4 <__pow5mult+0xe8> + 28c38: 2825883a mov r18,r5 + 28c3c: 8021d0ba srai r16,r16,2 + 28c40: 80001a26 beq r16,zero,28cac <__pow5mult+0xa0> + 28c44: 9c401217 ldw r17,72(r19) + 28c48: 8800061e bne r17,zero,28c64 <__pow5mult+0x58> + 28c4c: 00003406 br 28d20 <__pow5mult+0x114> + 28c50: 8021d07a srai r16,r16,1 + 28c54: 80001526 beq r16,zero,28cac <__pow5mult+0xa0> + 28c58: 88800017 ldw r2,0(r17) + 28c5c: 10001c26 beq r2,zero,28cd0 <__pow5mult+0xc4> + 28c60: 1023883a mov r17,r2 + 28c64: 8080004c andi r2,r16,1 + 28c68: 103ff926 beq r2,zero,28c50 <_gp+0xfffec718> + 28c6c: 880d883a mov r6,r17 + 28c70: 900b883a mov r5,r18 + 28c74: 9809883a mov r4,r19 + 28c78: 0028a140 call 28a14 <__multiply> + 28c7c: 90001b26 beq r18,zero,28cec <__pow5mult+0xe0> + 28c80: 91000117 ldw r4,4(r18) + 28c84: 98c01317 ldw r3,76(r19) + 28c88: 8021d07a srai r16,r16,1 + 28c8c: 2109883a add r4,r4,r4 + 28c90: 2109883a add r4,r4,r4 + 28c94: 1907883a add r3,r3,r4 + 28c98: 19000017 ldw r4,0(r3) + 28c9c: 91000015 stw r4,0(r18) + 28ca0: 1c800015 stw r18,0(r3) + 28ca4: 1025883a mov r18,r2 + 28ca8: 803feb1e bne r16,zero,28c58 <_gp+0xfffec720> + 28cac: 9005883a mov r2,r18 + 28cb0: dfc00517 ldw ra,20(sp) + 28cb4: dd000417 ldw r20,16(sp) + 28cb8: dcc00317 ldw r19,12(sp) + 28cbc: dc800217 ldw r18,8(sp) + 28cc0: dc400117 ldw r17,4(sp) + 28cc4: dc000017 ldw r16,0(sp) + 28cc8: dec00604 addi sp,sp,24 + 28ccc: f800283a ret + 28cd0: 880d883a mov r6,r17 + 28cd4: 880b883a mov r5,r17 + 28cd8: 9809883a mov r4,r19 + 28cdc: 0028a140 call 28a14 <__multiply> + 28ce0: 88800015 stw r2,0(r17) + 28ce4: 10000015 stw zero,0(r2) + 28ce8: 003fdd06 br 28c60 <_gp+0xfffec728> + 28cec: 1025883a mov r18,r2 + 28cf0: 003fd706 br 28c50 <_gp+0xfffec718> + 28cf4: 10bfffc4 addi r2,r2,-1 + 28cf8: 1085883a add r2,r2,r2 + 28cfc: 00c000f4 movhi r3,3 + 28d00: 18c81d04 addi r3,r3,8308 + 28d04: 1085883a add r2,r2,r2 + 28d08: 1885883a add r2,r3,r2 + 28d0c: 11800017 ldw r6,0(r2) + 28d10: 000f883a mov r7,zero + 28d14: 002869c0 call 2869c <__multadd> + 28d18: 1025883a mov r18,r2 + 28d1c: 003fc706 br 28c3c <_gp+0xfffec704> + 28d20: 05000044 movi r20,1 + 28d24: a00b883a mov r5,r20 + 28d28: 9809883a mov r4,r19 + 28d2c: 00285cc0 call 285cc <_Balloc> + 28d30: 1023883a mov r17,r2 + 28d34: 00809c44 movi r2,625 + 28d38: 88800515 stw r2,20(r17) + 28d3c: 8d000415 stw r20,16(r17) + 28d40: 9c401215 stw r17,72(r19) + 28d44: 88000015 stw zero,0(r17) + 28d48: 003fc606 br 28c64 <_gp+0xfffec72c> + +00028d4c <__lshift>: + 28d4c: defff904 addi sp,sp,-28 + 28d50: dd400515 stw r21,20(sp) + 28d54: dcc00315 stw r19,12(sp) + 28d58: 302bd17a srai r21,r6,5 + 28d5c: 2cc00417 ldw r19,16(r5) + 28d60: 28800217 ldw r2,8(r5) + 28d64: dd000415 stw r20,16(sp) + 28d68: ace7883a add r19,r21,r19 + 28d6c: dc800215 stw r18,8(sp) + 28d70: dc400115 stw r17,4(sp) + 28d74: dc000015 stw r16,0(sp) + 28d78: dfc00615 stw ra,24(sp) + 28d7c: 9c000044 addi r16,r19,1 + 28d80: 2823883a mov r17,r5 + 28d84: 3029883a mov r20,r6 + 28d88: 2025883a mov r18,r4 + 28d8c: 29400117 ldw r5,4(r5) + 28d90: 1400030e bge r2,r16,28da0 <__lshift+0x54> + 28d94: 1085883a add r2,r2,r2 + 28d98: 29400044 addi r5,r5,1 + 28d9c: 143ffd16 blt r2,r16,28d94 <_gp+0xfffec85c> + 28da0: 9009883a mov r4,r18 + 28da4: 00285cc0 call 285cc <_Balloc> + 28da8: 10c00504 addi r3,r2,20 + 28dac: 0540070e bge zero,r21,28dcc <__lshift+0x80> + 28db0: ad6b883a add r21,r21,r21 + 28db4: ad6b883a add r21,r21,r21 + 28db8: 1809883a mov r4,r3 + 28dbc: 1d47883a add r3,r3,r21 + 28dc0: 20000015 stw zero,0(r4) + 28dc4: 21000104 addi r4,r4,4 + 28dc8: 193ffd1e bne r3,r4,28dc0 <_gp+0xfffec888> + 28dcc: 8a000417 ldw r8,16(r17) + 28dd0: 89000504 addi r4,r17,20 + 28dd4: a18007cc andi r6,r20,31 + 28dd8: 4211883a add r8,r8,r8 + 28ddc: 4211883a add r8,r8,r8 + 28de0: 2211883a add r8,r4,r8 + 28de4: 30002326 beq r6,zero,28e74 <__lshift+0x128> + 28de8: 02400804 movi r9,32 + 28dec: 4993c83a sub r9,r9,r6 + 28df0: 000b883a mov r5,zero + 28df4: 21c00017 ldw r7,0(r4) + 28df8: 1815883a mov r10,r3 + 28dfc: 18c00104 addi r3,r3,4 + 28e00: 398e983a sll r7,r7,r6 + 28e04: 21000104 addi r4,r4,4 + 28e08: 394ab03a or r5,r7,r5 + 28e0c: 197fff15 stw r5,-4(r3) + 28e10: 217fff17 ldw r5,-4(r4) + 28e14: 2a4ad83a srl r5,r5,r9 + 28e18: 223ff636 bltu r4,r8,28df4 <_gp+0xfffec8bc> + 28e1c: 51400115 stw r5,4(r10) + 28e20: 28001a1e bne r5,zero,28e8c <__lshift+0x140> + 28e24: 843fffc4 addi r16,r16,-1 + 28e28: 14000415 stw r16,16(r2) + 28e2c: 88000826 beq r17,zero,28e50 <__lshift+0x104> + 28e30: 89000117 ldw r4,4(r17) + 28e34: 90c01317 ldw r3,76(r18) + 28e38: 2109883a add r4,r4,r4 + 28e3c: 2109883a add r4,r4,r4 + 28e40: 1907883a add r3,r3,r4 + 28e44: 19000017 ldw r4,0(r3) + 28e48: 89000015 stw r4,0(r17) + 28e4c: 1c400015 stw r17,0(r3) + 28e50: dfc00617 ldw ra,24(sp) + 28e54: dd400517 ldw r21,20(sp) + 28e58: dd000417 ldw r20,16(sp) + 28e5c: dcc00317 ldw r19,12(sp) + 28e60: dc800217 ldw r18,8(sp) + 28e64: dc400117 ldw r17,4(sp) + 28e68: dc000017 ldw r16,0(sp) + 28e6c: dec00704 addi sp,sp,28 + 28e70: f800283a ret + 28e74: 21400017 ldw r5,0(r4) + 28e78: 18c00104 addi r3,r3,4 + 28e7c: 21000104 addi r4,r4,4 + 28e80: 197fff15 stw r5,-4(r3) + 28e84: 223ffb36 bltu r4,r8,28e74 <_gp+0xfffec93c> + 28e88: 003fe606 br 28e24 <_gp+0xfffec8ec> + 28e8c: 9c000084 addi r16,r19,2 + 28e90: 003fe406 br 28e24 <_gp+0xfffec8ec> + +00028e94 <__mcmp>: + 28e94: 20800417 ldw r2,16(r4) + 28e98: 28c00417 ldw r3,16(r5) + 28e9c: 10c5c83a sub r2,r2,r3 + 28ea0: 1000111e bne r2,zero,28ee8 <__mcmp+0x54> + 28ea4: 18c7883a add r3,r3,r3 + 28ea8: 18c7883a add r3,r3,r3 + 28eac: 21000504 addi r4,r4,20 + 28eb0: 29400504 addi r5,r5,20 + 28eb4: 20c5883a add r2,r4,r3 + 28eb8: 28cb883a add r5,r5,r3 + 28ebc: 00000106 br 28ec4 <__mcmp+0x30> + 28ec0: 20800a2e bgeu r4,r2,28eec <__mcmp+0x58> + 28ec4: 10bfff04 addi r2,r2,-4 + 28ec8: 297fff04 addi r5,r5,-4 + 28ecc: 11800017 ldw r6,0(r2) + 28ed0: 28c00017 ldw r3,0(r5) + 28ed4: 30fffa26 beq r6,r3,28ec0 <_gp+0xfffec988> + 28ed8: 30c00236 bltu r6,r3,28ee4 <__mcmp+0x50> + 28edc: 00800044 movi r2,1 + 28ee0: f800283a ret + 28ee4: 00bfffc4 movi r2,-1 + 28ee8: f800283a ret + 28eec: 0005883a mov r2,zero + 28ef0: f800283a ret + +00028ef4 <__mdiff>: + 28ef4: 28c00417 ldw r3,16(r5) + 28ef8: 30800417 ldw r2,16(r6) + 28efc: defffa04 addi sp,sp,-24 + 28f00: dcc00315 stw r19,12(sp) + 28f04: dc800215 stw r18,8(sp) + 28f08: dfc00515 stw ra,20(sp) + 28f0c: dd000415 stw r20,16(sp) + 28f10: dc400115 stw r17,4(sp) + 28f14: dc000015 stw r16,0(sp) + 28f18: 1887c83a sub r3,r3,r2 + 28f1c: 2825883a mov r18,r5 + 28f20: 3027883a mov r19,r6 + 28f24: 1800141e bne r3,zero,28f78 <__mdiff+0x84> + 28f28: 1085883a add r2,r2,r2 + 28f2c: 1085883a add r2,r2,r2 + 28f30: 2a000504 addi r8,r5,20 + 28f34: 34000504 addi r16,r6,20 + 28f38: 4087883a add r3,r8,r2 + 28f3c: 8085883a add r2,r16,r2 + 28f40: 00000106 br 28f48 <__mdiff+0x54> + 28f44: 40c0592e bgeu r8,r3,290ac <__mdiff+0x1b8> + 28f48: 18ffff04 addi r3,r3,-4 + 28f4c: 10bfff04 addi r2,r2,-4 + 28f50: 19c00017 ldw r7,0(r3) + 28f54: 11400017 ldw r5,0(r2) + 28f58: 397ffa26 beq r7,r5,28f44 <_gp+0xfffeca0c> + 28f5c: 3940592e bgeu r7,r5,290c4 <__mdiff+0x1d0> + 28f60: 9005883a mov r2,r18 + 28f64: 4023883a mov r17,r8 + 28f68: 9825883a mov r18,r19 + 28f6c: 05000044 movi r20,1 + 28f70: 1027883a mov r19,r2 + 28f74: 00000406 br 28f88 <__mdiff+0x94> + 28f78: 18005616 blt r3,zero,290d4 <__mdiff+0x1e0> + 28f7c: 34400504 addi r17,r6,20 + 28f80: 2c000504 addi r16,r5,20 + 28f84: 0029883a mov r20,zero + 28f88: 91400117 ldw r5,4(r18) + 28f8c: 00285cc0 call 285cc <_Balloc> + 28f90: 92400417 ldw r9,16(r18) + 28f94: 9b000417 ldw r12,16(r19) + 28f98: 12c00504 addi r11,r2,20 + 28f9c: 4a51883a add r8,r9,r9 + 28fa0: 6319883a add r12,r12,r12 + 28fa4: 4211883a add r8,r8,r8 + 28fa8: 6319883a add r12,r12,r12 + 28fac: 15000315 stw r20,12(r2) + 28fb0: 8211883a add r8,r16,r8 + 28fb4: 8b19883a add r12,r17,r12 + 28fb8: 0007883a mov r3,zero + 28fbc: 81400017 ldw r5,0(r16) + 28fc0: 89c00017 ldw r7,0(r17) + 28fc4: 59800104 addi r6,r11,4 + 28fc8: 293fffcc andi r4,r5,65535 + 28fcc: 20c7883a add r3,r4,r3 + 28fd0: 393fffcc andi r4,r7,65535 + 28fd4: 1909c83a sub r4,r3,r4 + 28fd8: 280ad43a srli r5,r5,16 + 28fdc: 380ed43a srli r7,r7,16 + 28fe0: 2007d43a srai r3,r4,16 + 28fe4: 213fffcc andi r4,r4,65535 + 28fe8: 29cbc83a sub r5,r5,r7 + 28fec: 28c7883a add r3,r5,r3 + 28ff0: 180a943a slli r5,r3,16 + 28ff4: 8c400104 addi r17,r17,4 + 28ff8: 84000104 addi r16,r16,4 + 28ffc: 2908b03a or r4,r5,r4 + 29000: 59000015 stw r4,0(r11) + 29004: 1807d43a srai r3,r3,16 + 29008: 3015883a mov r10,r6 + 2900c: 3017883a mov r11,r6 + 29010: 8b3fea36 bltu r17,r12,28fbc <_gp+0xfffeca84> + 29014: 8200162e bgeu r16,r8,29070 <__mdiff+0x17c> + 29018: 8017883a mov r11,r16 + 2901c: 59400017 ldw r5,0(r11) + 29020: 31800104 addi r6,r6,4 + 29024: 5ac00104 addi r11,r11,4 + 29028: 293fffcc andi r4,r5,65535 + 2902c: 20c7883a add r3,r4,r3 + 29030: 280ed43a srli r7,r5,16 + 29034: 180bd43a srai r5,r3,16 + 29038: 193fffcc andi r4,r3,65535 + 2903c: 3947883a add r3,r7,r5 + 29040: 180a943a slli r5,r3,16 + 29044: 1807d43a srai r3,r3,16 + 29048: 2908b03a or r4,r5,r4 + 2904c: 313fff15 stw r4,-4(r6) + 29050: 5a3ff236 bltu r11,r8,2901c <_gp+0xfffecae4> + 29054: 0406303a nor r3,zero,r16 + 29058: 1a07883a add r3,r3,r8 + 2905c: 1806d0ba srli r3,r3,2 + 29060: 18c00044 addi r3,r3,1 + 29064: 18c7883a add r3,r3,r3 + 29068: 18c7883a add r3,r3,r3 + 2906c: 50d5883a add r10,r10,r3 + 29070: 50ffff04 addi r3,r10,-4 + 29074: 2000041e bne r4,zero,29088 <__mdiff+0x194> + 29078: 18ffff04 addi r3,r3,-4 + 2907c: 19000017 ldw r4,0(r3) + 29080: 4a7fffc4 addi r9,r9,-1 + 29084: 203ffc26 beq r4,zero,29078 <_gp+0xfffecb40> + 29088: 12400415 stw r9,16(r2) + 2908c: dfc00517 ldw ra,20(sp) + 29090: dd000417 ldw r20,16(sp) + 29094: dcc00317 ldw r19,12(sp) + 29098: dc800217 ldw r18,8(sp) + 2909c: dc400117 ldw r17,4(sp) + 290a0: dc000017 ldw r16,0(sp) + 290a4: dec00604 addi sp,sp,24 + 290a8: f800283a ret + 290ac: 000b883a mov r5,zero + 290b0: 00285cc0 call 285cc <_Balloc> + 290b4: 00c00044 movi r3,1 + 290b8: 10c00415 stw r3,16(r2) + 290bc: 10000515 stw zero,20(r2) + 290c0: 003ff206 br 2908c <_gp+0xfffecb54> + 290c4: 8023883a mov r17,r16 + 290c8: 0029883a mov r20,zero + 290cc: 4021883a mov r16,r8 + 290d0: 003fad06 br 28f88 <_gp+0xfffeca50> + 290d4: 9005883a mov r2,r18 + 290d8: 94400504 addi r17,r18,20 + 290dc: 9c000504 addi r16,r19,20 + 290e0: 9825883a mov r18,r19 + 290e4: 05000044 movi r20,1 + 290e8: 1027883a mov r19,r2 + 290ec: 003fa606 br 28f88 <_gp+0xfffeca50> + +000290f0 <__ulp>: + 290f0: 295ffc2c andhi r5,r5,32752 + 290f4: 00bf3034 movhi r2,64704 + 290f8: 2887883a add r3,r5,r2 + 290fc: 00c0020e bge zero,r3,29108 <__ulp+0x18> + 29100: 0005883a mov r2,zero + 29104: f800283a ret + 29108: 00c7c83a sub r3,zero,r3 + 2910c: 1807d53a srai r3,r3,20 + 29110: 008004c4 movi r2,19 + 29114: 10c00b0e bge r2,r3,29144 <__ulp+0x54> + 29118: 18bffb04 addi r2,r3,-20 + 2911c: 01000784 movi r4,30 + 29120: 0007883a mov r3,zero + 29124: 20800516 blt r4,r2,2913c <__ulp+0x4c> + 29128: 010007c4 movi r4,31 + 2912c: 2089c83a sub r4,r4,r2 + 29130: 00800044 movi r2,1 + 29134: 1104983a sll r2,r2,r4 + 29138: f800283a ret + 2913c: 00800044 movi r2,1 + 29140: f800283a ret + 29144: 01400234 movhi r5,8 + 29148: 28c7d83a sra r3,r5,r3 + 2914c: 0005883a mov r2,zero + 29150: f800283a ret + +00029154 <__b2d>: + 29154: defffa04 addi sp,sp,-24 + 29158: dc000015 stw r16,0(sp) + 2915c: 24000417 ldw r16,16(r4) + 29160: dc400115 stw r17,4(sp) + 29164: 24400504 addi r17,r4,20 + 29168: 8421883a add r16,r16,r16 + 2916c: 8421883a add r16,r16,r16 + 29170: 8c21883a add r16,r17,r16 + 29174: dc800215 stw r18,8(sp) + 29178: 84bfff17 ldw r18,-4(r16) + 2917c: dd000415 stw r20,16(sp) + 29180: dcc00315 stw r19,12(sp) + 29184: 9009883a mov r4,r18 + 29188: 2829883a mov r20,r5 + 2918c: dfc00515 stw ra,20(sp) + 29190: 00288c00 call 288c0 <__hi0bits> + 29194: 00c00804 movi r3,32 + 29198: 1889c83a sub r4,r3,r2 + 2919c: a1000015 stw r4,0(r20) + 291a0: 01000284 movi r4,10 + 291a4: 84ffff04 addi r19,r16,-4 + 291a8: 20801216 blt r4,r2,291f4 <__b2d+0xa0> + 291ac: 018002c4 movi r6,11 + 291b0: 308dc83a sub r6,r6,r2 + 291b4: 9186d83a srl r3,r18,r6 + 291b8: 18cffc34 orhi r3,r3,16368 + 291bc: 8cc0212e bgeu r17,r19,29244 <__b2d+0xf0> + 291c0: 813ffe17 ldw r4,-8(r16) + 291c4: 218cd83a srl r6,r4,r6 + 291c8: 10800544 addi r2,r2,21 + 291cc: 9084983a sll r2,r18,r2 + 291d0: 1184b03a or r2,r2,r6 + 291d4: dfc00517 ldw ra,20(sp) + 291d8: dd000417 ldw r20,16(sp) + 291dc: dcc00317 ldw r19,12(sp) + 291e0: dc800217 ldw r18,8(sp) + 291e4: dc400117 ldw r17,4(sp) + 291e8: dc000017 ldw r16,0(sp) + 291ec: dec00604 addi sp,sp,24 + 291f0: f800283a ret + 291f4: 8cc00f2e bgeu r17,r19,29234 <__b2d+0xe0> + 291f8: 117ffd44 addi r5,r2,-11 + 291fc: 80bffe17 ldw r2,-8(r16) + 29200: 28000e26 beq r5,zero,2923c <__b2d+0xe8> + 29204: 1949c83a sub r4,r3,r5 + 29208: 9164983a sll r18,r18,r5 + 2920c: 1106d83a srl r3,r2,r4 + 29210: 81bffe04 addi r6,r16,-8 + 29214: 948ffc34 orhi r18,r18,16368 + 29218: 90c6b03a or r3,r18,r3 + 2921c: 89800e2e bgeu r17,r6,29258 <__b2d+0x104> + 29220: 81bffd17 ldw r6,-12(r16) + 29224: 1144983a sll r2,r2,r5 + 29228: 310ad83a srl r5,r6,r4 + 2922c: 2884b03a or r2,r5,r2 + 29230: 003fe806 br 291d4 <_gp+0xfffecc9c> + 29234: 10bffd44 addi r2,r2,-11 + 29238: 1000041e bne r2,zero,2924c <__b2d+0xf8> + 2923c: 90cffc34 orhi r3,r18,16368 + 29240: 003fe406 br 291d4 <_gp+0xfffecc9c> + 29244: 000d883a mov r6,zero + 29248: 003fdf06 br 291c8 <_gp+0xfffecc90> + 2924c: 90a4983a sll r18,r18,r2 + 29250: 0005883a mov r2,zero + 29254: 003ff906 br 2923c <_gp+0xfffecd04> + 29258: 1144983a sll r2,r2,r5 + 2925c: 003fdd06 br 291d4 <_gp+0xfffecc9c> + +00029260 <__d2b>: + 29260: defff804 addi sp,sp,-32 + 29264: dc000215 stw r16,8(sp) + 29268: 3021883a mov r16,r6 + 2926c: dc400315 stw r17,12(sp) + 29270: 8022907a slli r17,r16,1 + 29274: dd000615 stw r20,24(sp) + 29278: 2829883a mov r20,r5 + 2927c: 01400044 movi r5,1 + 29280: dcc00515 stw r19,20(sp) + 29284: dc800415 stw r18,16(sp) + 29288: dfc00715 stw ra,28(sp) + 2928c: 3825883a mov r18,r7 + 29290: 8822d57a srli r17,r17,21 + 29294: 00285cc0 call 285cc <_Balloc> + 29298: 1027883a mov r19,r2 + 2929c: 00800434 movhi r2,16 + 292a0: 10bfffc4 addi r2,r2,-1 + 292a4: 808c703a and r6,r16,r2 + 292a8: 88000126 beq r17,zero,292b0 <__d2b+0x50> + 292ac: 31800434 orhi r6,r6,16 + 292b0: d9800015 stw r6,0(sp) + 292b4: a0002426 beq r20,zero,29348 <__d2b+0xe8> + 292b8: d9000104 addi r4,sp,4 + 292bc: dd000115 stw r20,4(sp) + 292c0: 00289280 call 28928 <__lo0bits> + 292c4: d8c00017 ldw r3,0(sp) + 292c8: 10002f1e bne r2,zero,29388 <__d2b+0x128> + 292cc: d9000117 ldw r4,4(sp) + 292d0: 99000515 stw r4,20(r19) + 292d4: 1821003a cmpeq r16,r3,zero + 292d8: 01000084 movi r4,2 + 292dc: 2421c83a sub r16,r4,r16 + 292e0: 98c00615 stw r3,24(r19) + 292e4: 9c000415 stw r16,16(r19) + 292e8: 88001f1e bne r17,zero,29368 <__d2b+0x108> + 292ec: 10bef384 addi r2,r2,-1074 + 292f0: 90800015 stw r2,0(r18) + 292f4: 00900034 movhi r2,16384 + 292f8: 10bfffc4 addi r2,r2,-1 + 292fc: 8085883a add r2,r16,r2 + 29300: 1085883a add r2,r2,r2 + 29304: 1085883a add r2,r2,r2 + 29308: 9885883a add r2,r19,r2 + 2930c: 11000517 ldw r4,20(r2) + 29310: 8020917a slli r16,r16,5 + 29314: 00288c00 call 288c0 <__hi0bits> + 29318: d8c00817 ldw r3,32(sp) + 2931c: 8085c83a sub r2,r16,r2 + 29320: 18800015 stw r2,0(r3) + 29324: 9805883a mov r2,r19 + 29328: dfc00717 ldw ra,28(sp) + 2932c: dd000617 ldw r20,24(sp) + 29330: dcc00517 ldw r19,20(sp) + 29334: dc800417 ldw r18,16(sp) + 29338: dc400317 ldw r17,12(sp) + 2933c: dc000217 ldw r16,8(sp) + 29340: dec00804 addi sp,sp,32 + 29344: f800283a ret + 29348: d809883a mov r4,sp + 2934c: 00289280 call 28928 <__lo0bits> + 29350: d8c00017 ldw r3,0(sp) + 29354: 04000044 movi r16,1 + 29358: 9c000415 stw r16,16(r19) + 2935c: 98c00515 stw r3,20(r19) + 29360: 10800804 addi r2,r2,32 + 29364: 883fe126 beq r17,zero,292ec <_gp+0xfffecdb4> + 29368: 00c00d44 movi r3,53 + 2936c: 8c7ef344 addi r17,r17,-1075 + 29370: 88a3883a add r17,r17,r2 + 29374: 1885c83a sub r2,r3,r2 + 29378: d8c00817 ldw r3,32(sp) + 2937c: 94400015 stw r17,0(r18) + 29380: 18800015 stw r2,0(r3) + 29384: 003fe706 br 29324 <_gp+0xfffecdec> + 29388: 01000804 movi r4,32 + 2938c: 2089c83a sub r4,r4,r2 + 29390: 1908983a sll r4,r3,r4 + 29394: d9400117 ldw r5,4(sp) + 29398: 1886d83a srl r3,r3,r2 + 2939c: 2148b03a or r4,r4,r5 + 293a0: 99000515 stw r4,20(r19) + 293a4: d8c00015 stw r3,0(sp) + 293a8: 003fca06 br 292d4 <_gp+0xfffecd9c> + +000293ac <__ratio>: + 293ac: defff904 addi sp,sp,-28 + 293b0: dc400315 stw r17,12(sp) + 293b4: 2823883a mov r17,r5 + 293b8: d9400104 addi r5,sp,4 + 293bc: dfc00615 stw ra,24(sp) + 293c0: dcc00515 stw r19,20(sp) + 293c4: dc800415 stw r18,16(sp) + 293c8: 2027883a mov r19,r4 + 293cc: dc000215 stw r16,8(sp) + 293d0: 00291540 call 29154 <__b2d> + 293d4: d80b883a mov r5,sp + 293d8: 8809883a mov r4,r17 + 293dc: 1025883a mov r18,r2 + 293e0: 1821883a mov r16,r3 + 293e4: 00291540 call 29154 <__b2d> + 293e8: 8a000417 ldw r8,16(r17) + 293ec: 99000417 ldw r4,16(r19) + 293f0: d9400117 ldw r5,4(sp) + 293f4: 2209c83a sub r4,r4,r8 + 293f8: 2010917a slli r8,r4,5 + 293fc: d9000017 ldw r4,0(sp) + 29400: 2909c83a sub r4,r5,r4 + 29404: 4109883a add r4,r8,r4 + 29408: 01000e0e bge zero,r4,29444 <__ratio+0x98> + 2940c: 2008953a slli r4,r4,20 + 29410: 2421883a add r16,r4,r16 + 29414: 100d883a mov r6,r2 + 29418: 180f883a mov r7,r3 + 2941c: 9009883a mov r4,r18 + 29420: 800b883a mov r5,r16 + 29424: 002d1f80 call 2d1f8 <__divdf3> + 29428: dfc00617 ldw ra,24(sp) + 2942c: dcc00517 ldw r19,20(sp) + 29430: dc800417 ldw r18,16(sp) + 29434: dc400317 ldw r17,12(sp) + 29438: dc000217 ldw r16,8(sp) + 2943c: dec00704 addi sp,sp,28 + 29440: f800283a ret + 29444: 2008953a slli r4,r4,20 + 29448: 1907c83a sub r3,r3,r4 + 2944c: 003ff106 br 29414 <_gp+0xfffecedc> + +00029450 <_mprec_log10>: + 29450: defffe04 addi sp,sp,-8 + 29454: dc000015 stw r16,0(sp) + 29458: dfc00115 stw ra,4(sp) + 2945c: 008005c4 movi r2,23 + 29460: 2021883a mov r16,r4 + 29464: 11000d0e bge r2,r4,2949c <_mprec_log10+0x4c> + 29468: 0005883a mov r2,zero + 2946c: 00cffc34 movhi r3,16368 + 29470: 843fffc4 addi r16,r16,-1 + 29474: 000d883a mov r6,zero + 29478: 01d00934 movhi r7,16420 + 2947c: 1009883a mov r4,r2 + 29480: 180b883a mov r5,r3 + 29484: 002dd380 call 2dd38 <__muldf3> + 29488: 803ff91e bne r16,zero,29470 <_gp+0xfffecf38> + 2948c: dfc00117 ldw ra,4(sp) + 29490: dc000017 ldw r16,0(sp) + 29494: dec00204 addi sp,sp,8 + 29498: f800283a ret + 2949c: 202090fa slli r16,r4,3 + 294a0: 008000f4 movhi r2,3 + 294a4: 10883404 addi r2,r2,8400 + 294a8: 1421883a add r16,r2,r16 + 294ac: 80800017 ldw r2,0(r16) + 294b0: 80c00117 ldw r3,4(r16) + 294b4: dfc00117 ldw ra,4(sp) + 294b8: dc000017 ldw r16,0(sp) + 294bc: dec00204 addi sp,sp,8 + 294c0: f800283a ret + +000294c4 <__copybits>: + 294c4: 297fffc4 addi r5,r5,-1 + 294c8: 280fd17a srai r7,r5,5 + 294cc: 30c00417 ldw r3,16(r6) + 294d0: 30800504 addi r2,r6,20 + 294d4: 39c00044 addi r7,r7,1 + 294d8: 18c7883a add r3,r3,r3 + 294dc: 39cf883a add r7,r7,r7 + 294e0: 18c7883a add r3,r3,r3 + 294e4: 39cf883a add r7,r7,r7 + 294e8: 10c7883a add r3,r2,r3 + 294ec: 21cf883a add r7,r4,r7 + 294f0: 10c00d2e bgeu r2,r3,29528 <__copybits+0x64> + 294f4: 200b883a mov r5,r4 + 294f8: 12000017 ldw r8,0(r2) + 294fc: 29400104 addi r5,r5,4 + 29500: 10800104 addi r2,r2,4 + 29504: 2a3fff15 stw r8,-4(r5) + 29508: 10fffb36 bltu r2,r3,294f8 <_gp+0xfffecfc0> + 2950c: 1985c83a sub r2,r3,r6 + 29510: 10bffac4 addi r2,r2,-21 + 29514: 1004d0ba srli r2,r2,2 + 29518: 10800044 addi r2,r2,1 + 2951c: 1085883a add r2,r2,r2 + 29520: 1085883a add r2,r2,r2 + 29524: 2089883a add r4,r4,r2 + 29528: 21c0032e bgeu r4,r7,29538 <__copybits+0x74> + 2952c: 20000015 stw zero,0(r4) + 29530: 21000104 addi r4,r4,4 + 29534: 21fffd36 bltu r4,r7,2952c <_gp+0xfffecff4> + 29538: f800283a ret + +0002953c <__any_on>: + 2953c: 20c00417 ldw r3,16(r4) + 29540: 2805d17a srai r2,r5,5 + 29544: 21000504 addi r4,r4,20 + 29548: 18800d0e bge r3,r2,29580 <__any_on+0x44> + 2954c: 18c7883a add r3,r3,r3 + 29550: 18c7883a add r3,r3,r3 + 29554: 20c7883a add r3,r4,r3 + 29558: 20c0192e bgeu r4,r3,295c0 <__any_on+0x84> + 2955c: 18bfff17 ldw r2,-4(r3) + 29560: 18ffff04 addi r3,r3,-4 + 29564: 1000041e bne r2,zero,29578 <__any_on+0x3c> + 29568: 20c0142e bgeu r4,r3,295bc <__any_on+0x80> + 2956c: 18ffff04 addi r3,r3,-4 + 29570: 19400017 ldw r5,0(r3) + 29574: 283ffc26 beq r5,zero,29568 <_gp+0xfffed030> + 29578: 00800044 movi r2,1 + 2957c: f800283a ret + 29580: 10c00a0e bge r2,r3,295ac <__any_on+0x70> + 29584: 1085883a add r2,r2,r2 + 29588: 1085883a add r2,r2,r2 + 2958c: 294007cc andi r5,r5,31 + 29590: 2087883a add r3,r4,r2 + 29594: 283ff026 beq r5,zero,29558 <_gp+0xfffed020> + 29598: 19800017 ldw r6,0(r3) + 2959c: 3144d83a srl r2,r6,r5 + 295a0: 114a983a sll r5,r2,r5 + 295a4: 317ff41e bne r6,r5,29578 <_gp+0xfffed040> + 295a8: 003feb06 br 29558 <_gp+0xfffed020> + 295ac: 1085883a add r2,r2,r2 + 295b0: 1085883a add r2,r2,r2 + 295b4: 2087883a add r3,r4,r2 + 295b8: 003fe706 br 29558 <_gp+0xfffed020> + 295bc: f800283a ret + 295c0: 0005883a mov r2,zero + 295c4: f800283a ret + +000295c8 <_putc_r>: + 295c8: defffc04 addi sp,sp,-16 + 295cc: dc000215 stw r16,8(sp) + 295d0: dfc00315 stw ra,12(sp) + 295d4: 2021883a mov r16,r4 + 295d8: 20000226 beq r4,zero,295e4 <_putc_r+0x1c> + 295dc: 20800e17 ldw r2,56(r4) + 295e0: 10001b26 beq r2,zero,29650 <_putc_r+0x88> + 295e4: 30800217 ldw r2,8(r6) + 295e8: 10bfffc4 addi r2,r2,-1 + 295ec: 30800215 stw r2,8(r6) + 295f0: 10000a16 blt r2,zero,2961c <_putc_r+0x54> + 295f4: 30800017 ldw r2,0(r6) + 295f8: 11400005 stb r5,0(r2) + 295fc: 30800017 ldw r2,0(r6) + 29600: 10c00044 addi r3,r2,1 + 29604: 30c00015 stw r3,0(r6) + 29608: 10800003 ldbu r2,0(r2) + 2960c: dfc00317 ldw ra,12(sp) + 29610: dc000217 ldw r16,8(sp) + 29614: dec00404 addi sp,sp,16 + 29618: f800283a ret + 2961c: 30c00617 ldw r3,24(r6) + 29620: 10c00616 blt r2,r3,2963c <_putc_r+0x74> + 29624: 30800017 ldw r2,0(r6) + 29628: 00c00284 movi r3,10 + 2962c: 11400005 stb r5,0(r2) + 29630: 30800017 ldw r2,0(r6) + 29634: 11400003 ldbu r5,0(r2) + 29638: 28fff11e bne r5,r3,29600 <_gp+0xfffed0c8> + 2963c: 8009883a mov r4,r16 + 29640: dfc00317 ldw ra,12(sp) + 29644: dc000217 ldw r16,8(sp) + 29648: dec00404 addi sp,sp,16 + 2964c: 002b5681 jmpi 2b568 <__swbuf_r> + 29650: d9400015 stw r5,0(sp) + 29654: d9800115 stw r6,4(sp) + 29658: 00274e40 call 274e4 <__sinit> + 2965c: d9800117 ldw r6,4(sp) + 29660: d9400017 ldw r5,0(sp) + 29664: 003fdf06 br 295e4 <_gp+0xfffed0ac> + +00029668 : + 29668: 008000f4 movhi r2,3 + 2966c: defffc04 addi sp,sp,-16 + 29670: 10915404 addi r2,r2,17744 + 29674: dc000115 stw r16,4(sp) + 29678: 14000017 ldw r16,0(r2) + 2967c: dc400215 stw r17,8(sp) + 29680: dfc00315 stw ra,12(sp) + 29684: 2023883a mov r17,r4 + 29688: 80000226 beq r16,zero,29694 + 2968c: 80800e17 ldw r2,56(r16) + 29690: 10001a26 beq r2,zero,296fc + 29694: 28800217 ldw r2,8(r5) + 29698: 10bfffc4 addi r2,r2,-1 + 2969c: 28800215 stw r2,8(r5) + 296a0: 10000b16 blt r2,zero,296d0 + 296a4: 28800017 ldw r2,0(r5) + 296a8: 14400005 stb r17,0(r2) + 296ac: 28800017 ldw r2,0(r5) + 296b0: 10c00044 addi r3,r2,1 + 296b4: 28c00015 stw r3,0(r5) + 296b8: 10800003 ldbu r2,0(r2) + 296bc: dfc00317 ldw ra,12(sp) + 296c0: dc400217 ldw r17,8(sp) + 296c4: dc000117 ldw r16,4(sp) + 296c8: dec00404 addi sp,sp,16 + 296cc: f800283a ret + 296d0: 28c00617 ldw r3,24(r5) + 296d4: 10c00e16 blt r2,r3,29710 + 296d8: 28800017 ldw r2,0(r5) + 296dc: 01000284 movi r4,10 + 296e0: 14400005 stb r17,0(r2) + 296e4: 28800017 ldw r2,0(r5) + 296e8: 10c00003 ldbu r3,0(r2) + 296ec: 193ff01e bne r3,r4,296b0 <_gp+0xfffed178> + 296f0: 280d883a mov r6,r5 + 296f4: 180b883a mov r5,r3 + 296f8: 00000706 br 29718 + 296fc: 8009883a mov r4,r16 + 29700: d9400015 stw r5,0(sp) + 29704: 00274e40 call 274e4 <__sinit> + 29708: d9400017 ldw r5,0(sp) + 2970c: 003fe106 br 29694 <_gp+0xfffed15c> + 29710: 280d883a mov r6,r5 + 29714: 880b883a mov r5,r17 + 29718: 8009883a mov r4,r16 + 2971c: dfc00317 ldw ra,12(sp) + 29720: dc400217 ldw r17,8(sp) + 29724: dc000117 ldw r16,4(sp) + 29728: dec00404 addi sp,sp,16 + 2972c: 002b5681 jmpi 2b568 <__swbuf_r> + +00029730 <_realloc_r>: + 29730: defff604 addi sp,sp,-40 + 29734: dc800215 stw r18,8(sp) + 29738: dfc00915 stw ra,36(sp) + 2973c: df000815 stw fp,32(sp) + 29740: ddc00715 stw r23,28(sp) + 29744: dd800615 stw r22,24(sp) + 29748: dd400515 stw r21,20(sp) + 2974c: dd000415 stw r20,16(sp) + 29750: dcc00315 stw r19,12(sp) + 29754: dc400115 stw r17,4(sp) + 29758: dc000015 stw r16,0(sp) + 2975c: 3025883a mov r18,r6 + 29760: 2800b726 beq r5,zero,29a40 <_realloc_r+0x310> + 29764: 282b883a mov r21,r5 + 29768: 2029883a mov r20,r4 + 2976c: 002f5800 call 2f580 <__malloc_lock> + 29770: a8bfff17 ldw r2,-4(r21) + 29774: 043fff04 movi r16,-4 + 29778: 90c002c4 addi r3,r18,11 + 2977c: 01000584 movi r4,22 + 29780: acfffe04 addi r19,r21,-8 + 29784: 1420703a and r16,r2,r16 + 29788: 20c0332e bgeu r4,r3,29858 <_realloc_r+0x128> + 2978c: 047ffe04 movi r17,-8 + 29790: 1c62703a and r17,r3,r17 + 29794: 8807883a mov r3,r17 + 29798: 88005816 blt r17,zero,298fc <_realloc_r+0x1cc> + 2979c: 8c805736 bltu r17,r18,298fc <_realloc_r+0x1cc> + 297a0: 80c0300e bge r16,r3,29864 <_realloc_r+0x134> + 297a4: 070000f4 movhi fp,3 + 297a8: e70aa304 addi fp,fp,10892 + 297ac: e1c00217 ldw r7,8(fp) + 297b0: 9c09883a add r4,r19,r16 + 297b4: 22000117 ldw r8,4(r4) + 297b8: 21c06326 beq r4,r7,29948 <_realloc_r+0x218> + 297bc: 017fff84 movi r5,-2 + 297c0: 414a703a and r5,r8,r5 + 297c4: 214b883a add r5,r4,r5 + 297c8: 29800117 ldw r6,4(r5) + 297cc: 3180004c andi r6,r6,1 + 297d0: 30003f26 beq r6,zero,298d0 <_realloc_r+0x1a0> + 297d4: 1080004c andi r2,r2,1 + 297d8: 10008326 beq r2,zero,299e8 <_realloc_r+0x2b8> + 297dc: 900b883a mov r5,r18 + 297e0: a009883a mov r4,r20 + 297e4: 00226c00 call 226c0 <_malloc_r> + 297e8: 1025883a mov r18,r2 + 297ec: 10011e26 beq r2,zero,29c68 <_realloc_r+0x538> + 297f0: a93fff17 ldw r4,-4(r21) + 297f4: 10fffe04 addi r3,r2,-8 + 297f8: 00bfff84 movi r2,-2 + 297fc: 2084703a and r2,r4,r2 + 29800: 9885883a add r2,r19,r2 + 29804: 1880ee26 beq r3,r2,29bc0 <_realloc_r+0x490> + 29808: 81bfff04 addi r6,r16,-4 + 2980c: 00800904 movi r2,36 + 29810: 1180b836 bltu r2,r6,29af4 <_realloc_r+0x3c4> + 29814: 00c004c4 movi r3,19 + 29818: 19809636 bltu r3,r6,29a74 <_realloc_r+0x344> + 2981c: 9005883a mov r2,r18 + 29820: a807883a mov r3,r21 + 29824: 19000017 ldw r4,0(r3) + 29828: 11000015 stw r4,0(r2) + 2982c: 19000117 ldw r4,4(r3) + 29830: 11000115 stw r4,4(r2) + 29834: 18c00217 ldw r3,8(r3) + 29838: 10c00215 stw r3,8(r2) + 2983c: a80b883a mov r5,r21 + 29840: a009883a mov r4,r20 + 29844: 00276580 call 27658 <_free_r> + 29848: a009883a mov r4,r20 + 2984c: 002f5a40 call 2f5a4 <__malloc_unlock> + 29850: 9005883a mov r2,r18 + 29854: 00001206 br 298a0 <_realloc_r+0x170> + 29858: 00c00404 movi r3,16 + 2985c: 1823883a mov r17,r3 + 29860: 003fce06 br 2979c <_gp+0xfffed264> + 29864: a825883a mov r18,r21 + 29868: 8445c83a sub r2,r16,r17 + 2986c: 00c003c4 movi r3,15 + 29870: 18802636 bltu r3,r2,2990c <_realloc_r+0x1dc> + 29874: 99800117 ldw r6,4(r19) + 29878: 9c07883a add r3,r19,r16 + 2987c: 3180004c andi r6,r6,1 + 29880: 3420b03a or r16,r6,r16 + 29884: 9c000115 stw r16,4(r19) + 29888: 18800117 ldw r2,4(r3) + 2988c: 10800054 ori r2,r2,1 + 29890: 18800115 stw r2,4(r3) + 29894: a009883a mov r4,r20 + 29898: 002f5a40 call 2f5a4 <__malloc_unlock> + 2989c: 9005883a mov r2,r18 + 298a0: dfc00917 ldw ra,36(sp) + 298a4: df000817 ldw fp,32(sp) + 298a8: ddc00717 ldw r23,28(sp) + 298ac: dd800617 ldw r22,24(sp) + 298b0: dd400517 ldw r21,20(sp) + 298b4: dd000417 ldw r20,16(sp) + 298b8: dcc00317 ldw r19,12(sp) + 298bc: dc800217 ldw r18,8(sp) + 298c0: dc400117 ldw r17,4(sp) + 298c4: dc000017 ldw r16,0(sp) + 298c8: dec00a04 addi sp,sp,40 + 298cc: f800283a ret + 298d0: 017fff04 movi r5,-4 + 298d4: 414a703a and r5,r8,r5 + 298d8: 814d883a add r6,r16,r5 + 298dc: 30c01f16 blt r6,r3,2995c <_realloc_r+0x22c> + 298e0: 20800317 ldw r2,12(r4) + 298e4: 20c00217 ldw r3,8(r4) + 298e8: a825883a mov r18,r21 + 298ec: 3021883a mov r16,r6 + 298f0: 18800315 stw r2,12(r3) + 298f4: 10c00215 stw r3,8(r2) + 298f8: 003fdb06 br 29868 <_gp+0xfffed330> + 298fc: 00800304 movi r2,12 + 29900: a0800015 stw r2,0(r20) + 29904: 0005883a mov r2,zero + 29908: 003fe506 br 298a0 <_gp+0xfffed368> + 2990c: 98c00117 ldw r3,4(r19) + 29910: 9c4b883a add r5,r19,r17 + 29914: 11000054 ori r4,r2,1 + 29918: 18c0004c andi r3,r3,1 + 2991c: 1c62b03a or r17,r3,r17 + 29920: 9c400115 stw r17,4(r19) + 29924: 29000115 stw r4,4(r5) + 29928: 2885883a add r2,r5,r2 + 2992c: 10c00117 ldw r3,4(r2) + 29930: 29400204 addi r5,r5,8 + 29934: a009883a mov r4,r20 + 29938: 18c00054 ori r3,r3,1 + 2993c: 10c00115 stw r3,4(r2) + 29940: 00276580 call 27658 <_free_r> + 29944: 003fd306 br 29894 <_gp+0xfffed35c> + 29948: 017fff04 movi r5,-4 + 2994c: 414a703a and r5,r8,r5 + 29950: 89800404 addi r6,r17,16 + 29954: 8151883a add r8,r16,r5 + 29958: 4180590e bge r8,r6,29ac0 <_realloc_r+0x390> + 2995c: 1080004c andi r2,r2,1 + 29960: 103f9e1e bne r2,zero,297dc <_gp+0xfffed2a4> + 29964: adbffe17 ldw r22,-8(r21) + 29968: 00bfff04 movi r2,-4 + 2996c: 9dadc83a sub r22,r19,r22 + 29970: b1800117 ldw r6,4(r22) + 29974: 3084703a and r2,r6,r2 + 29978: 20002026 beq r4,zero,299fc <_realloc_r+0x2cc> + 2997c: 80af883a add r23,r16,r2 + 29980: b96f883a add r23,r23,r5 + 29984: 21c05f26 beq r4,r7,29b04 <_realloc_r+0x3d4> + 29988: b8c01c16 blt r23,r3,299fc <_realloc_r+0x2cc> + 2998c: 20800317 ldw r2,12(r4) + 29990: 20c00217 ldw r3,8(r4) + 29994: 81bfff04 addi r6,r16,-4 + 29998: 01000904 movi r4,36 + 2999c: 18800315 stw r2,12(r3) + 299a0: 10c00215 stw r3,8(r2) + 299a4: b0c00217 ldw r3,8(r22) + 299a8: b0800317 ldw r2,12(r22) + 299ac: b4800204 addi r18,r22,8 + 299b0: 18800315 stw r2,12(r3) + 299b4: 10c00215 stw r3,8(r2) + 299b8: 21801b36 bltu r4,r6,29a28 <_realloc_r+0x2f8> + 299bc: 008004c4 movi r2,19 + 299c0: 1180352e bgeu r2,r6,29a98 <_realloc_r+0x368> + 299c4: a8800017 ldw r2,0(r21) + 299c8: b0800215 stw r2,8(r22) + 299cc: a8800117 ldw r2,4(r21) + 299d0: b0800315 stw r2,12(r22) + 299d4: 008006c4 movi r2,27 + 299d8: 11807f36 bltu r2,r6,29bd8 <_realloc_r+0x4a8> + 299dc: b0800404 addi r2,r22,16 + 299e0: ad400204 addi r21,r21,8 + 299e4: 00002d06 br 29a9c <_realloc_r+0x36c> + 299e8: adbffe17 ldw r22,-8(r21) + 299ec: 00bfff04 movi r2,-4 + 299f0: 9dadc83a sub r22,r19,r22 + 299f4: b1000117 ldw r4,4(r22) + 299f8: 2084703a and r2,r4,r2 + 299fc: b03f7726 beq r22,zero,297dc <_gp+0xfffed2a4> + 29a00: 80af883a add r23,r16,r2 + 29a04: b8ff7516 blt r23,r3,297dc <_gp+0xfffed2a4> + 29a08: b0800317 ldw r2,12(r22) + 29a0c: b0c00217 ldw r3,8(r22) + 29a10: 81bfff04 addi r6,r16,-4 + 29a14: 01000904 movi r4,36 + 29a18: 18800315 stw r2,12(r3) + 29a1c: 10c00215 stw r3,8(r2) + 29a20: b4800204 addi r18,r22,8 + 29a24: 21bfe52e bgeu r4,r6,299bc <_gp+0xfffed484> + 29a28: a80b883a mov r5,r21 + 29a2c: 9009883a mov r4,r18 + 29a30: 00284700 call 28470 + 29a34: b821883a mov r16,r23 + 29a38: b027883a mov r19,r22 + 29a3c: 003f8a06 br 29868 <_gp+0xfffed330> + 29a40: 300b883a mov r5,r6 + 29a44: dfc00917 ldw ra,36(sp) + 29a48: df000817 ldw fp,32(sp) + 29a4c: ddc00717 ldw r23,28(sp) + 29a50: dd800617 ldw r22,24(sp) + 29a54: dd400517 ldw r21,20(sp) + 29a58: dd000417 ldw r20,16(sp) + 29a5c: dcc00317 ldw r19,12(sp) + 29a60: dc800217 ldw r18,8(sp) + 29a64: dc400117 ldw r17,4(sp) + 29a68: dc000017 ldw r16,0(sp) + 29a6c: dec00a04 addi sp,sp,40 + 29a70: 00226c01 jmpi 226c0 <_malloc_r> + 29a74: a8c00017 ldw r3,0(r21) + 29a78: 90c00015 stw r3,0(r18) + 29a7c: a8c00117 ldw r3,4(r21) + 29a80: 90c00115 stw r3,4(r18) + 29a84: 00c006c4 movi r3,27 + 29a88: 19804536 bltu r3,r6,29ba0 <_realloc_r+0x470> + 29a8c: 90800204 addi r2,r18,8 + 29a90: a8c00204 addi r3,r21,8 + 29a94: 003f6306 br 29824 <_gp+0xfffed2ec> + 29a98: 9005883a mov r2,r18 + 29a9c: a8c00017 ldw r3,0(r21) + 29aa0: b821883a mov r16,r23 + 29aa4: b027883a mov r19,r22 + 29aa8: 10c00015 stw r3,0(r2) + 29aac: a8c00117 ldw r3,4(r21) + 29ab0: 10c00115 stw r3,4(r2) + 29ab4: a8c00217 ldw r3,8(r21) + 29ab8: 10c00215 stw r3,8(r2) + 29abc: 003f6a06 br 29868 <_gp+0xfffed330> + 29ac0: 9c67883a add r19,r19,r17 + 29ac4: 4445c83a sub r2,r8,r17 + 29ac8: e4c00215 stw r19,8(fp) + 29acc: 10800054 ori r2,r2,1 + 29ad0: 98800115 stw r2,4(r19) + 29ad4: a8bfff17 ldw r2,-4(r21) + 29ad8: a009883a mov r4,r20 + 29adc: 1080004c andi r2,r2,1 + 29ae0: 1462b03a or r17,r2,r17 + 29ae4: ac7fff15 stw r17,-4(r21) + 29ae8: 002f5a40 call 2f5a4 <__malloc_unlock> + 29aec: a805883a mov r2,r21 + 29af0: 003f6b06 br 298a0 <_gp+0xfffed368> + 29af4: a80b883a mov r5,r21 + 29af8: 9009883a mov r4,r18 + 29afc: 00284700 call 28470 + 29b00: 003f4e06 br 2983c <_gp+0xfffed304> + 29b04: 89000404 addi r4,r17,16 + 29b08: b93fbc16 blt r23,r4,299fc <_gp+0xfffed4c4> + 29b0c: b0800317 ldw r2,12(r22) + 29b10: b0c00217 ldw r3,8(r22) + 29b14: 81bfff04 addi r6,r16,-4 + 29b18: 01000904 movi r4,36 + 29b1c: 18800315 stw r2,12(r3) + 29b20: 10c00215 stw r3,8(r2) + 29b24: b4800204 addi r18,r22,8 + 29b28: 21804336 bltu r4,r6,29c38 <_realloc_r+0x508> + 29b2c: 008004c4 movi r2,19 + 29b30: 11803f2e bgeu r2,r6,29c30 <_realloc_r+0x500> + 29b34: a8800017 ldw r2,0(r21) + 29b38: b0800215 stw r2,8(r22) + 29b3c: a8800117 ldw r2,4(r21) + 29b40: b0800315 stw r2,12(r22) + 29b44: 008006c4 movi r2,27 + 29b48: 11803f36 bltu r2,r6,29c48 <_realloc_r+0x518> + 29b4c: b0800404 addi r2,r22,16 + 29b50: ad400204 addi r21,r21,8 + 29b54: a8c00017 ldw r3,0(r21) + 29b58: 10c00015 stw r3,0(r2) + 29b5c: a8c00117 ldw r3,4(r21) + 29b60: 10c00115 stw r3,4(r2) + 29b64: a8c00217 ldw r3,8(r21) + 29b68: 10c00215 stw r3,8(r2) + 29b6c: b447883a add r3,r22,r17 + 29b70: bc45c83a sub r2,r23,r17 + 29b74: e0c00215 stw r3,8(fp) + 29b78: 10800054 ori r2,r2,1 + 29b7c: 18800115 stw r2,4(r3) + 29b80: b0800117 ldw r2,4(r22) + 29b84: a009883a mov r4,r20 + 29b88: 1080004c andi r2,r2,1 + 29b8c: 1462b03a or r17,r2,r17 + 29b90: b4400115 stw r17,4(r22) + 29b94: 002f5a40 call 2f5a4 <__malloc_unlock> + 29b98: 9005883a mov r2,r18 + 29b9c: 003f4006 br 298a0 <_gp+0xfffed368> + 29ba0: a8c00217 ldw r3,8(r21) + 29ba4: 90c00215 stw r3,8(r18) + 29ba8: a8c00317 ldw r3,12(r21) + 29bac: 90c00315 stw r3,12(r18) + 29bb0: 30801126 beq r6,r2,29bf8 <_realloc_r+0x4c8> + 29bb4: 90800404 addi r2,r18,16 + 29bb8: a8c00404 addi r3,r21,16 + 29bbc: 003f1906 br 29824 <_gp+0xfffed2ec> + 29bc0: 90ffff17 ldw r3,-4(r18) + 29bc4: 00bfff04 movi r2,-4 + 29bc8: a825883a mov r18,r21 + 29bcc: 1884703a and r2,r3,r2 + 29bd0: 80a1883a add r16,r16,r2 + 29bd4: 003f2406 br 29868 <_gp+0xfffed330> + 29bd8: a8800217 ldw r2,8(r21) + 29bdc: b0800415 stw r2,16(r22) + 29be0: a8800317 ldw r2,12(r21) + 29be4: b0800515 stw r2,20(r22) + 29be8: 31000a26 beq r6,r4,29c14 <_realloc_r+0x4e4> + 29bec: b0800604 addi r2,r22,24 + 29bf0: ad400404 addi r21,r21,16 + 29bf4: 003fa906 br 29a9c <_gp+0xfffed564> + 29bf8: a9000417 ldw r4,16(r21) + 29bfc: 90800604 addi r2,r18,24 + 29c00: a8c00604 addi r3,r21,24 + 29c04: 91000415 stw r4,16(r18) + 29c08: a9000517 ldw r4,20(r21) + 29c0c: 91000515 stw r4,20(r18) + 29c10: 003f0406 br 29824 <_gp+0xfffed2ec> + 29c14: a8c00417 ldw r3,16(r21) + 29c18: ad400604 addi r21,r21,24 + 29c1c: b0800804 addi r2,r22,32 + 29c20: b0c00615 stw r3,24(r22) + 29c24: a8ffff17 ldw r3,-4(r21) + 29c28: b0c00715 stw r3,28(r22) + 29c2c: 003f9b06 br 29a9c <_gp+0xfffed564> + 29c30: 9005883a mov r2,r18 + 29c34: 003fc706 br 29b54 <_gp+0xfffed61c> + 29c38: a80b883a mov r5,r21 + 29c3c: 9009883a mov r4,r18 + 29c40: 00284700 call 28470 + 29c44: 003fc906 br 29b6c <_gp+0xfffed634> + 29c48: a8800217 ldw r2,8(r21) + 29c4c: b0800415 stw r2,16(r22) + 29c50: a8800317 ldw r2,12(r21) + 29c54: b0800515 stw r2,20(r22) + 29c58: 31000726 beq r6,r4,29c78 <_realloc_r+0x548> + 29c5c: b0800604 addi r2,r22,24 + 29c60: ad400404 addi r21,r21,16 + 29c64: 003fbb06 br 29b54 <_gp+0xfffed61c> + 29c68: a009883a mov r4,r20 + 29c6c: 002f5a40 call 2f5a4 <__malloc_unlock> + 29c70: 0005883a mov r2,zero + 29c74: 003f0a06 br 298a0 <_gp+0xfffed368> + 29c78: a8c00417 ldw r3,16(r21) + 29c7c: ad400604 addi r21,r21,24 + 29c80: b0800804 addi r2,r22,32 + 29c84: b0c00615 stw r3,24(r22) + 29c88: a8ffff17 ldw r3,-4(r21) + 29c8c: b0c00715 stw r3,28(r22) + 29c90: 003fb006 br 29b54 <_gp+0xfffed61c> + +00029c94 <__fpclassifyd>: + 29c94: 00a00034 movhi r2,32768 + 29c98: 10bfffc4 addi r2,r2,-1 + 29c9c: 2884703a and r2,r5,r2 + 29ca0: 10000726 beq r2,zero,29cc0 <__fpclassifyd+0x2c> + 29ca4: 00fffc34 movhi r3,65520 + 29ca8: 019ff834 movhi r6,32736 + 29cac: 28c7883a add r3,r5,r3 + 29cb0: 31bfffc4 addi r6,r6,-1 + 29cb4: 30c00536 bltu r6,r3,29ccc <__fpclassifyd+0x38> + 29cb8: 00800104 movi r2,4 + 29cbc: f800283a ret + 29cc0: 2000021e bne r4,zero,29ccc <__fpclassifyd+0x38> + 29cc4: 00800084 movi r2,2 + 29cc8: f800283a ret + 29ccc: 00dffc34 movhi r3,32752 + 29cd0: 019ff834 movhi r6,32736 + 29cd4: 28cb883a add r5,r5,r3 + 29cd8: 31bfffc4 addi r6,r6,-1 + 29cdc: 317ff62e bgeu r6,r5,29cb8 <_gp+0xfffed780> + 29ce0: 01400434 movhi r5,16 + 29ce4: 297fffc4 addi r5,r5,-1 + 29ce8: 28800236 bltu r5,r2,29cf4 <__fpclassifyd+0x60> + 29cec: 008000c4 movi r2,3 + 29cf0: f800283a ret + 29cf4: 10c00226 beq r2,r3,29d00 <__fpclassifyd+0x6c> + 29cf8: 0005883a mov r2,zero + 29cfc: f800283a ret + 29d00: 2005003a cmpeq r2,r4,zero + 29d04: f800283a ret + +00029d08 <__sread>: + 29d08: defffe04 addi sp,sp,-8 + 29d0c: dc000015 stw r16,0(sp) + 29d10: 2821883a mov r16,r5 + 29d14: 2940038f ldh r5,14(r5) + 29d18: dfc00115 stw ra,4(sp) + 29d1c: 002bc540 call 2bc54 <_read_r> + 29d20: 10000716 blt r2,zero,29d40 <__sread+0x38> + 29d24: 80c01417 ldw r3,80(r16) + 29d28: 1887883a add r3,r3,r2 + 29d2c: 80c01415 stw r3,80(r16) + 29d30: dfc00117 ldw ra,4(sp) + 29d34: dc000017 ldw r16,0(sp) + 29d38: dec00204 addi sp,sp,8 + 29d3c: f800283a ret + 29d40: 80c0030b ldhu r3,12(r16) + 29d44: 18fbffcc andi r3,r3,61439 + 29d48: 80c0030d sth r3,12(r16) + 29d4c: dfc00117 ldw ra,4(sp) + 29d50: dc000017 ldw r16,0(sp) + 29d54: dec00204 addi sp,sp,8 + 29d58: f800283a ret + +00029d5c <__seofread>: + 29d5c: 0005883a mov r2,zero + 29d60: f800283a ret + +00029d64 <__swrite>: + 29d64: 2880030b ldhu r2,12(r5) + 29d68: defffb04 addi sp,sp,-20 + 29d6c: dcc00315 stw r19,12(sp) + 29d70: dc800215 stw r18,8(sp) + 29d74: dc400115 stw r17,4(sp) + 29d78: dc000015 stw r16,0(sp) + 29d7c: dfc00415 stw ra,16(sp) + 29d80: 10c0400c andi r3,r2,256 + 29d84: 2821883a mov r16,r5 + 29d88: 2023883a mov r17,r4 + 29d8c: 3025883a mov r18,r6 + 29d90: 3827883a mov r19,r7 + 29d94: 18000526 beq r3,zero,29dac <__swrite+0x48> + 29d98: 2940038f ldh r5,14(r5) + 29d9c: 01c00084 movi r7,2 + 29da0: 000d883a mov r6,zero + 29da4: 002bbf40 call 2bbf4 <_lseek_r> + 29da8: 8080030b ldhu r2,12(r16) + 29dac: 8140038f ldh r5,14(r16) + 29db0: 10bbffcc andi r2,r2,61439 + 29db4: 980f883a mov r7,r19 + 29db8: 900d883a mov r6,r18 + 29dbc: 8809883a mov r4,r17 + 29dc0: 8080030d sth r2,12(r16) + 29dc4: dfc00417 ldw ra,16(sp) + 29dc8: dcc00317 ldw r19,12(sp) + 29dcc: dc800217 ldw r18,8(sp) + 29dd0: dc400117 ldw r17,4(sp) + 29dd4: dc000017 ldw r16,0(sp) + 29dd8: dec00504 addi sp,sp,20 + 29ddc: 002b6c01 jmpi 2b6c0 <_write_r> + +00029de0 <__sseek>: + 29de0: defffe04 addi sp,sp,-8 + 29de4: dc000015 stw r16,0(sp) + 29de8: 2821883a mov r16,r5 + 29dec: 2940038f ldh r5,14(r5) + 29df0: dfc00115 stw ra,4(sp) + 29df4: 002bbf40 call 2bbf4 <_lseek_r> + 29df8: 00ffffc4 movi r3,-1 + 29dfc: 10c00826 beq r2,r3,29e20 <__sseek+0x40> + 29e00: 80c0030b ldhu r3,12(r16) + 29e04: 80801415 stw r2,80(r16) + 29e08: 18c40014 ori r3,r3,4096 + 29e0c: 80c0030d sth r3,12(r16) + 29e10: dfc00117 ldw ra,4(sp) + 29e14: dc000017 ldw r16,0(sp) + 29e18: dec00204 addi sp,sp,8 + 29e1c: f800283a ret + 29e20: 80c0030b ldhu r3,12(r16) + 29e24: 18fbffcc andi r3,r3,61439 + 29e28: 80c0030d sth r3,12(r16) + 29e2c: dfc00117 ldw ra,4(sp) + 29e30: dc000017 ldw r16,0(sp) + 29e34: dec00204 addi sp,sp,8 + 29e38: f800283a ret + +00029e3c <__sclose>: + 29e3c: 2940038f ldh r5,14(r5) + 29e40: 002b7201 jmpi 2b720 <_close_r> + +00029e44 : + 29e44: 2144b03a or r2,r4,r5 + 29e48: 108000cc andi r2,r2,3 + 29e4c: 1000171e bne r2,zero,29eac + 29e50: 20800017 ldw r2,0(r4) + 29e54: 28c00017 ldw r3,0(r5) + 29e58: 10c0141e bne r2,r3,29eac + 29e5c: 027fbff4 movhi r9,65279 + 29e60: 4a7fbfc4 addi r9,r9,-257 + 29e64: 0086303a nor r3,zero,r2 + 29e68: 02202074 movhi r8,32897 + 29e6c: 1245883a add r2,r2,r9 + 29e70: 42202004 addi r8,r8,-32640 + 29e74: 10c4703a and r2,r2,r3 + 29e78: 1204703a and r2,r2,r8 + 29e7c: 10000226 beq r2,zero,29e88 + 29e80: 00002306 br 29f10 + 29e84: 1000221e bne r2,zero,29f10 + 29e88: 21000104 addi r4,r4,4 + 29e8c: 20c00017 ldw r3,0(r4) + 29e90: 29400104 addi r5,r5,4 + 29e94: 29800017 ldw r6,0(r5) + 29e98: 1a4f883a add r7,r3,r9 + 29e9c: 00c4303a nor r2,zero,r3 + 29ea0: 3884703a and r2,r7,r2 + 29ea4: 1204703a and r2,r2,r8 + 29ea8: 19bff626 beq r3,r6,29e84 <_gp+0xfffed94c> + 29eac: 20800003 ldbu r2,0(r4) + 29eb0: 10c03fcc andi r3,r2,255 + 29eb4: 18c0201c xori r3,r3,128 + 29eb8: 18ffe004 addi r3,r3,-128 + 29ebc: 18000c26 beq r3,zero,29ef0 + 29ec0: 29800007 ldb r6,0(r5) + 29ec4: 19800326 beq r3,r6,29ed4 + 29ec8: 00001306 br 29f18 + 29ecc: 29800007 ldb r6,0(r5) + 29ed0: 11800b1e bne r2,r6,29f00 + 29ed4: 21000044 addi r4,r4,1 + 29ed8: 20c00003 ldbu r3,0(r4) + 29edc: 29400044 addi r5,r5,1 + 29ee0: 18803fcc andi r2,r3,255 + 29ee4: 1080201c xori r2,r2,128 + 29ee8: 10bfe004 addi r2,r2,-128 + 29eec: 103ff71e bne r2,zero,29ecc <_gp+0xfffed994> + 29ef0: 0007883a mov r3,zero + 29ef4: 28800003 ldbu r2,0(r5) + 29ef8: 1885c83a sub r2,r3,r2 + 29efc: f800283a ret + 29f00: 28800003 ldbu r2,0(r5) + 29f04: 18c03fcc andi r3,r3,255 + 29f08: 1885c83a sub r2,r3,r2 + 29f0c: f800283a ret + 29f10: 0005883a mov r2,zero + 29f14: f800283a ret + 29f18: 10c03fcc andi r3,r2,255 + 29f1c: 003ff506 br 29ef4 <_gp+0xfffed9bc> + +00029f20 <__sprint_r.part.0>: + 29f20: 28801917 ldw r2,100(r5) + 29f24: defff604 addi sp,sp,-40 + 29f28: dd400515 stw r21,20(sp) + 29f2c: dfc00915 stw ra,36(sp) + 29f30: df000815 stw fp,32(sp) + 29f34: ddc00715 stw r23,28(sp) + 29f38: dd800615 stw r22,24(sp) + 29f3c: dd000415 stw r20,16(sp) + 29f40: dcc00315 stw r19,12(sp) + 29f44: dc800215 stw r18,8(sp) + 29f48: dc400115 stw r17,4(sp) + 29f4c: dc000015 stw r16,0(sp) + 29f50: 1088000c andi r2,r2,8192 + 29f54: 302b883a mov r21,r6 + 29f58: 10002e26 beq r2,zero,2a014 <__sprint_r.part.0+0xf4> + 29f5c: 30800217 ldw r2,8(r6) + 29f60: 35800017 ldw r22,0(r6) + 29f64: 10002926 beq r2,zero,2a00c <__sprint_r.part.0+0xec> + 29f68: 2827883a mov r19,r5 + 29f6c: 2029883a mov r20,r4 + 29f70: b5c00104 addi r23,r22,4 + 29f74: 04bfffc4 movi r18,-1 + 29f78: bc400017 ldw r17,0(r23) + 29f7c: b4000017 ldw r16,0(r22) + 29f80: 0039883a mov fp,zero + 29f84: 8822d0ba srli r17,r17,2 + 29f88: 8800031e bne r17,zero,29f98 <__sprint_r.part.0+0x78> + 29f8c: 00001806 br 29ff0 <__sprint_r.part.0+0xd0> + 29f90: 84000104 addi r16,r16,4 + 29f94: 8f001526 beq r17,fp,29fec <__sprint_r.part.0+0xcc> + 29f98: 81400017 ldw r5,0(r16) + 29f9c: 980d883a mov r6,r19 + 29fa0: a009883a mov r4,r20 + 29fa4: 002baa00 call 2baa0 <_fputwc_r> + 29fa8: e7000044 addi fp,fp,1 + 29fac: 14bff81e bne r2,r18,29f90 <_gp+0xfffeda58> + 29fb0: 9005883a mov r2,r18 + 29fb4: a8000215 stw zero,8(r21) + 29fb8: a8000115 stw zero,4(r21) + 29fbc: dfc00917 ldw ra,36(sp) + 29fc0: df000817 ldw fp,32(sp) + 29fc4: ddc00717 ldw r23,28(sp) + 29fc8: dd800617 ldw r22,24(sp) + 29fcc: dd400517 ldw r21,20(sp) + 29fd0: dd000417 ldw r20,16(sp) + 29fd4: dcc00317 ldw r19,12(sp) + 29fd8: dc800217 ldw r18,8(sp) + 29fdc: dc400117 ldw r17,4(sp) + 29fe0: dc000017 ldw r16,0(sp) + 29fe4: dec00a04 addi sp,sp,40 + 29fe8: f800283a ret + 29fec: a8800217 ldw r2,8(r21) + 29ff0: 8c63883a add r17,r17,r17 + 29ff4: 8c63883a add r17,r17,r17 + 29ff8: 1445c83a sub r2,r2,r17 + 29ffc: a8800215 stw r2,8(r21) + 2a000: b5800204 addi r22,r22,8 + 2a004: bdc00204 addi r23,r23,8 + 2a008: 103fdb1e bne r2,zero,29f78 <_gp+0xfffeda40> + 2a00c: 0005883a mov r2,zero + 2a010: 003fe806 br 29fb4 <_gp+0xfffeda7c> + 2a014: 00279680 call 27968 <__sfvwrite_r> + 2a018: 003fe606 br 29fb4 <_gp+0xfffeda7c> + +0002a01c <__sprint_r>: + 2a01c: 30c00217 ldw r3,8(r6) + 2a020: 18000126 beq r3,zero,2a028 <__sprint_r+0xc> + 2a024: 0029f201 jmpi 29f20 <__sprint_r.part.0> + 2a028: 30000115 stw zero,4(r6) + 2a02c: 0005883a mov r2,zero + 2a030: f800283a ret + +0002a034 <___vfiprintf_internal_r>: + 2a034: deffc904 addi sp,sp,-220 + 2a038: df003515 stw fp,212(sp) + 2a03c: dd003115 stw r20,196(sp) + 2a040: dfc03615 stw ra,216(sp) + 2a044: ddc03415 stw r23,208(sp) + 2a048: dd803315 stw r22,204(sp) + 2a04c: dd403215 stw r21,200(sp) + 2a050: dcc03015 stw r19,192(sp) + 2a054: dc802f15 stw r18,188(sp) + 2a058: dc402e15 stw r17,184(sp) + 2a05c: dc002d15 stw r16,180(sp) + 2a060: d9002015 stw r4,128(sp) + 2a064: d9c02215 stw r7,136(sp) + 2a068: 2829883a mov r20,r5 + 2a06c: 3039883a mov fp,r6 + 2a070: 20000226 beq r4,zero,2a07c <___vfiprintf_internal_r+0x48> + 2a074: 20800e17 ldw r2,56(r4) + 2a078: 1000cf26 beq r2,zero,2a3b8 <___vfiprintf_internal_r+0x384> + 2a07c: a080030b ldhu r2,12(r20) + 2a080: 10c8000c andi r3,r2,8192 + 2a084: 1800061e bne r3,zero,2a0a0 <___vfiprintf_internal_r+0x6c> + 2a088: a1001917 ldw r4,100(r20) + 2a08c: 00f7ffc4 movi r3,-8193 + 2a090: 10880014 ori r2,r2,8192 + 2a094: 20c6703a and r3,r4,r3 + 2a098: a080030d sth r2,12(r20) + 2a09c: a0c01915 stw r3,100(r20) + 2a0a0: 10c0020c andi r3,r2,8 + 2a0a4: 1800a926 beq r3,zero,2a34c <___vfiprintf_internal_r+0x318> + 2a0a8: a0c00417 ldw r3,16(r20) + 2a0ac: 1800a726 beq r3,zero,2a34c <___vfiprintf_internal_r+0x318> + 2a0b0: 1080068c andi r2,r2,26 + 2a0b4: 00c00284 movi r3,10 + 2a0b8: 10c0ac26 beq r2,r3,2a36c <___vfiprintf_internal_r+0x338> + 2a0bc: da801a04 addi r10,sp,104 + 2a0c0: da801e15 stw r10,120(sp) + 2a0c4: d8801e17 ldw r2,120(sp) + 2a0c8: da8019c4 addi r10,sp,103 + 2a0cc: 058000f4 movhi r22,3 + 2a0d0: 05c000f4 movhi r23,3 + 2a0d4: da801f15 stw r10,124(sp) + 2a0d8: 1295c83a sub r10,r2,r10 + 2a0dc: b5886a04 addi r22,r22,8616 + 2a0e0: bdc86604 addi r23,r23,8600 + 2a0e4: dec01a15 stw sp,104(sp) + 2a0e8: d8001c15 stw zero,112(sp) + 2a0ec: d8001b15 stw zero,108(sp) + 2a0f0: d8002615 stw zero,152(sp) + 2a0f4: d8002315 stw zero,140(sp) + 2a0f8: da802715 stw r10,156(sp) + 2a0fc: d811883a mov r8,sp + 2a100: dd002115 stw r20,132(sp) + 2a104: e021883a mov r16,fp + 2a108: 80800007 ldb r2,0(r16) + 2a10c: 1003ea26 beq r2,zero,2b0b8 <___vfiprintf_internal_r+0x1084> + 2a110: 00c00944 movi r3,37 + 2a114: 8025883a mov r18,r16 + 2a118: 10c0021e bne r2,r3,2a124 <___vfiprintf_internal_r+0xf0> + 2a11c: 00001606 br 2a178 <___vfiprintf_internal_r+0x144> + 2a120: 10c00326 beq r2,r3,2a130 <___vfiprintf_internal_r+0xfc> + 2a124: 94800044 addi r18,r18,1 + 2a128: 90800007 ldb r2,0(r18) + 2a12c: 103ffc1e bne r2,zero,2a120 <_gp+0xfffedbe8> + 2a130: 9423c83a sub r17,r18,r16 + 2a134: 88001026 beq r17,zero,2a178 <___vfiprintf_internal_r+0x144> + 2a138: d8c01c17 ldw r3,112(sp) + 2a13c: d8801b17 ldw r2,108(sp) + 2a140: 44000015 stw r16,0(r8) + 2a144: 88c7883a add r3,r17,r3 + 2a148: 10800044 addi r2,r2,1 + 2a14c: 44400115 stw r17,4(r8) + 2a150: d8c01c15 stw r3,112(sp) + 2a154: d8801b15 stw r2,108(sp) + 2a158: 010001c4 movi r4,7 + 2a15c: 2080760e bge r4,r2,2a338 <___vfiprintf_internal_r+0x304> + 2a160: 1803821e bne r3,zero,2af6c <___vfiprintf_internal_r+0xf38> + 2a164: da802317 ldw r10,140(sp) + 2a168: d8001b15 stw zero,108(sp) + 2a16c: d811883a mov r8,sp + 2a170: 5455883a add r10,r10,r17 + 2a174: da802315 stw r10,140(sp) + 2a178: 90800007 ldb r2,0(r18) + 2a17c: 10044626 beq r2,zero,2b298 <___vfiprintf_internal_r+0x1264> + 2a180: 90c00047 ldb r3,1(r18) + 2a184: 94000044 addi r16,r18,1 + 2a188: d8001d85 stb zero,118(sp) + 2a18c: 0009883a mov r4,zero + 2a190: 000f883a mov r7,zero + 2a194: 027fffc4 movi r9,-1 + 2a198: 0023883a mov r17,zero + 2a19c: 0029883a mov r20,zero + 2a1a0: 01401604 movi r5,88 + 2a1a4: 01800244 movi r6,9 + 2a1a8: 03400a84 movi r13,42 + 2a1ac: 03001b04 movi r12,108 + 2a1b0: 84000044 addi r16,r16,1 + 2a1b4: 18bff804 addi r2,r3,-32 + 2a1b8: 28827336 bltu r5,r2,2ab88 <___vfiprintf_internal_r+0xb54> + 2a1bc: 100490ba slli r2,r2,2 + 2a1c0: 028000f4 movhi r10,3 + 2a1c4: 52a87504 addi r10,r10,-24108 + 2a1c8: 1285883a add r2,r2,r10 + 2a1cc: 10800017 ldw r2,0(r2) + 2a1d0: 1000683a jmp r2 + 2a1d4: 0002a8bc xorhi zero,zero,2722 + 2a1d8: 0002ab88 cmpgei zero,zero,2734 + 2a1dc: 0002ab88 cmpgei zero,zero,2734 + 2a1e0: 0002a8dc xori zero,zero,2723 + 2a1e4: 0002ab88 cmpgei zero,zero,2734 + 2a1e8: 0002ab88 cmpgei zero,zero,2734 + 2a1ec: 0002ab88 cmpgei zero,zero,2734 + 2a1f0: 0002ab88 cmpgei zero,zero,2734 + 2a1f4: 0002ab88 cmpgei zero,zero,2734 + 2a1f8: 0002ab88 cmpgei zero,zero,2734 + 2a1fc: 0002aac4 movi zero,2731 + 2a200: 0002aae0 cmpeqi zero,zero,2731 + 2a204: 0002ab88 cmpgei zero,zero,2734 + 2a208: 0002a3c8 cmpgei zero,zero,2703 + 2a20c: 0002aaf0 cmpltui zero,zero,2731 + 2a210: 0002ab88 cmpgei zero,zero,2734 + 2a214: 0002a8e8 cmpgeui zero,zero,2723 + 2a218: 0002a8f4 movhi zero,2723 + 2a21c: 0002a8f4 movhi zero,2723 + 2a220: 0002a8f4 movhi zero,2723 + 2a224: 0002a8f4 movhi zero,2723 + 2a228: 0002a8f4 movhi zero,2723 + 2a22c: 0002a8f4 movhi zero,2723 + 2a230: 0002a8f4 movhi zero,2723 + 2a234: 0002a8f4 movhi zero,2723 + 2a238: 0002a8f4 movhi zero,2723 + 2a23c: 0002ab88 cmpgei zero,zero,2734 + 2a240: 0002ab88 cmpgei zero,zero,2734 + 2a244: 0002ab88 cmpgei zero,zero,2734 + 2a248: 0002ab88 cmpgei zero,zero,2734 + 2a24c: 0002ab88 cmpgei zero,zero,2734 + 2a250: 0002ab88 cmpgei zero,zero,2734 + 2a254: 0002ab88 cmpgei zero,zero,2734 + 2a258: 0002ab88 cmpgei zero,zero,2734 + 2a25c: 0002ab88 cmpgei zero,zero,2734 + 2a260: 0002ab88 cmpgei zero,zero,2734 + 2a264: 0002a920 cmpeqi zero,zero,2724 + 2a268: 0002ab88 cmpgei zero,zero,2734 + 2a26c: 0002ab88 cmpgei zero,zero,2734 + 2a270: 0002ab88 cmpgei zero,zero,2734 + 2a274: 0002ab88 cmpgei zero,zero,2734 + 2a278: 0002ab88 cmpgei zero,zero,2734 + 2a27c: 0002ab88 cmpgei zero,zero,2734 + 2a280: 0002ab88 cmpgei zero,zero,2734 + 2a284: 0002ab88 cmpgei zero,zero,2734 + 2a288: 0002ab88 cmpgei zero,zero,2734 + 2a28c: 0002ab88 cmpgei zero,zero,2734 + 2a290: 0002a958 cmpnei zero,zero,2725 + 2a294: 0002ab88 cmpgei zero,zero,2734 + 2a298: 0002ab88 cmpgei zero,zero,2734 + 2a29c: 0002ab88 cmpgei zero,zero,2734 + 2a2a0: 0002ab88 cmpgei zero,zero,2734 + 2a2a4: 0002ab88 cmpgei zero,zero,2734 + 2a2a8: 0002a9b0 cmpltui zero,zero,2726 + 2a2ac: 0002ab88 cmpgei zero,zero,2734 + 2a2b0: 0002ab88 cmpgei zero,zero,2734 + 2a2b4: 0002aa20 cmpeqi zero,zero,2728 + 2a2b8: 0002ab88 cmpgei zero,zero,2734 + 2a2bc: 0002ab88 cmpgei zero,zero,2734 + 2a2c0: 0002ab88 cmpgei zero,zero,2734 + 2a2c4: 0002ab88 cmpgei zero,zero,2734 + 2a2c8: 0002ab88 cmpgei zero,zero,2734 + 2a2cc: 0002ab88 cmpgei zero,zero,2734 + 2a2d0: 0002ab88 cmpgei zero,zero,2734 + 2a2d4: 0002ab88 cmpgei zero,zero,2734 + 2a2d8: 0002ab88 cmpgei zero,zero,2734 + 2a2dc: 0002ab88 cmpgei zero,zero,2734 + 2a2e0: 0002a7cc andi zero,zero,2719 + 2a2e4: 0002a7f8 rdprs zero,zero,2719 + 2a2e8: 0002ab88 cmpgei zero,zero,2734 + 2a2ec: 0002ab88 cmpgei zero,zero,2734 + 2a2f0: 0002ab88 cmpgei zero,zero,2734 + 2a2f4: 0002ab30 cmpltui zero,zero,2732 + 2a2f8: 0002a7f8 rdprs zero,zero,2719 + 2a2fc: 0002ab88 cmpgei zero,zero,2734 + 2a300: 0002ab88 cmpgei zero,zero,2734 + 2a304: 0002a68c andi zero,zero,2714 + 2a308: 0002ab88 cmpgei zero,zero,2734 + 2a30c: 0002a69c xori zero,zero,2714 + 2a310: 0002a6d8 cmpnei zero,zero,2715 + 2a314: 0002a3d4 movui zero,2703 + 2a318: 0002a680 call 2a68 <__alt_mem_onchip_memory2_0-0x1d598> + 2a31c: 0002ab88 cmpgei zero,zero,2734 + 2a320: 0002aa5c xori zero,zero,2729 + 2a324: 0002ab88 cmpgei zero,zero,2734 + 2a328: 0002aab4 movhi zero,2730 + 2a32c: 0002ab88 cmpgei zero,zero,2734 + 2a330: 0002ab88 cmpgei zero,zero,2734 + 2a334: 0002a778 rdprs zero,zero,2717 + 2a338: 42000204 addi r8,r8,8 + 2a33c: da802317 ldw r10,140(sp) + 2a340: 5455883a add r10,r10,r17 + 2a344: da802315 stw r10,140(sp) + 2a348: 003f8b06 br 2a178 <_gp+0xfffedc40> + 2a34c: d9002017 ldw r4,128(sp) + 2a350: a00b883a mov r5,r20 + 2a354: 00255100 call 25510 <__swsetup_r> + 2a358: 1003b11e bne r2,zero,2b220 <___vfiprintf_internal_r+0x11ec> + 2a35c: a080030b ldhu r2,12(r20) + 2a360: 00c00284 movi r3,10 + 2a364: 1080068c andi r2,r2,26 + 2a368: 10ff541e bne r2,r3,2a0bc <_gp+0xfffedb84> + 2a36c: a080038f ldh r2,14(r20) + 2a370: 103f5216 blt r2,zero,2a0bc <_gp+0xfffedb84> + 2a374: d9c02217 ldw r7,136(sp) + 2a378: d9002017 ldw r4,128(sp) + 2a37c: e00d883a mov r6,fp + 2a380: a00b883a mov r5,r20 + 2a384: 002b4ac0 call 2b4ac <__sbprintf> + 2a388: dfc03617 ldw ra,216(sp) + 2a38c: df003517 ldw fp,212(sp) + 2a390: ddc03417 ldw r23,208(sp) + 2a394: dd803317 ldw r22,204(sp) + 2a398: dd403217 ldw r21,200(sp) + 2a39c: dd003117 ldw r20,196(sp) + 2a3a0: dcc03017 ldw r19,192(sp) + 2a3a4: dc802f17 ldw r18,188(sp) + 2a3a8: dc402e17 ldw r17,184(sp) + 2a3ac: dc002d17 ldw r16,180(sp) + 2a3b0: dec03704 addi sp,sp,220 + 2a3b4: f800283a ret + 2a3b8: 00274e40 call 274e4 <__sinit> + 2a3bc: 003f2f06 br 2a07c <_gp+0xfffedb44> + 2a3c0: 0463c83a sub r17,zero,r17 + 2a3c4: d8802215 stw r2,136(sp) + 2a3c8: a5000114 ori r20,r20,4 + 2a3cc: 80c00007 ldb r3,0(r16) + 2a3d0: 003f7706 br 2a1b0 <_gp+0xfffedc78> + 2a3d4: 00800c04 movi r2,48 + 2a3d8: da802217 ldw r10,136(sp) + 2a3dc: d8801d05 stb r2,116(sp) + 2a3e0: 00801e04 movi r2,120 + 2a3e4: d8801d45 stb r2,117(sp) + 2a3e8: d8001d85 stb zero,118(sp) + 2a3ec: 50c00104 addi r3,r10,4 + 2a3f0: 54800017 ldw r18,0(r10) + 2a3f4: 0027883a mov r19,zero + 2a3f8: a0800094 ori r2,r20,2 + 2a3fc: 48030b16 blt r9,zero,2b02c <___vfiprintf_internal_r+0xff8> + 2a400: 00bfdfc4 movi r2,-129 + 2a404: a096703a and r11,r20,r2 + 2a408: d8c02215 stw r3,136(sp) + 2a40c: 5d000094 ori r20,r11,2 + 2a410: 90032b1e bne r18,zero,2b0c0 <___vfiprintf_internal_r+0x108c> + 2a414: 008000f4 movhi r2,3 + 2a418: 10880504 addi r2,r2,8212 + 2a41c: d8802615 stw r2,152(sp) + 2a420: 0039883a mov fp,zero + 2a424: 48017b1e bne r9,zero,2aa14 <___vfiprintf_internal_r+0x9e0> + 2a428: 0013883a mov r9,zero + 2a42c: 0027883a mov r19,zero + 2a430: dd401a04 addi r21,sp,104 + 2a434: 4825883a mov r18,r9 + 2a438: 4cc0010e bge r9,r19,2a440 <___vfiprintf_internal_r+0x40c> + 2a43c: 9825883a mov r18,r19 + 2a440: e7003fcc andi fp,fp,255 + 2a444: e700201c xori fp,fp,128 + 2a448: e73fe004 addi fp,fp,-128 + 2a44c: e0000126 beq fp,zero,2a454 <___vfiprintf_internal_r+0x420> + 2a450: 94800044 addi r18,r18,1 + 2a454: a380008c andi r14,r20,2 + 2a458: 70000126 beq r14,zero,2a460 <___vfiprintf_internal_r+0x42c> + 2a45c: 94800084 addi r18,r18,2 + 2a460: a700210c andi fp,r20,132 + 2a464: e001df1e bne fp,zero,2abe4 <___vfiprintf_internal_r+0xbb0> + 2a468: 8c87c83a sub r3,r17,r18 + 2a46c: 00c1dd0e bge zero,r3,2abe4 <___vfiprintf_internal_r+0xbb0> + 2a470: 01c00404 movi r7,16 + 2a474: d8801c17 ldw r2,112(sp) + 2a478: 38c3ad0e bge r7,r3,2b330 <___vfiprintf_internal_r+0x12fc> + 2a47c: 028000f4 movhi r10,3 + 2a480: 52886a04 addi r10,r10,8616 + 2a484: dc002915 stw r16,164(sp) + 2a488: d9801b17 ldw r6,108(sp) + 2a48c: da802415 stw r10,144(sp) + 2a490: 03c001c4 movi r15,7 + 2a494: da402515 stw r9,148(sp) + 2a498: db802815 stw r14,160(sp) + 2a49c: 1821883a mov r16,r3 + 2a4a0: 00000506 br 2a4b8 <___vfiprintf_internal_r+0x484> + 2a4a4: 31400084 addi r5,r6,2 + 2a4a8: 42000204 addi r8,r8,8 + 2a4ac: 200d883a mov r6,r4 + 2a4b0: 843ffc04 addi r16,r16,-16 + 2a4b4: 3c000d0e bge r7,r16,2a4ec <___vfiprintf_internal_r+0x4b8> + 2a4b8: 10800404 addi r2,r2,16 + 2a4bc: 31000044 addi r4,r6,1 + 2a4c0: 45800015 stw r22,0(r8) + 2a4c4: 41c00115 stw r7,4(r8) + 2a4c8: d8801c15 stw r2,112(sp) + 2a4cc: d9001b15 stw r4,108(sp) + 2a4d0: 793ff40e bge r15,r4,2a4a4 <_gp+0xfffedf6c> + 2a4d4: 1001b51e bne r2,zero,2abac <___vfiprintf_internal_r+0xb78> + 2a4d8: 843ffc04 addi r16,r16,-16 + 2a4dc: 000d883a mov r6,zero + 2a4e0: 01400044 movi r5,1 + 2a4e4: d811883a mov r8,sp + 2a4e8: 3c3ff316 blt r7,r16,2a4b8 <_gp+0xfffedf80> + 2a4ec: 8007883a mov r3,r16 + 2a4f0: da402517 ldw r9,148(sp) + 2a4f4: db802817 ldw r14,160(sp) + 2a4f8: dc002917 ldw r16,164(sp) + 2a4fc: da802417 ldw r10,144(sp) + 2a500: 1885883a add r2,r3,r2 + 2a504: 40c00115 stw r3,4(r8) + 2a508: 42800015 stw r10,0(r8) + 2a50c: d8801c15 stw r2,112(sp) + 2a510: d9401b15 stw r5,108(sp) + 2a514: 00c001c4 movi r3,7 + 2a518: 19426016 blt r3,r5,2ae9c <___vfiprintf_internal_r+0xe68> + 2a51c: d8c01d87 ldb r3,118(sp) + 2a520: 42000204 addi r8,r8,8 + 2a524: 29000044 addi r4,r5,1 + 2a528: 1801b31e bne r3,zero,2abf8 <___vfiprintf_internal_r+0xbc4> + 2a52c: 7001c026 beq r14,zero,2ac30 <___vfiprintf_internal_r+0xbfc> + 2a530: d8c01d04 addi r3,sp,116 + 2a534: 10800084 addi r2,r2,2 + 2a538: 40c00015 stw r3,0(r8) + 2a53c: 00c00084 movi r3,2 + 2a540: 40c00115 stw r3,4(r8) + 2a544: d8801c15 stw r2,112(sp) + 2a548: d9001b15 stw r4,108(sp) + 2a54c: 00c001c4 movi r3,7 + 2a550: 1902650e bge r3,r4,2aee8 <___vfiprintf_internal_r+0xeb4> + 2a554: 10029a1e bne r2,zero,2afc0 <___vfiprintf_internal_r+0xf8c> + 2a558: 00c02004 movi r3,128 + 2a55c: 01000044 movi r4,1 + 2a560: 000b883a mov r5,zero + 2a564: d811883a mov r8,sp + 2a568: e0c1b31e bne fp,r3,2ac38 <___vfiprintf_internal_r+0xc04> + 2a56c: 8cb9c83a sub fp,r17,r18 + 2a570: 0701b10e bge zero,fp,2ac38 <___vfiprintf_internal_r+0xc04> + 2a574: 01c00404 movi r7,16 + 2a578: 3f03890e bge r7,fp,2b3a0 <___vfiprintf_internal_r+0x136c> + 2a57c: 00c000f4 movhi r3,3 + 2a580: 18c86604 addi r3,r3,8600 + 2a584: d8c02415 stw r3,144(sp) + 2a588: 8007883a mov r3,r16 + 2a58c: 034001c4 movi r13,7 + 2a590: e021883a mov r16,fp + 2a594: da402515 stw r9,148(sp) + 2a598: 1839883a mov fp,r3 + 2a59c: 00000506 br 2a5b4 <___vfiprintf_internal_r+0x580> + 2a5a0: 29800084 addi r6,r5,2 + 2a5a4: 42000204 addi r8,r8,8 + 2a5a8: 180b883a mov r5,r3 + 2a5ac: 843ffc04 addi r16,r16,-16 + 2a5b0: 3c000d0e bge r7,r16,2a5e8 <___vfiprintf_internal_r+0x5b4> + 2a5b4: 10800404 addi r2,r2,16 + 2a5b8: 28c00044 addi r3,r5,1 + 2a5bc: 45c00015 stw r23,0(r8) + 2a5c0: 41c00115 stw r7,4(r8) + 2a5c4: d8801c15 stw r2,112(sp) + 2a5c8: d8c01b15 stw r3,108(sp) + 2a5cc: 68fff40e bge r13,r3,2a5a0 <_gp+0xfffee068> + 2a5d0: 1002241e bne r2,zero,2ae64 <___vfiprintf_internal_r+0xe30> + 2a5d4: 843ffc04 addi r16,r16,-16 + 2a5d8: 01800044 movi r6,1 + 2a5dc: 000b883a mov r5,zero + 2a5e0: d811883a mov r8,sp + 2a5e4: 3c3ff316 blt r7,r16,2a5b4 <_gp+0xfffee07c> + 2a5e8: da402517 ldw r9,148(sp) + 2a5ec: e007883a mov r3,fp + 2a5f0: 8039883a mov fp,r16 + 2a5f4: 1821883a mov r16,r3 + 2a5f8: d8c02417 ldw r3,144(sp) + 2a5fc: 1705883a add r2,r2,fp + 2a600: 47000115 stw fp,4(r8) + 2a604: 40c00015 stw r3,0(r8) + 2a608: d8801c15 stw r2,112(sp) + 2a60c: d9801b15 stw r6,108(sp) + 2a610: 00c001c4 movi r3,7 + 2a614: 19827616 blt r3,r6,2aff0 <___vfiprintf_internal_r+0xfbc> + 2a618: 4cf9c83a sub fp,r9,r19 + 2a61c: 42000204 addi r8,r8,8 + 2a620: 31000044 addi r4,r6,1 + 2a624: 300b883a mov r5,r6 + 2a628: 07018516 blt zero,fp,2ac40 <___vfiprintf_internal_r+0xc0c> + 2a62c: 9885883a add r2,r19,r2 + 2a630: 45400015 stw r21,0(r8) + 2a634: 44c00115 stw r19,4(r8) + 2a638: d8801c15 stw r2,112(sp) + 2a63c: d9001b15 stw r4,108(sp) + 2a640: 00c001c4 movi r3,7 + 2a644: 1901dd0e bge r3,r4,2adbc <___vfiprintf_internal_r+0xd88> + 2a648: 1002401e bne r2,zero,2af4c <___vfiprintf_internal_r+0xf18> + 2a64c: d8001b15 stw zero,108(sp) + 2a650: a2c0010c andi r11,r20,4 + 2a654: 58000226 beq r11,zero,2a660 <___vfiprintf_internal_r+0x62c> + 2a658: 8ca7c83a sub r19,r17,r18 + 2a65c: 04c2f216 blt zero,r19,2b228 <___vfiprintf_internal_r+0x11f4> + 2a660: 8c80010e bge r17,r18,2a668 <___vfiprintf_internal_r+0x634> + 2a664: 9023883a mov r17,r18 + 2a668: da802317 ldw r10,140(sp) + 2a66c: 5455883a add r10,r10,r17 + 2a670: da802315 stw r10,140(sp) + 2a674: d8001b15 stw zero,108(sp) + 2a678: d811883a mov r8,sp + 2a67c: 003ea206 br 2a108 <_gp+0xfffedbd0> + 2a680: a5000814 ori r20,r20,32 + 2a684: 80c00007 ldb r3,0(r16) + 2a688: 003ec906 br 2a1b0 <_gp+0xfffedc78> + 2a68c: 80c00007 ldb r3,0(r16) + 2a690: 1b030926 beq r3,r12,2b2b8 <___vfiprintf_internal_r+0x1284> + 2a694: a5000414 ori r20,r20,16 + 2a698: 003ec506 br 2a1b0 <_gp+0xfffedc78> + 2a69c: 21003fcc andi r4,r4,255 + 2a6a0: 20035e1e bne r4,zero,2b41c <___vfiprintf_internal_r+0x13e8> + 2a6a4: a080080c andi r2,r20,32 + 2a6a8: 1002a526 beq r2,zero,2b140 <___vfiprintf_internal_r+0x110c> + 2a6ac: da802217 ldw r10,136(sp) + 2a6b0: 50800017 ldw r2,0(r10) + 2a6b4: da802317 ldw r10,140(sp) + 2a6b8: 5007d7fa srai r3,r10,31 + 2a6bc: da802217 ldw r10,136(sp) + 2a6c0: 10c00115 stw r3,4(r2) + 2a6c4: 52800104 addi r10,r10,4 + 2a6c8: da802215 stw r10,136(sp) + 2a6cc: da802317 ldw r10,140(sp) + 2a6d0: 12800015 stw r10,0(r2) + 2a6d4: 003e8c06 br 2a108 <_gp+0xfffedbd0> + 2a6d8: 21003fcc andi r4,r4,255 + 2a6dc: 2003511e bne r4,zero,2b424 <___vfiprintf_internal_r+0x13f0> + 2a6e0: a080080c andi r2,r20,32 + 2a6e4: 1000a126 beq r2,zero,2a96c <___vfiprintf_internal_r+0x938> + 2a6e8: da802217 ldw r10,136(sp) + 2a6ec: d8001d85 stb zero,118(sp) + 2a6f0: 50800204 addi r2,r10,8 + 2a6f4: 54800017 ldw r18,0(r10) + 2a6f8: 54c00117 ldw r19,4(r10) + 2a6fc: 4802b416 blt r9,zero,2b1d0 <___vfiprintf_internal_r+0x119c> + 2a700: 013fdfc4 movi r4,-129 + 2a704: 94c6b03a or r3,r18,r19 + 2a708: d8802215 stw r2,136(sp) + 2a70c: a128703a and r20,r20,r4 + 2a710: 1800a226 beq r3,zero,2a99c <___vfiprintf_internal_r+0x968> + 2a714: 0039883a mov fp,zero + 2a718: dd401a04 addi r21,sp,104 + 2a71c: 9006d0fa srli r3,r18,3 + 2a720: 9808977a slli r4,r19,29 + 2a724: 9826d0fa srli r19,r19,3 + 2a728: 948001cc andi r18,r18,7 + 2a72c: 90800c04 addi r2,r18,48 + 2a730: ad7fffc4 addi r21,r21,-1 + 2a734: 20e4b03a or r18,r4,r3 + 2a738: a8800005 stb r2,0(r21) + 2a73c: 94c6b03a or r3,r18,r19 + 2a740: 183ff61e bne r3,zero,2a71c <_gp+0xfffee1e4> + 2a744: a0c0004c andi r3,r20,1 + 2a748: 18005926 beq r3,zero,2a8b0 <___vfiprintf_internal_r+0x87c> + 2a74c: 10803fcc andi r2,r2,255 + 2a750: 1080201c xori r2,r2,128 + 2a754: 10bfe004 addi r2,r2,-128 + 2a758: 00c00c04 movi r3,48 + 2a75c: 10c05426 beq r2,r3,2a8b0 <___vfiprintf_internal_r+0x87c> + 2a760: da801e17 ldw r10,120(sp) + 2a764: a8bfffc4 addi r2,r21,-1 + 2a768: a8ffffc5 stb r3,-1(r21) + 2a76c: 50a7c83a sub r19,r10,r2 + 2a770: 102b883a mov r21,r2 + 2a774: 003f2f06 br 2a434 <_gp+0xfffedefc> + 2a778: 21003fcc andi r4,r4,255 + 2a77c: 2003421e bne r4,zero,2b488 <___vfiprintf_internal_r+0x1454> + 2a780: 008000f4 movhi r2,3 + 2a784: 10880504 addi r2,r2,8212 + 2a788: d8802615 stw r2,152(sp) + 2a78c: a080080c andi r2,r20,32 + 2a790: 1000aa26 beq r2,zero,2aa3c <___vfiprintf_internal_r+0xa08> + 2a794: da802217 ldw r10,136(sp) + 2a798: 54800017 ldw r18,0(r10) + 2a79c: 54c00117 ldw r19,4(r10) + 2a7a0: 52800204 addi r10,r10,8 + 2a7a4: da802215 stw r10,136(sp) + 2a7a8: a080004c andi r2,r20,1 + 2a7ac: 1001d226 beq r2,zero,2aef8 <___vfiprintf_internal_r+0xec4> + 2a7b0: 94c4b03a or r2,r18,r19 + 2a7b4: 1002351e bne r2,zero,2b08c <___vfiprintf_internal_r+0x1058> + 2a7b8: d8001d85 stb zero,118(sp) + 2a7bc: 48022216 blt r9,zero,2b048 <___vfiprintf_internal_r+0x1014> + 2a7c0: 00bfdfc4 movi r2,-129 + 2a7c4: a0a8703a and r20,r20,r2 + 2a7c8: 003f1506 br 2a420 <_gp+0xfffedee8> + 2a7cc: da802217 ldw r10,136(sp) + 2a7d0: 04800044 movi r18,1 + 2a7d4: d8001d85 stb zero,118(sp) + 2a7d8: 50800017 ldw r2,0(r10) + 2a7dc: 52800104 addi r10,r10,4 + 2a7e0: da802215 stw r10,136(sp) + 2a7e4: d8801005 stb r2,64(sp) + 2a7e8: 9027883a mov r19,r18 + 2a7ec: dd401004 addi r21,sp,64 + 2a7f0: 0013883a mov r9,zero + 2a7f4: 003f1706 br 2a454 <_gp+0xfffedf1c> + 2a7f8: 21003fcc andi r4,r4,255 + 2a7fc: 2003201e bne r4,zero,2b480 <___vfiprintf_internal_r+0x144c> + 2a800: a080080c andi r2,r20,32 + 2a804: 10004b26 beq r2,zero,2a934 <___vfiprintf_internal_r+0x900> + 2a808: da802217 ldw r10,136(sp) + 2a80c: 50800117 ldw r2,4(r10) + 2a810: 54800017 ldw r18,0(r10) + 2a814: 52800204 addi r10,r10,8 + 2a818: da802215 stw r10,136(sp) + 2a81c: 1027883a mov r19,r2 + 2a820: 10022c16 blt r2,zero,2b0d4 <___vfiprintf_internal_r+0x10a0> + 2a824: df001d83 ldbu fp,118(sp) + 2a828: 48007216 blt r9,zero,2a9f4 <___vfiprintf_internal_r+0x9c0> + 2a82c: 00ffdfc4 movi r3,-129 + 2a830: 94c4b03a or r2,r18,r19 + 2a834: a0e8703a and r20,r20,r3 + 2a838: 1000cc26 beq r2,zero,2ab6c <___vfiprintf_internal_r+0xb38> + 2a83c: 98021026 beq r19,zero,2b080 <___vfiprintf_internal_r+0x104c> + 2a840: dc402415 stw r17,144(sp) + 2a844: dc002515 stw r16,148(sp) + 2a848: 9823883a mov r17,r19 + 2a84c: 9021883a mov r16,r18 + 2a850: dd401a04 addi r21,sp,104 + 2a854: 4825883a mov r18,r9 + 2a858: 4027883a mov r19,r8 + 2a85c: 8009883a mov r4,r16 + 2a860: 880b883a mov r5,r17 + 2a864: 01800284 movi r6,10 + 2a868: 000f883a mov r7,zero + 2a86c: 002c4140 call 2c414 <__umoddi3> + 2a870: 10800c04 addi r2,r2,48 + 2a874: ad7fffc4 addi r21,r21,-1 + 2a878: 8009883a mov r4,r16 + 2a87c: 880b883a mov r5,r17 + 2a880: a8800005 stb r2,0(r21) + 2a884: 01800284 movi r6,10 + 2a888: 000f883a mov r7,zero + 2a88c: 002be9c0 call 2be9c <__udivdi3> + 2a890: 1021883a mov r16,r2 + 2a894: 10c4b03a or r2,r2,r3 + 2a898: 1823883a mov r17,r3 + 2a89c: 103fef1e bne r2,zero,2a85c <_gp+0xfffee324> + 2a8a0: dc402417 ldw r17,144(sp) + 2a8a4: dc002517 ldw r16,148(sp) + 2a8a8: 9013883a mov r9,r18 + 2a8ac: 9811883a mov r8,r19 + 2a8b0: da801e17 ldw r10,120(sp) + 2a8b4: 5567c83a sub r19,r10,r21 + 2a8b8: 003ede06 br 2a434 <_gp+0xfffedefc> + 2a8bc: 38803fcc andi r2,r7,255 + 2a8c0: 1080201c xori r2,r2,128 + 2a8c4: 10bfe004 addi r2,r2,-128 + 2a8c8: 1002371e bne r2,zero,2b1a8 <___vfiprintf_internal_r+0x1174> + 2a8cc: 01000044 movi r4,1 + 2a8d0: 01c00804 movi r7,32 + 2a8d4: 80c00007 ldb r3,0(r16) + 2a8d8: 003e3506 br 2a1b0 <_gp+0xfffedc78> + 2a8dc: a5000054 ori r20,r20,1 + 2a8e0: 80c00007 ldb r3,0(r16) + 2a8e4: 003e3206 br 2a1b0 <_gp+0xfffedc78> + 2a8e8: a5002014 ori r20,r20,128 + 2a8ec: 80c00007 ldb r3,0(r16) + 2a8f0: 003e2f06 br 2a1b0 <_gp+0xfffedc78> + 2a8f4: 8015883a mov r10,r16 + 2a8f8: 0023883a mov r17,zero + 2a8fc: 18bff404 addi r2,r3,-48 + 2a900: 50c00007 ldb r3,0(r10) + 2a904: 8c4002a4 muli r17,r17,10 + 2a908: 84000044 addi r16,r16,1 + 2a90c: 8015883a mov r10,r16 + 2a910: 1463883a add r17,r2,r17 + 2a914: 18bff404 addi r2,r3,-48 + 2a918: 30bff92e bgeu r6,r2,2a900 <_gp+0xfffee3c8> + 2a91c: 003e2506 br 2a1b4 <_gp+0xfffedc7c> + 2a920: 21003fcc andi r4,r4,255 + 2a924: 2002d41e bne r4,zero,2b478 <___vfiprintf_internal_r+0x1444> + 2a928: a5000414 ori r20,r20,16 + 2a92c: a080080c andi r2,r20,32 + 2a930: 103fb51e bne r2,zero,2a808 <_gp+0xfffee2d0> + 2a934: a080040c andi r2,r20,16 + 2a938: 1001f826 beq r2,zero,2b11c <___vfiprintf_internal_r+0x10e8> + 2a93c: da802217 ldw r10,136(sp) + 2a940: 54800017 ldw r18,0(r10) + 2a944: 52800104 addi r10,r10,4 + 2a948: da802215 stw r10,136(sp) + 2a94c: 9027d7fa srai r19,r18,31 + 2a950: 9805883a mov r2,r19 + 2a954: 003fb206 br 2a820 <_gp+0xfffee2e8> + 2a958: 21003fcc andi r4,r4,255 + 2a95c: 2002c41e bne r4,zero,2b470 <___vfiprintf_internal_r+0x143c> + 2a960: a5000414 ori r20,r20,16 + 2a964: a080080c andi r2,r20,32 + 2a968: 103f5f1e bne r2,zero,2a6e8 <_gp+0xfffee1b0> + 2a96c: a080040c andi r2,r20,16 + 2a970: 10020f26 beq r2,zero,2b1b0 <___vfiprintf_internal_r+0x117c> + 2a974: da802217 ldw r10,136(sp) + 2a978: d8001d85 stb zero,118(sp) + 2a97c: 0027883a mov r19,zero + 2a980: 50800104 addi r2,r10,4 + 2a984: 54800017 ldw r18,0(r10) + 2a988: 48021116 blt r9,zero,2b1d0 <___vfiprintf_internal_r+0x119c> + 2a98c: 00ffdfc4 movi r3,-129 + 2a990: d8802215 stw r2,136(sp) + 2a994: a0e8703a and r20,r20,r3 + 2a998: 903f5e1e bne r18,zero,2a714 <_gp+0xfffee1dc> + 2a99c: 0039883a mov fp,zero + 2a9a0: 4802a626 beq r9,zero,2b43c <___vfiprintf_internal_r+0x1408> + 2a9a4: 0025883a mov r18,zero + 2a9a8: 0027883a mov r19,zero + 2a9ac: 003f5a06 br 2a718 <_gp+0xfffee1e0> + 2a9b0: 21003fcc andi r4,r4,255 + 2a9b4: 20029f1e bne r4,zero,2b434 <___vfiprintf_internal_r+0x1400> + 2a9b8: a5000414 ori r20,r20,16 + 2a9bc: a080080c andi r2,r20,32 + 2a9c0: 10005e1e bne r2,zero,2ab3c <___vfiprintf_internal_r+0xb08> + 2a9c4: a080040c andi r2,r20,16 + 2a9c8: 1001a21e bne r2,zero,2b054 <___vfiprintf_internal_r+0x1020> + 2a9cc: a080100c andi r2,r20,64 + 2a9d0: d8001d85 stb zero,118(sp) + 2a9d4: da802217 ldw r10,136(sp) + 2a9d8: 1002231e bne r2,zero,2b268 <___vfiprintf_internal_r+0x1234> + 2a9dc: 50800104 addi r2,r10,4 + 2a9e0: 54800017 ldw r18,0(r10) + 2a9e4: 0027883a mov r19,zero + 2a9e8: 4801a00e bge r9,zero,2b06c <___vfiprintf_internal_r+0x1038> + 2a9ec: d8802215 stw r2,136(sp) + 2a9f0: 0039883a mov fp,zero + 2a9f4: 94c4b03a or r2,r18,r19 + 2a9f8: 103f901e bne r2,zero,2a83c <_gp+0xfffee304> + 2a9fc: 00800044 movi r2,1 + 2aa00: 10803fcc andi r2,r2,255 + 2aa04: 00c00044 movi r3,1 + 2aa08: 10c05926 beq r2,r3,2ab70 <___vfiprintf_internal_r+0xb3c> + 2aa0c: 00c00084 movi r3,2 + 2aa10: 10ffe41e bne r2,r3,2a9a4 <_gp+0xfffee46c> + 2aa14: 0025883a mov r18,zero + 2aa18: 0027883a mov r19,zero + 2aa1c: 00013d06 br 2af14 <___vfiprintf_internal_r+0xee0> + 2aa20: 21003fcc andi r4,r4,255 + 2aa24: 2002811e bne r4,zero,2b42c <___vfiprintf_internal_r+0x13f8> + 2aa28: 008000f4 movhi r2,3 + 2aa2c: 10880004 addi r2,r2,8192 + 2aa30: d8802615 stw r2,152(sp) + 2aa34: a080080c andi r2,r20,32 + 2aa38: 103f561e bne r2,zero,2a794 <_gp+0xfffee25c> + 2aa3c: a080040c andi r2,r20,16 + 2aa40: 1001d126 beq r2,zero,2b188 <___vfiprintf_internal_r+0x1154> + 2aa44: da802217 ldw r10,136(sp) + 2aa48: 0027883a mov r19,zero + 2aa4c: 54800017 ldw r18,0(r10) + 2aa50: 52800104 addi r10,r10,4 + 2aa54: da802215 stw r10,136(sp) + 2aa58: 003f5306 br 2a7a8 <_gp+0xfffee270> + 2aa5c: da802217 ldw r10,136(sp) + 2aa60: d8001d85 stb zero,118(sp) + 2aa64: 55400017 ldw r21,0(r10) + 2aa68: 50c00104 addi r3,r10,4 + 2aa6c: a8024226 beq r21,zero,2b378 <___vfiprintf_internal_r+0x1344> + 2aa70: 48021816 blt r9,zero,2b2d4 <___vfiprintf_internal_r+0x12a0> + 2aa74: 480d883a mov r6,r9 + 2aa78: 000b883a mov r5,zero + 2aa7c: a809883a mov r4,r21 + 2aa80: d8c02a15 stw r3,168(sp) + 2aa84: da002b15 stw r8,172(sp) + 2aa88: da402c15 stw r9,176(sp) + 2aa8c: 00282440 call 28244 + 2aa90: d8c02a17 ldw r3,168(sp) + 2aa94: da002b17 ldw r8,172(sp) + 2aa98: da402c17 ldw r9,176(sp) + 2aa9c: 10024826 beq r2,zero,2b3c0 <___vfiprintf_internal_r+0x138c> + 2aaa0: 1567c83a sub r19,r2,r21 + 2aaa4: df001d83 ldbu fp,118(sp) + 2aaa8: d8c02215 stw r3,136(sp) + 2aaac: 0013883a mov r9,zero + 2aab0: 003e6006 br 2a434 <_gp+0xfffedefc> + 2aab4: 21003fcc andi r4,r4,255 + 2aab8: 203fc026 beq r4,zero,2a9bc <_gp+0xfffee484> + 2aabc: d9c01d85 stb r7,118(sp) + 2aac0: 003fbe06 br 2a9bc <_gp+0xfffee484> + 2aac4: da802217 ldw r10,136(sp) + 2aac8: 54400017 ldw r17,0(r10) + 2aacc: 50800104 addi r2,r10,4 + 2aad0: 883e3b16 blt r17,zero,2a3c0 <_gp+0xfffede88> + 2aad4: d8802215 stw r2,136(sp) + 2aad8: 80c00007 ldb r3,0(r16) + 2aadc: 003db406 br 2a1b0 <_gp+0xfffedc78> + 2aae0: 01000044 movi r4,1 + 2aae4: 01c00ac4 movi r7,43 + 2aae8: 80c00007 ldb r3,0(r16) + 2aaec: 003db006 br 2a1b0 <_gp+0xfffedc78> + 2aaf0: 80c00007 ldb r3,0(r16) + 2aaf4: 82800044 addi r10,r16,1 + 2aaf8: 1b423c26 beq r3,r13,2b3ec <___vfiprintf_internal_r+0x13b8> + 2aafc: 18bff404 addi r2,r3,-48 + 2ab00: 0013883a mov r9,zero + 2ab04: 30822b36 bltu r6,r2,2b3b4 <___vfiprintf_internal_r+0x1380> + 2ab08: 50c00007 ldb r3,0(r10) + 2ab0c: 4a4002a4 muli r9,r9,10 + 2ab10: 54000044 addi r16,r10,1 + 2ab14: 8015883a mov r10,r16 + 2ab18: 4893883a add r9,r9,r2 + 2ab1c: 18bff404 addi r2,r3,-48 + 2ab20: 30bff92e bgeu r6,r2,2ab08 <_gp+0xfffee5d0> + 2ab24: 483da30e bge r9,zero,2a1b4 <_gp+0xfffedc7c> + 2ab28: 027fffc4 movi r9,-1 + 2ab2c: 003da106 br 2a1b4 <_gp+0xfffedc7c> + 2ab30: a5001014 ori r20,r20,64 + 2ab34: 80c00007 ldb r3,0(r16) + 2ab38: 003d9d06 br 2a1b0 <_gp+0xfffedc78> + 2ab3c: da802217 ldw r10,136(sp) + 2ab40: d8001d85 stb zero,118(sp) + 2ab44: 50c00204 addi r3,r10,8 + 2ab48: 54800017 ldw r18,0(r10) + 2ab4c: 54c00117 ldw r19,4(r10) + 2ab50: 4801ca16 blt r9,zero,2b27c <___vfiprintf_internal_r+0x1248> + 2ab54: 013fdfc4 movi r4,-129 + 2ab58: 94c4b03a or r2,r18,r19 + 2ab5c: d8c02215 stw r3,136(sp) + 2ab60: a128703a and r20,r20,r4 + 2ab64: 0039883a mov fp,zero + 2ab68: 103f341e bne r2,zero,2a83c <_gp+0xfffee304> + 2ab6c: 483e2e26 beq r9,zero,2a428 <_gp+0xfffedef0> + 2ab70: 0025883a mov r18,zero + 2ab74: 94800c04 addi r18,r18,48 + 2ab78: dc8019c5 stb r18,103(sp) + 2ab7c: dcc02717 ldw r19,156(sp) + 2ab80: dd4019c4 addi r21,sp,103 + 2ab84: 003e2b06 br 2a434 <_gp+0xfffedefc> + 2ab88: 21003fcc andi r4,r4,255 + 2ab8c: 2002361e bne r4,zero,2b468 <___vfiprintf_internal_r+0x1434> + 2ab90: 1801c126 beq r3,zero,2b298 <___vfiprintf_internal_r+0x1264> + 2ab94: 04800044 movi r18,1 + 2ab98: d8c01005 stb r3,64(sp) + 2ab9c: d8001d85 stb zero,118(sp) + 2aba0: 9027883a mov r19,r18 + 2aba4: dd401004 addi r21,sp,64 + 2aba8: 003f1106 br 2a7f0 <_gp+0xfffee2b8> + 2abac: d9402117 ldw r5,132(sp) + 2abb0: d9002017 ldw r4,128(sp) + 2abb4: d9801a04 addi r6,sp,104 + 2abb8: d9c02b15 stw r7,172(sp) + 2abbc: dbc02a15 stw r15,168(sp) + 2abc0: 0029f200 call 29f20 <__sprint_r.part.0> + 2abc4: d9c02b17 ldw r7,172(sp) + 2abc8: dbc02a17 ldw r15,168(sp) + 2abcc: 10006d1e bne r2,zero,2ad84 <___vfiprintf_internal_r+0xd50> + 2abd0: d9801b17 ldw r6,108(sp) + 2abd4: d8801c17 ldw r2,112(sp) + 2abd8: d811883a mov r8,sp + 2abdc: 31400044 addi r5,r6,1 + 2abe0: 003e3306 br 2a4b0 <_gp+0xfffedf78> + 2abe4: d9401b17 ldw r5,108(sp) + 2abe8: d8801c17 ldw r2,112(sp) + 2abec: 29000044 addi r4,r5,1 + 2abf0: d8c01d87 ldb r3,118(sp) + 2abf4: 183e4d26 beq r3,zero,2a52c <_gp+0xfffedff4> + 2abf8: 00c00044 movi r3,1 + 2abfc: d9401d84 addi r5,sp,118 + 2ac00: 10c5883a add r2,r2,r3 + 2ac04: 41400015 stw r5,0(r8) + 2ac08: 40c00115 stw r3,4(r8) + 2ac0c: d8801c15 stw r2,112(sp) + 2ac10: d9001b15 stw r4,108(sp) + 2ac14: 014001c4 movi r5,7 + 2ac18: 2900a90e bge r5,r4,2aec0 <___vfiprintf_internal_r+0xe8c> + 2ac1c: 1000da1e bne r2,zero,2af88 <___vfiprintf_internal_r+0xf54> + 2ac20: 7000ab1e bne r14,zero,2aed0 <___vfiprintf_internal_r+0xe9c> + 2ac24: 000b883a mov r5,zero + 2ac28: 1809883a mov r4,r3 + 2ac2c: d811883a mov r8,sp + 2ac30: 00c02004 movi r3,128 + 2ac34: e0fe4d26 beq fp,r3,2a56c <_gp+0xfffee034> + 2ac38: 4cf9c83a sub fp,r9,r19 + 2ac3c: 073e7b0e bge zero,fp,2a62c <_gp+0xfffee0f4> + 2ac40: 01c00404 movi r7,16 + 2ac44: 3f01900e bge r7,fp,2b288 <___vfiprintf_internal_r+0x1254> + 2ac48: 00c000f4 movhi r3,3 + 2ac4c: 18c86604 addi r3,r3,8600 + 2ac50: d8c02415 stw r3,144(sp) + 2ac54: 034001c4 movi r13,7 + 2ac58: 00000506 br 2ac70 <___vfiprintf_internal_r+0xc3c> + 2ac5c: 29000084 addi r4,r5,2 + 2ac60: 42000204 addi r8,r8,8 + 2ac64: 180b883a mov r5,r3 + 2ac68: e73ffc04 addi fp,fp,-16 + 2ac6c: 3f000d0e bge r7,fp,2aca4 <___vfiprintf_internal_r+0xc70> + 2ac70: 10800404 addi r2,r2,16 + 2ac74: 28c00044 addi r3,r5,1 + 2ac78: 45c00015 stw r23,0(r8) + 2ac7c: 41c00115 stw r7,4(r8) + 2ac80: d8801c15 stw r2,112(sp) + 2ac84: d8c01b15 stw r3,108(sp) + 2ac88: 68fff40e bge r13,r3,2ac5c <_gp+0xfffee724> + 2ac8c: 1000101e bne r2,zero,2acd0 <___vfiprintf_internal_r+0xc9c> + 2ac90: e73ffc04 addi fp,fp,-16 + 2ac94: 01000044 movi r4,1 + 2ac98: 000b883a mov r5,zero + 2ac9c: d811883a mov r8,sp + 2aca0: 3f3ff316 blt r7,fp,2ac70 <_gp+0xfffee738> + 2aca4: da802417 ldw r10,144(sp) + 2aca8: 1705883a add r2,r2,fp + 2acac: 47000115 stw fp,4(r8) + 2acb0: 42800015 stw r10,0(r8) + 2acb4: d8801c15 stw r2,112(sp) + 2acb8: d9001b15 stw r4,108(sp) + 2acbc: 00c001c4 movi r3,7 + 2acc0: 19003616 blt r3,r4,2ad9c <___vfiprintf_internal_r+0xd68> + 2acc4: 42000204 addi r8,r8,8 + 2acc8: 21000044 addi r4,r4,1 + 2accc: 003e5706 br 2a62c <_gp+0xfffee0f4> + 2acd0: d9402117 ldw r5,132(sp) + 2acd4: d9002017 ldw r4,128(sp) + 2acd8: d9801a04 addi r6,sp,104 + 2acdc: d9c02b15 stw r7,172(sp) + 2ace0: db402a15 stw r13,168(sp) + 2ace4: 0029f200 call 29f20 <__sprint_r.part.0> + 2ace8: d9c02b17 ldw r7,172(sp) + 2acec: db402a17 ldw r13,168(sp) + 2acf0: 1000241e bne r2,zero,2ad84 <___vfiprintf_internal_r+0xd50> + 2acf4: d9401b17 ldw r5,108(sp) + 2acf8: d8801c17 ldw r2,112(sp) + 2acfc: d811883a mov r8,sp + 2ad00: 29000044 addi r4,r5,1 + 2ad04: 003fd806 br 2ac68 <_gp+0xfffee730> + 2ad08: d9401b17 ldw r5,108(sp) + 2ad0c: 00c000f4 movhi r3,3 + 2ad10: 18c86a04 addi r3,r3,8616 + 2ad14: d8c02415 stw r3,144(sp) + 2ad18: 29400044 addi r5,r5,1 + 2ad1c: d8c02417 ldw r3,144(sp) + 2ad20: 14c5883a add r2,r2,r19 + 2ad24: 44c00115 stw r19,4(r8) + 2ad28: 40c00015 stw r3,0(r8) + 2ad2c: d8801c15 stw r2,112(sp) + 2ad30: d9401b15 stw r5,108(sp) + 2ad34: 00c001c4 movi r3,7 + 2ad38: 1940070e bge r3,r5,2ad58 <___vfiprintf_internal_r+0xd24> + 2ad3c: 103e4826 beq r2,zero,2a660 <_gp+0xfffee128> + 2ad40: d9402117 ldw r5,132(sp) + 2ad44: d9002017 ldw r4,128(sp) + 2ad48: d9801a04 addi r6,sp,104 + 2ad4c: 0029f200 call 29f20 <__sprint_r.part.0> + 2ad50: 10000c1e bne r2,zero,2ad84 <___vfiprintf_internal_r+0xd50> + 2ad54: d8801c17 ldw r2,112(sp) + 2ad58: 8c80010e bge r17,r18,2ad60 <___vfiprintf_internal_r+0xd2c> + 2ad5c: 9023883a mov r17,r18 + 2ad60: da802317 ldw r10,140(sp) + 2ad64: 5455883a add r10,r10,r17 + 2ad68: da802315 stw r10,140(sp) + 2ad6c: 103e4126 beq r2,zero,2a674 <_gp+0xfffee13c> + 2ad70: d9402117 ldw r5,132(sp) + 2ad74: d9002017 ldw r4,128(sp) + 2ad78: d9801a04 addi r6,sp,104 + 2ad7c: 0029f200 call 29f20 <__sprint_r.part.0> + 2ad80: 103e3c26 beq r2,zero,2a674 <_gp+0xfffee13c> + 2ad84: dd002117 ldw r20,132(sp) + 2ad88: a080030b ldhu r2,12(r20) + 2ad8c: 1080100c andi r2,r2,64 + 2ad90: 1001231e bne r2,zero,2b220 <___vfiprintf_internal_r+0x11ec> + 2ad94: d8802317 ldw r2,140(sp) + 2ad98: 003d7b06 br 2a388 <_gp+0xfffede50> + 2ad9c: 1000991e bne r2,zero,2b004 <___vfiprintf_internal_r+0xfd0> + 2ada0: 00c00044 movi r3,1 + 2ada4: 9805883a mov r2,r19 + 2ada8: dd400015 stw r21,0(sp) + 2adac: dcc00115 stw r19,4(sp) + 2adb0: dcc01c15 stw r19,112(sp) + 2adb4: d8c01b15 stw r3,108(sp) + 2adb8: d811883a mov r8,sp + 2adbc: 42000204 addi r8,r8,8 + 2adc0: a2c0010c andi r11,r20,4 + 2adc4: 583fe426 beq r11,zero,2ad58 <_gp+0xfffee820> + 2adc8: 8ca7c83a sub r19,r17,r18 + 2adcc: 04ffe20e bge zero,r19,2ad58 <_gp+0xfffee820> + 2add0: 01c00404 movi r7,16 + 2add4: 3cffcc0e bge r7,r19,2ad08 <_gp+0xfffee7d0> + 2add8: 028000f4 movhi r10,3 + 2addc: 52886a04 addi r10,r10,8616 + 2ade0: d9001b17 ldw r4,108(sp) + 2ade4: da802415 stw r10,144(sp) + 2ade8: 382b883a mov r21,r7 + 2adec: 050001c4 movi r20,7 + 2adf0: df002017 ldw fp,128(sp) + 2adf4: 00000506 br 2ae0c <___vfiprintf_internal_r+0xdd8> + 2adf8: 21400084 addi r5,r4,2 + 2adfc: 42000204 addi r8,r8,8 + 2ae00: 1809883a mov r4,r3 + 2ae04: 9cfffc04 addi r19,r19,-16 + 2ae08: acffc40e bge r21,r19,2ad1c <_gp+0xfffee7e4> + 2ae0c: 10800404 addi r2,r2,16 + 2ae10: 20c00044 addi r3,r4,1 + 2ae14: 45800015 stw r22,0(r8) + 2ae18: 45400115 stw r21,4(r8) + 2ae1c: d8801c15 stw r2,112(sp) + 2ae20: d8c01b15 stw r3,108(sp) + 2ae24: a0fff40e bge r20,r3,2adf8 <_gp+0xfffee8c0> + 2ae28: 1000041e bne r2,zero,2ae3c <___vfiprintf_internal_r+0xe08> + 2ae2c: 01400044 movi r5,1 + 2ae30: 0009883a mov r4,zero + 2ae34: d811883a mov r8,sp + 2ae38: 003ff206 br 2ae04 <_gp+0xfffee8cc> + 2ae3c: d9402117 ldw r5,132(sp) + 2ae40: d9801a04 addi r6,sp,104 + 2ae44: e009883a mov r4,fp + 2ae48: 0029f200 call 29f20 <__sprint_r.part.0> + 2ae4c: 103fcd1e bne r2,zero,2ad84 <_gp+0xfffee84c> + 2ae50: d9001b17 ldw r4,108(sp) + 2ae54: d8801c17 ldw r2,112(sp) + 2ae58: d811883a mov r8,sp + 2ae5c: 21400044 addi r5,r4,1 + 2ae60: 003fe806 br 2ae04 <_gp+0xfffee8cc> + 2ae64: d9402117 ldw r5,132(sp) + 2ae68: d9002017 ldw r4,128(sp) + 2ae6c: d9801a04 addi r6,sp,104 + 2ae70: d9c02b15 stw r7,172(sp) + 2ae74: db402a15 stw r13,168(sp) + 2ae78: 0029f200 call 29f20 <__sprint_r.part.0> + 2ae7c: d9c02b17 ldw r7,172(sp) + 2ae80: db402a17 ldw r13,168(sp) + 2ae84: 103fbf1e bne r2,zero,2ad84 <_gp+0xfffee84c> + 2ae88: d9401b17 ldw r5,108(sp) + 2ae8c: d8801c17 ldw r2,112(sp) + 2ae90: d811883a mov r8,sp + 2ae94: 29800044 addi r6,r5,1 + 2ae98: 003dc406 br 2a5ac <_gp+0xfffee074> + 2ae9c: 1000d21e bne r2,zero,2b1e8 <___vfiprintf_internal_r+0x11b4> + 2aea0: d8c01d87 ldb r3,118(sp) + 2aea4: 18009526 beq r3,zero,2b0fc <___vfiprintf_internal_r+0x10c8> + 2aea8: 00800044 movi r2,1 + 2aeac: d8c01d84 addi r3,sp,118 + 2aeb0: 1009883a mov r4,r2 + 2aeb4: d8c00015 stw r3,0(sp) + 2aeb8: d8800115 stw r2,4(sp) + 2aebc: d811883a mov r8,sp + 2aec0: 200b883a mov r5,r4 + 2aec4: 42000204 addi r8,r8,8 + 2aec8: 21000044 addi r4,r4,1 + 2aecc: 003d9706 br 2a52c <_gp+0xfffedff4> + 2aed0: d9001d04 addi r4,sp,116 + 2aed4: 00800084 movi r2,2 + 2aed8: d9000015 stw r4,0(sp) + 2aedc: d8800115 stw r2,4(sp) + 2aee0: 1809883a mov r4,r3 + 2aee4: d811883a mov r8,sp + 2aee8: 200b883a mov r5,r4 + 2aeec: 42000204 addi r8,r8,8 + 2aef0: 21000044 addi r4,r4,1 + 2aef4: 003f4e06 br 2ac30 <_gp+0xfffee6f8> + 2aef8: d8001d85 stb zero,118(sp) + 2aefc: 48005016 blt r9,zero,2b040 <___vfiprintf_internal_r+0x100c> + 2af00: 00ffdfc4 movi r3,-129 + 2af04: 94c4b03a or r2,r18,r19 + 2af08: a0e8703a and r20,r20,r3 + 2af0c: 103d4426 beq r2,zero,2a420 <_gp+0xfffedee8> + 2af10: 0039883a mov fp,zero + 2af14: d9002617 ldw r4,152(sp) + 2af18: dd401a04 addi r21,sp,104 + 2af1c: 908003cc andi r2,r18,15 + 2af20: 9806973a slli r3,r19,28 + 2af24: 2085883a add r2,r4,r2 + 2af28: 9024d13a srli r18,r18,4 + 2af2c: 10800003 ldbu r2,0(r2) + 2af30: 9826d13a srli r19,r19,4 + 2af34: ad7fffc4 addi r21,r21,-1 + 2af38: 1ca4b03a or r18,r3,r18 + 2af3c: a8800005 stb r2,0(r21) + 2af40: 94c4b03a or r2,r18,r19 + 2af44: 103ff51e bne r2,zero,2af1c <_gp+0xfffee9e4> + 2af48: 003e5906 br 2a8b0 <_gp+0xfffee378> + 2af4c: d9402117 ldw r5,132(sp) + 2af50: d9002017 ldw r4,128(sp) + 2af54: d9801a04 addi r6,sp,104 + 2af58: 0029f200 call 29f20 <__sprint_r.part.0> + 2af5c: 103f891e bne r2,zero,2ad84 <_gp+0xfffee84c> + 2af60: d8801c17 ldw r2,112(sp) + 2af64: d811883a mov r8,sp + 2af68: 003f9506 br 2adc0 <_gp+0xfffee888> + 2af6c: d9402117 ldw r5,132(sp) + 2af70: d9002017 ldw r4,128(sp) + 2af74: d9801a04 addi r6,sp,104 + 2af78: 0029f200 call 29f20 <__sprint_r.part.0> + 2af7c: 103f811e bne r2,zero,2ad84 <_gp+0xfffee84c> + 2af80: d811883a mov r8,sp + 2af84: 003ced06 br 2a33c <_gp+0xfffede04> + 2af88: d9402117 ldw r5,132(sp) + 2af8c: d9002017 ldw r4,128(sp) + 2af90: d9801a04 addi r6,sp,104 + 2af94: da402c15 stw r9,176(sp) + 2af98: db802a15 stw r14,168(sp) + 2af9c: 0029f200 call 29f20 <__sprint_r.part.0> + 2afa0: da402c17 ldw r9,176(sp) + 2afa4: db802a17 ldw r14,168(sp) + 2afa8: 103f761e bne r2,zero,2ad84 <_gp+0xfffee84c> + 2afac: d9401b17 ldw r5,108(sp) + 2afb0: d8801c17 ldw r2,112(sp) + 2afb4: d811883a mov r8,sp + 2afb8: 29000044 addi r4,r5,1 + 2afbc: 003d5b06 br 2a52c <_gp+0xfffedff4> + 2afc0: d9402117 ldw r5,132(sp) + 2afc4: d9002017 ldw r4,128(sp) + 2afc8: d9801a04 addi r6,sp,104 + 2afcc: da402c15 stw r9,176(sp) + 2afd0: 0029f200 call 29f20 <__sprint_r.part.0> + 2afd4: da402c17 ldw r9,176(sp) + 2afd8: 103f6a1e bne r2,zero,2ad84 <_gp+0xfffee84c> + 2afdc: d9401b17 ldw r5,108(sp) + 2afe0: d8801c17 ldw r2,112(sp) + 2afe4: d811883a mov r8,sp + 2afe8: 29000044 addi r4,r5,1 + 2afec: 003f1006 br 2ac30 <_gp+0xfffee6f8> + 2aff0: 1000c31e bne r2,zero,2b300 <___vfiprintf_internal_r+0x12cc> + 2aff4: 01000044 movi r4,1 + 2aff8: 000b883a mov r5,zero + 2affc: d811883a mov r8,sp + 2b000: 003f0d06 br 2ac38 <_gp+0xfffee700> + 2b004: d9402117 ldw r5,132(sp) + 2b008: d9002017 ldw r4,128(sp) + 2b00c: d9801a04 addi r6,sp,104 + 2b010: 0029f200 call 29f20 <__sprint_r.part.0> + 2b014: 103f5b1e bne r2,zero,2ad84 <_gp+0xfffee84c> + 2b018: d9001b17 ldw r4,108(sp) + 2b01c: d8801c17 ldw r2,112(sp) + 2b020: d811883a mov r8,sp + 2b024: 21000044 addi r4,r4,1 + 2b028: 003d8006 br 2a62c <_gp+0xfffee0f4> + 2b02c: 010000f4 movhi r4,3 + 2b030: 21080504 addi r4,r4,8212 + 2b034: d9002615 stw r4,152(sp) + 2b038: d8c02215 stw r3,136(sp) + 2b03c: 1029883a mov r20,r2 + 2b040: 94c4b03a or r2,r18,r19 + 2b044: 103fb21e bne r2,zero,2af10 <_gp+0xfffee9d8> + 2b048: 0039883a mov fp,zero + 2b04c: 00800084 movi r2,2 + 2b050: 003e6b06 br 2aa00 <_gp+0xfffee4c8> + 2b054: da802217 ldw r10,136(sp) + 2b058: d8001d85 stb zero,118(sp) + 2b05c: 0027883a mov r19,zero + 2b060: 50800104 addi r2,r10,4 + 2b064: 54800017 ldw r18,0(r10) + 2b068: 483e6016 blt r9,zero,2a9ec <_gp+0xfffee4b4> + 2b06c: 00ffdfc4 movi r3,-129 + 2b070: d8802215 stw r2,136(sp) + 2b074: a0e8703a and r20,r20,r3 + 2b078: 0039883a mov fp,zero + 2b07c: 903ebb26 beq r18,zero,2ab6c <_gp+0xfffee634> + 2b080: 00800244 movi r2,9 + 2b084: 14bdee36 bltu r2,r18,2a840 <_gp+0xfffee308> + 2b088: 003eba06 br 2ab74 <_gp+0xfffee63c> + 2b08c: 00800c04 movi r2,48 + 2b090: d8c01d45 stb r3,117(sp) + 2b094: d8801d05 stb r2,116(sp) + 2b098: d8001d85 stb zero,118(sp) + 2b09c: a0c00094 ori r3,r20,2 + 2b0a0: 4800a916 blt r9,zero,2b348 <___vfiprintf_internal_r+0x1314> + 2b0a4: 00bfdfc4 movi r2,-129 + 2b0a8: a096703a and r11,r20,r2 + 2b0ac: 5d000094 ori r20,r11,2 + 2b0b0: 0039883a mov fp,zero + 2b0b4: 003f9706 br 2af14 <_gp+0xfffee9dc> + 2b0b8: 8025883a mov r18,r16 + 2b0bc: 003c2e06 br 2a178 <_gp+0xfffedc40> + 2b0c0: 008000f4 movhi r2,3 + 2b0c4: 10880504 addi r2,r2,8212 + 2b0c8: 0039883a mov fp,zero + 2b0cc: d8802615 stw r2,152(sp) + 2b0d0: 003f9006 br 2af14 <_gp+0xfffee9dc> + 2b0d4: 04a5c83a sub r18,zero,r18 + 2b0d8: 07000b44 movi fp,45 + 2b0dc: 9004c03a cmpne r2,r18,zero + 2b0e0: 04e7c83a sub r19,zero,r19 + 2b0e4: df001d85 stb fp,118(sp) + 2b0e8: 98a7c83a sub r19,r19,r2 + 2b0ec: 48009f16 blt r9,zero,2b36c <___vfiprintf_internal_r+0x1338> + 2b0f0: 00bfdfc4 movi r2,-129 + 2b0f4: a0a8703a and r20,r20,r2 + 2b0f8: 003dd006 br 2a83c <_gp+0xfffee304> + 2b0fc: 70004c26 beq r14,zero,2b230 <___vfiprintf_internal_r+0x11fc> + 2b100: 00800084 movi r2,2 + 2b104: d8c01d04 addi r3,sp,116 + 2b108: d8c00015 stw r3,0(sp) + 2b10c: d8800115 stw r2,4(sp) + 2b110: 01000044 movi r4,1 + 2b114: d811883a mov r8,sp + 2b118: 003f7306 br 2aee8 <_gp+0xfffee9b0> + 2b11c: a080100c andi r2,r20,64 + 2b120: da802217 ldw r10,136(sp) + 2b124: 103e0626 beq r2,zero,2a940 <_gp+0xfffee408> + 2b128: 5480000f ldh r18,0(r10) + 2b12c: 52800104 addi r10,r10,4 + 2b130: da802215 stw r10,136(sp) + 2b134: 9027d7fa srai r19,r18,31 + 2b138: 9805883a mov r2,r19 + 2b13c: 003db806 br 2a820 <_gp+0xfffee2e8> + 2b140: a080040c andi r2,r20,16 + 2b144: 1000091e bne r2,zero,2b16c <___vfiprintf_internal_r+0x1138> + 2b148: a2c0100c andi r11,r20,64 + 2b14c: 58000726 beq r11,zero,2b16c <___vfiprintf_internal_r+0x1138> + 2b150: da802217 ldw r10,136(sp) + 2b154: 50800017 ldw r2,0(r10) + 2b158: 52800104 addi r10,r10,4 + 2b15c: da802215 stw r10,136(sp) + 2b160: da802317 ldw r10,140(sp) + 2b164: 1280000d sth r10,0(r2) + 2b168: 003be706 br 2a108 <_gp+0xfffedbd0> + 2b16c: da802217 ldw r10,136(sp) + 2b170: 50800017 ldw r2,0(r10) + 2b174: 52800104 addi r10,r10,4 + 2b178: da802215 stw r10,136(sp) + 2b17c: da802317 ldw r10,140(sp) + 2b180: 12800015 stw r10,0(r2) + 2b184: 003be006 br 2a108 <_gp+0xfffedbd0> + 2b188: a080100c andi r2,r20,64 + 2b18c: da802217 ldw r10,136(sp) + 2b190: 10003026 beq r2,zero,2b254 <___vfiprintf_internal_r+0x1220> + 2b194: 5480000b ldhu r18,0(r10) + 2b198: 52800104 addi r10,r10,4 + 2b19c: 0027883a mov r19,zero + 2b1a0: da802215 stw r10,136(sp) + 2b1a4: 003d8006 br 2a7a8 <_gp+0xfffee270> + 2b1a8: 80c00007 ldb r3,0(r16) + 2b1ac: 003c0006 br 2a1b0 <_gp+0xfffedc78> + 2b1b0: a080100c andi r2,r20,64 + 2b1b4: d8001d85 stb zero,118(sp) + 2b1b8: da802217 ldw r10,136(sp) + 2b1bc: 1000201e bne r2,zero,2b240 <___vfiprintf_internal_r+0x120c> + 2b1c0: 50800104 addi r2,r10,4 + 2b1c4: 54800017 ldw r18,0(r10) + 2b1c8: 0027883a mov r19,zero + 2b1cc: 483def0e bge r9,zero,2a98c <_gp+0xfffee454> + 2b1d0: 94c6b03a or r3,r18,r19 + 2b1d4: d8802215 stw r2,136(sp) + 2b1d8: 183d4e1e bne r3,zero,2a714 <_gp+0xfffee1dc> + 2b1dc: 0039883a mov fp,zero + 2b1e0: 0005883a mov r2,zero + 2b1e4: 003e0606 br 2aa00 <_gp+0xfffee4c8> + 2b1e8: d9402117 ldw r5,132(sp) + 2b1ec: d9002017 ldw r4,128(sp) + 2b1f0: d9801a04 addi r6,sp,104 + 2b1f4: da402c15 stw r9,176(sp) + 2b1f8: db802a15 stw r14,168(sp) + 2b1fc: 0029f200 call 29f20 <__sprint_r.part.0> + 2b200: da402c17 ldw r9,176(sp) + 2b204: db802a17 ldw r14,168(sp) + 2b208: 103ede1e bne r2,zero,2ad84 <_gp+0xfffee84c> + 2b20c: d9401b17 ldw r5,108(sp) + 2b210: d8801c17 ldw r2,112(sp) + 2b214: d811883a mov r8,sp + 2b218: 29000044 addi r4,r5,1 + 2b21c: 003e7406 br 2abf0 <_gp+0xfffee6b8> + 2b220: 00bfffc4 movi r2,-1 + 2b224: 003c5806 br 2a388 <_gp+0xfffede50> + 2b228: d811883a mov r8,sp + 2b22c: 003ee806 br 2add0 <_gp+0xfffee898> + 2b230: 000b883a mov r5,zero + 2b234: 01000044 movi r4,1 + 2b238: d811883a mov r8,sp + 2b23c: 003e7c06 br 2ac30 <_gp+0xfffee6f8> + 2b240: 50800104 addi r2,r10,4 + 2b244: 5480000b ldhu r18,0(r10) + 2b248: 0027883a mov r19,zero + 2b24c: 483dcf0e bge r9,zero,2a98c <_gp+0xfffee454> + 2b250: 003fdf06 br 2b1d0 <_gp+0xfffeec98> + 2b254: 54800017 ldw r18,0(r10) + 2b258: 52800104 addi r10,r10,4 + 2b25c: 0027883a mov r19,zero + 2b260: da802215 stw r10,136(sp) + 2b264: 003d5006 br 2a7a8 <_gp+0xfffee270> + 2b268: 50800104 addi r2,r10,4 + 2b26c: 5480000b ldhu r18,0(r10) + 2b270: 0027883a mov r19,zero + 2b274: 483f7d0e bge r9,zero,2b06c <_gp+0xfffeeb34> + 2b278: 003ddc06 br 2a9ec <_gp+0xfffee4b4> + 2b27c: d8c02215 stw r3,136(sp) + 2b280: 0039883a mov fp,zero + 2b284: 003ddb06 br 2a9f4 <_gp+0xfffee4bc> + 2b288: 028000f4 movhi r10,3 + 2b28c: 52886604 addi r10,r10,8600 + 2b290: da802415 stw r10,144(sp) + 2b294: 003e8306 br 2aca4 <_gp+0xfffee76c> + 2b298: d8801c17 ldw r2,112(sp) + 2b29c: dd002117 ldw r20,132(sp) + 2b2a0: 103eb926 beq r2,zero,2ad88 <_gp+0xfffee850> + 2b2a4: d9002017 ldw r4,128(sp) + 2b2a8: d9801a04 addi r6,sp,104 + 2b2ac: a00b883a mov r5,r20 + 2b2b0: 0029f200 call 29f20 <__sprint_r.part.0> + 2b2b4: 003eb406 br 2ad88 <_gp+0xfffee850> + 2b2b8: 80c00043 ldbu r3,1(r16) + 2b2bc: a5000814 ori r20,r20,32 + 2b2c0: 84000044 addi r16,r16,1 + 2b2c4: 18c03fcc andi r3,r3,255 + 2b2c8: 18c0201c xori r3,r3,128 + 2b2cc: 18ffe004 addi r3,r3,-128 + 2b2d0: 003bb706 br 2a1b0 <_gp+0xfffedc78> + 2b2d4: a809883a mov r4,r21 + 2b2d8: d8c02a15 stw r3,168(sp) + 2b2dc: da002b15 stw r8,172(sp) + 2b2e0: 00231a80 call 231a8 + 2b2e4: d8c02a17 ldw r3,168(sp) + 2b2e8: 1027883a mov r19,r2 + 2b2ec: df001d83 ldbu fp,118(sp) + 2b2f0: d8c02215 stw r3,136(sp) + 2b2f4: 0013883a mov r9,zero + 2b2f8: da002b17 ldw r8,172(sp) + 2b2fc: 003c4d06 br 2a434 <_gp+0xfffedefc> + 2b300: d9402117 ldw r5,132(sp) + 2b304: d9002017 ldw r4,128(sp) + 2b308: d9801a04 addi r6,sp,104 + 2b30c: da402c15 stw r9,176(sp) + 2b310: 0029f200 call 29f20 <__sprint_r.part.0> + 2b314: da402c17 ldw r9,176(sp) + 2b318: 103e9a1e bne r2,zero,2ad84 <_gp+0xfffee84c> + 2b31c: d9401b17 ldw r5,108(sp) + 2b320: d8801c17 ldw r2,112(sp) + 2b324: d811883a mov r8,sp + 2b328: 29000044 addi r4,r5,1 + 2b32c: 003e4206 br 2ac38 <_gp+0xfffee700> + 2b330: d9401b17 ldw r5,108(sp) + 2b334: 010000f4 movhi r4,3 + 2b338: 21086a04 addi r4,r4,8616 + 2b33c: d9002415 stw r4,144(sp) + 2b340: 29400044 addi r5,r5,1 + 2b344: 003c6d06 br 2a4fc <_gp+0xfffedfc4> + 2b348: 0039883a mov fp,zero + 2b34c: 00800084 movi r2,2 + 2b350: 10803fcc andi r2,r2,255 + 2b354: 01000044 movi r4,1 + 2b358: 11001e26 beq r2,r4,2b3d4 <___vfiprintf_internal_r+0x13a0> + 2b35c: 01000084 movi r4,2 + 2b360: 11001e1e bne r2,r4,2b3dc <___vfiprintf_internal_r+0x13a8> + 2b364: 1829883a mov r20,r3 + 2b368: 003eea06 br 2af14 <_gp+0xfffee9dc> + 2b36c: a007883a mov r3,r20 + 2b370: 00800044 movi r2,1 + 2b374: 003ff606 br 2b350 <_gp+0xfffeee18> + 2b378: 00800184 movi r2,6 + 2b37c: 1240012e bgeu r2,r9,2b384 <___vfiprintf_internal_r+0x1350> + 2b380: 1013883a mov r9,r2 + 2b384: 4827883a mov r19,r9 + 2b388: 4825883a mov r18,r9 + 2b38c: 48001516 blt r9,zero,2b3e4 <___vfiprintf_internal_r+0x13b0> + 2b390: 054000f4 movhi r21,3 + 2b394: d8c02215 stw r3,136(sp) + 2b398: ad480a04 addi r21,r21,8232 + 2b39c: 003d1406 br 2a7f0 <_gp+0xfffee2b8> + 2b3a0: 028000f4 movhi r10,3 + 2b3a4: 52886604 addi r10,r10,8600 + 2b3a8: da802415 stw r10,144(sp) + 2b3ac: 200d883a mov r6,r4 + 2b3b0: 003c9106 br 2a5f8 <_gp+0xfffee0c0> + 2b3b4: 5021883a mov r16,r10 + 2b3b8: 0013883a mov r9,zero + 2b3bc: 003b7d06 br 2a1b4 <_gp+0xfffedc7c> + 2b3c0: 4827883a mov r19,r9 + 2b3c4: df001d83 ldbu fp,118(sp) + 2b3c8: d8c02215 stw r3,136(sp) + 2b3cc: 0013883a mov r9,zero + 2b3d0: 003c1806 br 2a434 <_gp+0xfffedefc> + 2b3d4: 1829883a mov r20,r3 + 2b3d8: 003d1806 br 2a83c <_gp+0xfffee304> + 2b3dc: 1829883a mov r20,r3 + 2b3e0: 003ccd06 br 2a718 <_gp+0xfffee1e0> + 2b3e4: 0025883a mov r18,zero + 2b3e8: 003fe906 br 2b390 <_gp+0xfffeee58> + 2b3ec: d8802217 ldw r2,136(sp) + 2b3f0: 80c00043 ldbu r3,1(r16) + 2b3f4: 5021883a mov r16,r10 + 2b3f8: 12400017 ldw r9,0(r2) + 2b3fc: 10800104 addi r2,r2,4 + 2b400: d8802215 stw r2,136(sp) + 2b404: 483faf0e bge r9,zero,2b2c4 <_gp+0xfffeed8c> + 2b408: 18c03fcc andi r3,r3,255 + 2b40c: 18c0201c xori r3,r3,128 + 2b410: 027fffc4 movi r9,-1 + 2b414: 18ffe004 addi r3,r3,-128 + 2b418: 003b6506 br 2a1b0 <_gp+0xfffedc78> + 2b41c: d9c01d85 stb r7,118(sp) + 2b420: 003ca006 br 2a6a4 <_gp+0xfffee16c> + 2b424: d9c01d85 stb r7,118(sp) + 2b428: 003cad06 br 2a6e0 <_gp+0xfffee1a8> + 2b42c: d9c01d85 stb r7,118(sp) + 2b430: 003d7d06 br 2aa28 <_gp+0xfffee4f0> + 2b434: d9c01d85 stb r7,118(sp) + 2b438: 003d5f06 br 2a9b8 <_gp+0xfffee480> + 2b43c: a080004c andi r2,r20,1 + 2b440: 0039883a mov fp,zero + 2b444: 10000526 beq r2,zero,2b45c <___vfiprintf_internal_r+0x1428> + 2b448: 00800c04 movi r2,48 + 2b44c: d88019c5 stb r2,103(sp) + 2b450: dcc02717 ldw r19,156(sp) + 2b454: dd4019c4 addi r21,sp,103 + 2b458: 003bf606 br 2a434 <_gp+0xfffedefc> + 2b45c: 0027883a mov r19,zero + 2b460: dd401a04 addi r21,sp,104 + 2b464: 003bf306 br 2a434 <_gp+0xfffedefc> + 2b468: d9c01d85 stb r7,118(sp) + 2b46c: 003dc806 br 2ab90 <_gp+0xfffee658> + 2b470: d9c01d85 stb r7,118(sp) + 2b474: 003d3a06 br 2a960 <_gp+0xfffee428> + 2b478: d9c01d85 stb r7,118(sp) + 2b47c: 003d2a06 br 2a928 <_gp+0xfffee3f0> + 2b480: d9c01d85 stb r7,118(sp) + 2b484: 003cde06 br 2a800 <_gp+0xfffee2c8> + 2b488: d9c01d85 stb r7,118(sp) + 2b48c: 003cbc06 br 2a780 <_gp+0xfffee248> + +0002b490 <__vfiprintf_internal>: + 2b490: 008000f4 movhi r2,3 + 2b494: 10915404 addi r2,r2,17744 + 2b498: 300f883a mov r7,r6 + 2b49c: 280d883a mov r6,r5 + 2b4a0: 200b883a mov r5,r4 + 2b4a4: 11000017 ldw r4,0(r2) + 2b4a8: 002a0341 jmpi 2a034 <___vfiprintf_internal_r> + +0002b4ac <__sbprintf>: + 2b4ac: 2880030b ldhu r2,12(r5) + 2b4b0: 2ac01917 ldw r11,100(r5) + 2b4b4: 2a80038b ldhu r10,14(r5) + 2b4b8: 2a400717 ldw r9,28(r5) + 2b4bc: 2a000917 ldw r8,36(r5) + 2b4c0: defee204 addi sp,sp,-1144 + 2b4c4: 00c10004 movi r3,1024 + 2b4c8: dc011a15 stw r16,1128(sp) + 2b4cc: 10bfff4c andi r2,r2,65533 + 2b4d0: 2821883a mov r16,r5 + 2b4d4: d8cb883a add r5,sp,r3 + 2b4d8: dc811c15 stw r18,1136(sp) + 2b4dc: dc411b15 stw r17,1132(sp) + 2b4e0: dfc11d15 stw ra,1140(sp) + 2b4e4: 2025883a mov r18,r4 + 2b4e8: d881030d sth r2,1036(sp) + 2b4ec: dac11915 stw r11,1124(sp) + 2b4f0: da81038d sth r10,1038(sp) + 2b4f4: da410715 stw r9,1052(sp) + 2b4f8: da010915 stw r8,1060(sp) + 2b4fc: dec10015 stw sp,1024(sp) + 2b500: dec10415 stw sp,1040(sp) + 2b504: d8c10215 stw r3,1032(sp) + 2b508: d8c10515 stw r3,1044(sp) + 2b50c: d8010615 stw zero,1048(sp) + 2b510: 002a0340 call 2a034 <___vfiprintf_internal_r> + 2b514: 1023883a mov r17,r2 + 2b518: 10000416 blt r2,zero,2b52c <__sbprintf+0x80> + 2b51c: d9410004 addi r5,sp,1024 + 2b520: 9009883a mov r4,r18 + 2b524: 00271080 call 27108 <_fflush_r> + 2b528: 10000d1e bne r2,zero,2b560 <__sbprintf+0xb4> + 2b52c: d881030b ldhu r2,1036(sp) + 2b530: 1080100c andi r2,r2,64 + 2b534: 10000326 beq r2,zero,2b544 <__sbprintf+0x98> + 2b538: 8080030b ldhu r2,12(r16) + 2b53c: 10801014 ori r2,r2,64 + 2b540: 8080030d sth r2,12(r16) + 2b544: 8805883a mov r2,r17 + 2b548: dfc11d17 ldw ra,1140(sp) + 2b54c: dc811c17 ldw r18,1136(sp) + 2b550: dc411b17 ldw r17,1132(sp) + 2b554: dc011a17 ldw r16,1128(sp) + 2b558: dec11e04 addi sp,sp,1144 + 2b55c: f800283a ret + 2b560: 047fffc4 movi r17,-1 + 2b564: 003ff106 br 2b52c <_gp+0xfffeeff4> + +0002b568 <__swbuf_r>: + 2b568: defffb04 addi sp,sp,-20 + 2b56c: dcc00315 stw r19,12(sp) + 2b570: dc800215 stw r18,8(sp) + 2b574: dc000015 stw r16,0(sp) + 2b578: dfc00415 stw ra,16(sp) + 2b57c: dc400115 stw r17,4(sp) + 2b580: 2025883a mov r18,r4 + 2b584: 2827883a mov r19,r5 + 2b588: 3021883a mov r16,r6 + 2b58c: 20000226 beq r4,zero,2b598 <__swbuf_r+0x30> + 2b590: 20800e17 ldw r2,56(r4) + 2b594: 10004226 beq r2,zero,2b6a0 <__swbuf_r+0x138> + 2b598: 80800617 ldw r2,24(r16) + 2b59c: 8100030b ldhu r4,12(r16) + 2b5a0: 80800215 stw r2,8(r16) + 2b5a4: 2080020c andi r2,r4,8 + 2b5a8: 10003626 beq r2,zero,2b684 <__swbuf_r+0x11c> + 2b5ac: 80c00417 ldw r3,16(r16) + 2b5b0: 18003426 beq r3,zero,2b684 <__swbuf_r+0x11c> + 2b5b4: 2088000c andi r2,r4,8192 + 2b5b8: 9c403fcc andi r17,r19,255 + 2b5bc: 10001a26 beq r2,zero,2b628 <__swbuf_r+0xc0> + 2b5c0: 80800017 ldw r2,0(r16) + 2b5c4: 81000517 ldw r4,20(r16) + 2b5c8: 10c7c83a sub r3,r2,r3 + 2b5cc: 1900200e bge r3,r4,2b650 <__swbuf_r+0xe8> + 2b5d0: 18c00044 addi r3,r3,1 + 2b5d4: 81000217 ldw r4,8(r16) + 2b5d8: 11400044 addi r5,r2,1 + 2b5dc: 81400015 stw r5,0(r16) + 2b5e0: 213fffc4 addi r4,r4,-1 + 2b5e4: 81000215 stw r4,8(r16) + 2b5e8: 14c00005 stb r19,0(r2) + 2b5ec: 80800517 ldw r2,20(r16) + 2b5f0: 10c01e26 beq r2,r3,2b66c <__swbuf_r+0x104> + 2b5f4: 8080030b ldhu r2,12(r16) + 2b5f8: 1080004c andi r2,r2,1 + 2b5fc: 10000226 beq r2,zero,2b608 <__swbuf_r+0xa0> + 2b600: 00800284 movi r2,10 + 2b604: 88801926 beq r17,r2,2b66c <__swbuf_r+0x104> + 2b608: 8805883a mov r2,r17 + 2b60c: dfc00417 ldw ra,16(sp) + 2b610: dcc00317 ldw r19,12(sp) + 2b614: dc800217 ldw r18,8(sp) + 2b618: dc400117 ldw r17,4(sp) + 2b61c: dc000017 ldw r16,0(sp) + 2b620: dec00504 addi sp,sp,20 + 2b624: f800283a ret + 2b628: 81401917 ldw r5,100(r16) + 2b62c: 00b7ffc4 movi r2,-8193 + 2b630: 21080014 ori r4,r4,8192 + 2b634: 2884703a and r2,r5,r2 + 2b638: 80801915 stw r2,100(r16) + 2b63c: 80800017 ldw r2,0(r16) + 2b640: 8100030d sth r4,12(r16) + 2b644: 81000517 ldw r4,20(r16) + 2b648: 10c7c83a sub r3,r2,r3 + 2b64c: 193fe016 blt r3,r4,2b5d0 <_gp+0xfffef098> + 2b650: 800b883a mov r5,r16 + 2b654: 9009883a mov r4,r18 + 2b658: 00271080 call 27108 <_fflush_r> + 2b65c: 1000071e bne r2,zero,2b67c <__swbuf_r+0x114> + 2b660: 80800017 ldw r2,0(r16) + 2b664: 00c00044 movi r3,1 + 2b668: 003fda06 br 2b5d4 <_gp+0xfffef09c> + 2b66c: 800b883a mov r5,r16 + 2b670: 9009883a mov r4,r18 + 2b674: 00271080 call 27108 <_fflush_r> + 2b678: 103fe326 beq r2,zero,2b608 <_gp+0xfffef0d0> + 2b67c: 00bfffc4 movi r2,-1 + 2b680: 003fe206 br 2b60c <_gp+0xfffef0d4> + 2b684: 800b883a mov r5,r16 + 2b688: 9009883a mov r4,r18 + 2b68c: 00255100 call 25510 <__swsetup_r> + 2b690: 103ffa1e bne r2,zero,2b67c <_gp+0xfffef144> + 2b694: 8100030b ldhu r4,12(r16) + 2b698: 80c00417 ldw r3,16(r16) + 2b69c: 003fc506 br 2b5b4 <_gp+0xfffef07c> + 2b6a0: 00274e40 call 274e4 <__sinit> + 2b6a4: 003fbc06 br 2b598 <_gp+0xfffef060> + +0002b6a8 <__swbuf>: + 2b6a8: 008000f4 movhi r2,3 + 2b6ac: 10915404 addi r2,r2,17744 + 2b6b0: 280d883a mov r6,r5 + 2b6b4: 200b883a mov r5,r4 + 2b6b8: 11000017 ldw r4,0(r2) + 2b6bc: 002b5681 jmpi 2b568 <__swbuf_r> + +0002b6c0 <_write_r>: + 2b6c0: defffd04 addi sp,sp,-12 + 2b6c4: 2805883a mov r2,r5 + 2b6c8: dc000015 stw r16,0(sp) + 2b6cc: 040000f4 movhi r16,3 + 2b6d0: dc400115 stw r17,4(sp) + 2b6d4: 300b883a mov r5,r6 + 2b6d8: 841a0c04 addi r16,r16,26672 + 2b6dc: 2023883a mov r17,r4 + 2b6e0: 380d883a mov r6,r7 + 2b6e4: 1009883a mov r4,r2 + 2b6e8: dfc00215 stw ra,8(sp) + 2b6ec: 80000015 stw zero,0(r16) + 2b6f0: 002fa4c0 call 2fa4c + 2b6f4: 00ffffc4 movi r3,-1 + 2b6f8: 10c00526 beq r2,r3,2b710 <_write_r+0x50> + 2b6fc: dfc00217 ldw ra,8(sp) + 2b700: dc400117 ldw r17,4(sp) + 2b704: dc000017 ldw r16,0(sp) + 2b708: dec00304 addi sp,sp,12 + 2b70c: f800283a ret + 2b710: 80c00017 ldw r3,0(r16) + 2b714: 183ff926 beq r3,zero,2b6fc <_gp+0xfffef1c4> + 2b718: 88c00015 stw r3,0(r17) + 2b71c: 003ff706 br 2b6fc <_gp+0xfffef1c4> + +0002b720 <_close_r>: + 2b720: defffd04 addi sp,sp,-12 + 2b724: dc000015 stw r16,0(sp) + 2b728: 040000f4 movhi r16,3 + 2b72c: dc400115 stw r17,4(sp) + 2b730: 841a0c04 addi r16,r16,26672 + 2b734: 2023883a mov r17,r4 + 2b738: 2809883a mov r4,r5 + 2b73c: dfc00215 stw ra,8(sp) + 2b740: 80000015 stw zero,0(r16) + 2b744: 002f0040 call 2f004 + 2b748: 00ffffc4 movi r3,-1 + 2b74c: 10c00526 beq r2,r3,2b764 <_close_r+0x44> + 2b750: dfc00217 ldw ra,8(sp) + 2b754: dc400117 ldw r17,4(sp) + 2b758: dc000017 ldw r16,0(sp) + 2b75c: dec00304 addi sp,sp,12 + 2b760: f800283a ret + 2b764: 80c00017 ldw r3,0(r16) + 2b768: 183ff926 beq r3,zero,2b750 <_gp+0xfffef218> + 2b76c: 88c00015 stw r3,0(r17) + 2b770: 003ff706 br 2b750 <_gp+0xfffef218> + +0002b774 <_calloc_r>: + 2b774: 298b383a mul r5,r5,r6 + 2b778: defffe04 addi sp,sp,-8 + 2b77c: dfc00115 stw ra,4(sp) + 2b780: dc000015 stw r16,0(sp) + 2b784: 00226c00 call 226c0 <_malloc_r> + 2b788: 10002926 beq r2,zero,2b830 <_calloc_r+0xbc> + 2b78c: 11bfff17 ldw r6,-4(r2) + 2b790: 1021883a mov r16,r2 + 2b794: 00bfff04 movi r2,-4 + 2b798: 308c703a and r6,r6,r2 + 2b79c: 00c00904 movi r3,36 + 2b7a0: 308d883a add r6,r6,r2 + 2b7a4: 19801636 bltu r3,r6,2b800 <_calloc_r+0x8c> + 2b7a8: 008004c4 movi r2,19 + 2b7ac: 11800b2e bgeu r2,r6,2b7dc <_calloc_r+0x68> + 2b7b0: 80000015 stw zero,0(r16) + 2b7b4: 80000115 stw zero,4(r16) + 2b7b8: 008006c4 movi r2,27 + 2b7bc: 11801a2e bgeu r2,r6,2b828 <_calloc_r+0xb4> + 2b7c0: 80000215 stw zero,8(r16) + 2b7c4: 80000315 stw zero,12(r16) + 2b7c8: 30c0151e bne r6,r3,2b820 <_calloc_r+0xac> + 2b7cc: 80000415 stw zero,16(r16) + 2b7d0: 80800604 addi r2,r16,24 + 2b7d4: 80000515 stw zero,20(r16) + 2b7d8: 00000106 br 2b7e0 <_calloc_r+0x6c> + 2b7dc: 8005883a mov r2,r16 + 2b7e0: 10000015 stw zero,0(r2) + 2b7e4: 10000115 stw zero,4(r2) + 2b7e8: 10000215 stw zero,8(r2) + 2b7ec: 8005883a mov r2,r16 + 2b7f0: dfc00117 ldw ra,4(sp) + 2b7f4: dc000017 ldw r16,0(sp) + 2b7f8: dec00204 addi sp,sp,8 + 2b7fc: f800283a ret + 2b800: 000b883a mov r5,zero + 2b804: 8009883a mov r4,r16 + 2b808: 0022ecc0 call 22ecc + 2b80c: 8005883a mov r2,r16 + 2b810: dfc00117 ldw ra,4(sp) + 2b814: dc000017 ldw r16,0(sp) + 2b818: dec00204 addi sp,sp,8 + 2b81c: f800283a ret + 2b820: 80800404 addi r2,r16,16 + 2b824: 003fee06 br 2b7e0 <_gp+0xfffef2a8> + 2b828: 80800204 addi r2,r16,8 + 2b82c: 003fec06 br 2b7e0 <_gp+0xfffef2a8> + 2b830: 0005883a mov r2,zero + 2b834: 003fee06 br 2b7f0 <_gp+0xfffef2b8> + +0002b838 <_fclose_r>: + 2b838: 28003926 beq r5,zero,2b920 <_fclose_r+0xe8> + 2b83c: defffc04 addi sp,sp,-16 + 2b840: dc400115 stw r17,4(sp) + 2b844: dc000015 stw r16,0(sp) + 2b848: dfc00315 stw ra,12(sp) + 2b84c: dc800215 stw r18,8(sp) + 2b850: 2023883a mov r17,r4 + 2b854: 2821883a mov r16,r5 + 2b858: 20000226 beq r4,zero,2b864 <_fclose_r+0x2c> + 2b85c: 20800e17 ldw r2,56(r4) + 2b860: 10002726 beq r2,zero,2b900 <_fclose_r+0xc8> + 2b864: 8080030f ldh r2,12(r16) + 2b868: 1000071e bne r2,zero,2b888 <_fclose_r+0x50> + 2b86c: 0005883a mov r2,zero + 2b870: dfc00317 ldw ra,12(sp) + 2b874: dc800217 ldw r18,8(sp) + 2b878: dc400117 ldw r17,4(sp) + 2b87c: dc000017 ldw r16,0(sp) + 2b880: dec00404 addi sp,sp,16 + 2b884: f800283a ret + 2b888: 800b883a mov r5,r16 + 2b88c: 8809883a mov r4,r17 + 2b890: 0026eec0 call 26eec <__sflush_r> + 2b894: 1025883a mov r18,r2 + 2b898: 80800b17 ldw r2,44(r16) + 2b89c: 10000426 beq r2,zero,2b8b0 <_fclose_r+0x78> + 2b8a0: 81400717 ldw r5,28(r16) + 2b8a4: 8809883a mov r4,r17 + 2b8a8: 103ee83a callr r2 + 2b8ac: 10001616 blt r2,zero,2b908 <_fclose_r+0xd0> + 2b8b0: 8080030b ldhu r2,12(r16) + 2b8b4: 1080200c andi r2,r2,128 + 2b8b8: 1000151e bne r2,zero,2b910 <_fclose_r+0xd8> + 2b8bc: 81400c17 ldw r5,48(r16) + 2b8c0: 28000526 beq r5,zero,2b8d8 <_fclose_r+0xa0> + 2b8c4: 80801004 addi r2,r16,64 + 2b8c8: 28800226 beq r5,r2,2b8d4 <_fclose_r+0x9c> + 2b8cc: 8809883a mov r4,r17 + 2b8d0: 00276580 call 27658 <_free_r> + 2b8d4: 80000c15 stw zero,48(r16) + 2b8d8: 81401117 ldw r5,68(r16) + 2b8dc: 28000326 beq r5,zero,2b8ec <_fclose_r+0xb4> + 2b8e0: 8809883a mov r4,r17 + 2b8e4: 00276580 call 27658 <_free_r> + 2b8e8: 80001115 stw zero,68(r16) + 2b8ec: 00274f40 call 274f4 <__sfp_lock_acquire> + 2b8f0: 8000030d sth zero,12(r16) + 2b8f4: 00274f80 call 274f8 <__sfp_lock_release> + 2b8f8: 9005883a mov r2,r18 + 2b8fc: 003fdc06 br 2b870 <_gp+0xfffef338> + 2b900: 00274e40 call 274e4 <__sinit> + 2b904: 003fd706 br 2b864 <_gp+0xfffef32c> + 2b908: 04bfffc4 movi r18,-1 + 2b90c: 003fe806 br 2b8b0 <_gp+0xfffef378> + 2b910: 81400417 ldw r5,16(r16) + 2b914: 8809883a mov r4,r17 + 2b918: 00276580 call 27658 <_free_r> + 2b91c: 003fe706 br 2b8bc <_gp+0xfffef384> + 2b920: 0005883a mov r2,zero + 2b924: f800283a ret + +0002b928 : + 2b928: 008000f4 movhi r2,3 + 2b92c: 10915404 addi r2,r2,17744 + 2b930: 200b883a mov r5,r4 + 2b934: 11000017 ldw r4,0(r2) + 2b938: 002b8381 jmpi 2b838 <_fclose_r> + +0002b93c <__fputwc>: + 2b93c: defff804 addi sp,sp,-32 + 2b940: dcc00415 stw r19,16(sp) + 2b944: dc800315 stw r18,12(sp) + 2b948: dc000115 stw r16,4(sp) + 2b94c: dfc00715 stw ra,28(sp) + 2b950: dd400615 stw r21,24(sp) + 2b954: dd000515 stw r20,20(sp) + 2b958: dc400215 stw r17,8(sp) + 2b95c: 2027883a mov r19,r4 + 2b960: 2825883a mov r18,r5 + 2b964: 3021883a mov r16,r6 + 2b968: 00280340 call 28034 <__locale_mb_cur_max> + 2b96c: 00c00044 movi r3,1 + 2b970: 10c03e26 beq r2,r3,2ba6c <__fputwc+0x130> + 2b974: 81c01704 addi r7,r16,92 + 2b978: 900d883a mov r6,r18 + 2b97c: d80b883a mov r5,sp + 2b980: 9809883a mov r4,r19 + 2b984: 002bcb40 call 2bcb4 <_wcrtomb_r> + 2b988: 1029883a mov r20,r2 + 2b98c: 00bfffc4 movi r2,-1 + 2b990: a0802026 beq r20,r2,2ba14 <__fputwc+0xd8> + 2b994: d9400003 ldbu r5,0(sp) + 2b998: a0001c26 beq r20,zero,2ba0c <__fputwc+0xd0> + 2b99c: 0023883a mov r17,zero + 2b9a0: 05400284 movi r21,10 + 2b9a4: 00000906 br 2b9cc <__fputwc+0x90> + 2b9a8: 80800017 ldw r2,0(r16) + 2b9ac: 11400005 stb r5,0(r2) + 2b9b0: 80c00017 ldw r3,0(r16) + 2b9b4: 18c00044 addi r3,r3,1 + 2b9b8: 80c00015 stw r3,0(r16) + 2b9bc: 8c400044 addi r17,r17,1 + 2b9c0: dc45883a add r2,sp,r17 + 2b9c4: 8d00112e bgeu r17,r20,2ba0c <__fputwc+0xd0> + 2b9c8: 11400003 ldbu r5,0(r2) + 2b9cc: 80c00217 ldw r3,8(r16) + 2b9d0: 18ffffc4 addi r3,r3,-1 + 2b9d4: 80c00215 stw r3,8(r16) + 2b9d8: 183ff30e bge r3,zero,2b9a8 <_gp+0xfffef470> + 2b9dc: 80800617 ldw r2,24(r16) + 2b9e0: 18801916 blt r3,r2,2ba48 <__fputwc+0x10c> + 2b9e4: 80800017 ldw r2,0(r16) + 2b9e8: 11400005 stb r5,0(r2) + 2b9ec: 80800017 ldw r2,0(r16) + 2b9f0: 10c00003 ldbu r3,0(r2) + 2b9f4: 10800044 addi r2,r2,1 + 2b9f8: 1d402326 beq r3,r21,2ba88 <__fputwc+0x14c> + 2b9fc: 80800015 stw r2,0(r16) + 2ba00: 8c400044 addi r17,r17,1 + 2ba04: dc45883a add r2,sp,r17 + 2ba08: 8d3fef36 bltu r17,r20,2b9c8 <_gp+0xfffef490> + 2ba0c: 9005883a mov r2,r18 + 2ba10: 00000406 br 2ba24 <__fputwc+0xe8> + 2ba14: 80c0030b ldhu r3,12(r16) + 2ba18: a005883a mov r2,r20 + 2ba1c: 18c01014 ori r3,r3,64 + 2ba20: 80c0030d sth r3,12(r16) + 2ba24: dfc00717 ldw ra,28(sp) + 2ba28: dd400617 ldw r21,24(sp) + 2ba2c: dd000517 ldw r20,20(sp) + 2ba30: dcc00417 ldw r19,16(sp) + 2ba34: dc800317 ldw r18,12(sp) + 2ba38: dc400217 ldw r17,8(sp) + 2ba3c: dc000117 ldw r16,4(sp) + 2ba40: dec00804 addi sp,sp,32 + 2ba44: f800283a ret + 2ba48: 800d883a mov r6,r16 + 2ba4c: 29403fcc andi r5,r5,255 + 2ba50: 9809883a mov r4,r19 + 2ba54: 002b5680 call 2b568 <__swbuf_r> + 2ba58: 10bfffe0 cmpeqi r2,r2,-1 + 2ba5c: 10803fcc andi r2,r2,255 + 2ba60: 103fd626 beq r2,zero,2b9bc <_gp+0xfffef484> + 2ba64: 00bfffc4 movi r2,-1 + 2ba68: 003fee06 br 2ba24 <_gp+0xfffef4ec> + 2ba6c: 90ffffc4 addi r3,r18,-1 + 2ba70: 01003f84 movi r4,254 + 2ba74: 20ffbf36 bltu r4,r3,2b974 <_gp+0xfffef43c> + 2ba78: 900b883a mov r5,r18 + 2ba7c: dc800005 stb r18,0(sp) + 2ba80: 1029883a mov r20,r2 + 2ba84: 003fc506 br 2b99c <_gp+0xfffef464> + 2ba88: 800d883a mov r6,r16 + 2ba8c: a80b883a mov r5,r21 + 2ba90: 9809883a mov r4,r19 + 2ba94: 002b5680 call 2b568 <__swbuf_r> + 2ba98: 10bfffe0 cmpeqi r2,r2,-1 + 2ba9c: 003fef06 br 2ba5c <_gp+0xfffef524> + +0002baa0 <_fputwc_r>: + 2baa0: 3080030b ldhu r2,12(r6) + 2baa4: 10c8000c andi r3,r2,8192 + 2baa8: 1800051e bne r3,zero,2bac0 <_fputwc_r+0x20> + 2baac: 30c01917 ldw r3,100(r6) + 2bab0: 10880014 ori r2,r2,8192 + 2bab4: 3080030d sth r2,12(r6) + 2bab8: 18880014 ori r2,r3,8192 + 2babc: 30801915 stw r2,100(r6) + 2bac0: 002b93c1 jmpi 2b93c <__fputwc> + +0002bac4 : + 2bac4: 008000f4 movhi r2,3 + 2bac8: defffc04 addi sp,sp,-16 + 2bacc: 10915404 addi r2,r2,17744 + 2bad0: dc000115 stw r16,4(sp) + 2bad4: 14000017 ldw r16,0(r2) + 2bad8: dc400215 stw r17,8(sp) + 2badc: dfc00315 stw ra,12(sp) + 2bae0: 2023883a mov r17,r4 + 2bae4: 80000226 beq r16,zero,2baf0 + 2bae8: 80800e17 ldw r2,56(r16) + 2baec: 10001026 beq r2,zero,2bb30 + 2baf0: 2880030b ldhu r2,12(r5) + 2baf4: 10c8000c andi r3,r2,8192 + 2baf8: 1800051e bne r3,zero,2bb10 + 2bafc: 28c01917 ldw r3,100(r5) + 2bb00: 10880014 ori r2,r2,8192 + 2bb04: 2880030d sth r2,12(r5) + 2bb08: 18880014 ori r2,r3,8192 + 2bb0c: 28801915 stw r2,100(r5) + 2bb10: 280d883a mov r6,r5 + 2bb14: 8009883a mov r4,r16 + 2bb18: 880b883a mov r5,r17 + 2bb1c: dfc00317 ldw ra,12(sp) + 2bb20: dc400217 ldw r17,8(sp) + 2bb24: dc000117 ldw r16,4(sp) + 2bb28: dec00404 addi sp,sp,16 + 2bb2c: 002b93c1 jmpi 2b93c <__fputwc> + 2bb30: 8009883a mov r4,r16 + 2bb34: d9400015 stw r5,0(sp) + 2bb38: 00274e40 call 274e4 <__sinit> + 2bb3c: d9400017 ldw r5,0(sp) + 2bb40: 003feb06 br 2baf0 <_gp+0xfffef5b8> + +0002bb44 <_fstat_r>: + 2bb44: defffd04 addi sp,sp,-12 + 2bb48: 2805883a mov r2,r5 + 2bb4c: dc000015 stw r16,0(sp) + 2bb50: 040000f4 movhi r16,3 + 2bb54: dc400115 stw r17,4(sp) + 2bb58: 841a0c04 addi r16,r16,26672 + 2bb5c: 2023883a mov r17,r4 + 2bb60: 300b883a mov r5,r6 + 2bb64: 1009883a mov r4,r2 + 2bb68: dfc00215 stw ra,8(sp) + 2bb6c: 80000015 stw zero,0(r16) + 2bb70: 002f1500 call 2f150 + 2bb74: 00ffffc4 movi r3,-1 + 2bb78: 10c00526 beq r2,r3,2bb90 <_fstat_r+0x4c> + 2bb7c: dfc00217 ldw ra,8(sp) + 2bb80: dc400117 ldw r17,4(sp) + 2bb84: dc000017 ldw r16,0(sp) + 2bb88: dec00304 addi sp,sp,12 + 2bb8c: f800283a ret + 2bb90: 80c00017 ldw r3,0(r16) + 2bb94: 183ff926 beq r3,zero,2bb7c <_gp+0xfffef644> + 2bb98: 88c00015 stw r3,0(r17) + 2bb9c: 003ff706 br 2bb7c <_gp+0xfffef644> + +0002bba0 <_isatty_r>: + 2bba0: defffd04 addi sp,sp,-12 + 2bba4: dc000015 stw r16,0(sp) + 2bba8: 040000f4 movhi r16,3 + 2bbac: dc400115 stw r17,4(sp) + 2bbb0: 841a0c04 addi r16,r16,26672 + 2bbb4: 2023883a mov r17,r4 + 2bbb8: 2809883a mov r4,r5 + 2bbbc: dfc00215 stw ra,8(sp) + 2bbc0: 80000015 stw zero,0(r16) + 2bbc4: 002f2500 call 2f250 + 2bbc8: 00ffffc4 movi r3,-1 + 2bbcc: 10c00526 beq r2,r3,2bbe4 <_isatty_r+0x44> + 2bbd0: dfc00217 ldw ra,8(sp) + 2bbd4: dc400117 ldw r17,4(sp) + 2bbd8: dc000017 ldw r16,0(sp) + 2bbdc: dec00304 addi sp,sp,12 + 2bbe0: f800283a ret + 2bbe4: 80c00017 ldw r3,0(r16) + 2bbe8: 183ff926 beq r3,zero,2bbd0 <_gp+0xfffef698> + 2bbec: 88c00015 stw r3,0(r17) + 2bbf0: 003ff706 br 2bbd0 <_gp+0xfffef698> + +0002bbf4 <_lseek_r>: + 2bbf4: defffd04 addi sp,sp,-12 + 2bbf8: 2805883a mov r2,r5 + 2bbfc: dc000015 stw r16,0(sp) + 2bc00: 040000f4 movhi r16,3 + 2bc04: dc400115 stw r17,4(sp) + 2bc08: 300b883a mov r5,r6 + 2bc0c: 841a0c04 addi r16,r16,26672 + 2bc10: 2023883a mov r17,r4 + 2bc14: 380d883a mov r6,r7 + 2bc18: 1009883a mov r4,r2 + 2bc1c: dfc00215 stw ra,8(sp) + 2bc20: 80000015 stw zero,0(r16) + 2bc24: 002f4300 call 2f430 + 2bc28: 00ffffc4 movi r3,-1 + 2bc2c: 10c00526 beq r2,r3,2bc44 <_lseek_r+0x50> + 2bc30: dfc00217 ldw ra,8(sp) + 2bc34: dc400117 ldw r17,4(sp) + 2bc38: dc000017 ldw r16,0(sp) + 2bc3c: dec00304 addi sp,sp,12 + 2bc40: f800283a ret + 2bc44: 80c00017 ldw r3,0(r16) + 2bc48: 183ff926 beq r3,zero,2bc30 <_gp+0xfffef6f8> + 2bc4c: 88c00015 stw r3,0(r17) + 2bc50: 003ff706 br 2bc30 <_gp+0xfffef6f8> + +0002bc54 <_read_r>: + 2bc54: defffd04 addi sp,sp,-12 + 2bc58: 2805883a mov r2,r5 + 2bc5c: dc000015 stw r16,0(sp) + 2bc60: 040000f4 movhi r16,3 + 2bc64: dc400115 stw r17,4(sp) + 2bc68: 300b883a mov r5,r6 + 2bc6c: 841a0c04 addi r16,r16,26672 + 2bc70: 2023883a mov r17,r4 + 2bc74: 380d883a mov r6,r7 + 2bc78: 1009883a mov r4,r2 + 2bc7c: dfc00215 stw ra,8(sp) + 2bc80: 80000015 stw zero,0(r16) + 2bc84: 002f6180 call 2f618 + 2bc88: 00ffffc4 movi r3,-1 + 2bc8c: 10c00526 beq r2,r3,2bca4 <_read_r+0x50> + 2bc90: dfc00217 ldw ra,8(sp) + 2bc94: dc400117 ldw r17,4(sp) + 2bc98: dc000017 ldw r16,0(sp) + 2bc9c: dec00304 addi sp,sp,12 + 2bca0: f800283a ret + 2bca4: 80c00017 ldw r3,0(r16) + 2bca8: 183ff926 beq r3,zero,2bc90 <_gp+0xfffef758> + 2bcac: 88c00015 stw r3,0(r17) + 2bcb0: 003ff706 br 2bc90 <_gp+0xfffef758> + +0002bcb4 <_wcrtomb_r>: + 2bcb4: defff604 addi sp,sp,-40 + 2bcb8: 008000f4 movhi r2,3 + 2bcbc: dc800815 stw r18,32(sp) + 2bcc0: dc400715 stw r17,28(sp) + 2bcc4: dc000615 stw r16,24(sp) + 2bcc8: 10915604 addi r2,r2,17752 + 2bccc: dfc00915 stw ra,36(sp) + 2bcd0: 2021883a mov r16,r4 + 2bcd4: 3823883a mov r17,r7 + 2bcd8: 14800017 ldw r18,0(r2) + 2bcdc: 28001426 beq r5,zero,2bd30 <_wcrtomb_r+0x7c> + 2bce0: d9400415 stw r5,16(sp) + 2bce4: d9800515 stw r6,20(sp) + 2bce8: 00280280 call 28028 <__locale_charset> + 2bcec: d9800517 ldw r6,20(sp) + 2bcf0: d9400417 ldw r5,16(sp) + 2bcf4: 100f883a mov r7,r2 + 2bcf8: dc400015 stw r17,0(sp) + 2bcfc: 8009883a mov r4,r16 + 2bd00: 903ee83a callr r18 + 2bd04: 00ffffc4 movi r3,-1 + 2bd08: 10c0031e bne r2,r3,2bd18 <_wcrtomb_r+0x64> + 2bd0c: 88000015 stw zero,0(r17) + 2bd10: 00c02284 movi r3,138 + 2bd14: 80c00015 stw r3,0(r16) + 2bd18: dfc00917 ldw ra,36(sp) + 2bd1c: dc800817 ldw r18,32(sp) + 2bd20: dc400717 ldw r17,28(sp) + 2bd24: dc000617 ldw r16,24(sp) + 2bd28: dec00a04 addi sp,sp,40 + 2bd2c: f800283a ret + 2bd30: 00280280 call 28028 <__locale_charset> + 2bd34: 100f883a mov r7,r2 + 2bd38: dc400015 stw r17,0(sp) + 2bd3c: 000d883a mov r6,zero + 2bd40: d9400104 addi r5,sp,4 + 2bd44: 8009883a mov r4,r16 + 2bd48: 903ee83a callr r18 + 2bd4c: 003fed06 br 2bd04 <_gp+0xfffef7cc> + +0002bd50 : + 2bd50: defff604 addi sp,sp,-40 + 2bd54: 008000f4 movhi r2,3 + 2bd58: dc800615 stw r18,24(sp) + 2bd5c: dc400515 stw r17,20(sp) + 2bd60: 10915404 addi r2,r2,17744 + 2bd64: dfc00915 stw ra,36(sp) + 2bd68: dd000815 stw r20,32(sp) + 2bd6c: dcc00715 stw r19,28(sp) + 2bd70: dc000415 stw r16,16(sp) + 2bd74: 3025883a mov r18,r6 + 2bd78: 14400017 ldw r17,0(r2) + 2bd7c: 20001926 beq r4,zero,2bde4 + 2bd80: 008000f4 movhi r2,3 + 2bd84: 10915604 addi r2,r2,17752 + 2bd88: 15000017 ldw r20,0(r2) + 2bd8c: 2021883a mov r16,r4 + 2bd90: 2827883a mov r19,r5 + 2bd94: 00280280 call 28028 <__locale_charset> + 2bd98: 100f883a mov r7,r2 + 2bd9c: dc800015 stw r18,0(sp) + 2bda0: 980d883a mov r6,r19 + 2bda4: 800b883a mov r5,r16 + 2bda8: 8809883a mov r4,r17 + 2bdac: a03ee83a callr r20 + 2bdb0: 00ffffc4 movi r3,-1 + 2bdb4: 10c0031e bne r2,r3,2bdc4 + 2bdb8: 90000015 stw zero,0(r18) + 2bdbc: 00c02284 movi r3,138 + 2bdc0: 88c00015 stw r3,0(r17) + 2bdc4: dfc00917 ldw ra,36(sp) + 2bdc8: dd000817 ldw r20,32(sp) + 2bdcc: dcc00717 ldw r19,28(sp) + 2bdd0: dc800617 ldw r18,24(sp) + 2bdd4: dc400517 ldw r17,20(sp) + 2bdd8: dc000417 ldw r16,16(sp) + 2bddc: dec00a04 addi sp,sp,40 + 2bde0: f800283a ret + 2bde4: 008000f4 movhi r2,3 + 2bde8: 10915604 addi r2,r2,17752 + 2bdec: 14000017 ldw r16,0(r2) + 2bdf0: 00280280 call 28028 <__locale_charset> + 2bdf4: 100f883a mov r7,r2 + 2bdf8: dc800015 stw r18,0(sp) + 2bdfc: 000d883a mov r6,zero + 2be00: d9400104 addi r5,sp,4 + 2be04: 8809883a mov r4,r17 + 2be08: 803ee83a callr r16 + 2be0c: 003fe806 br 2bdb0 <_gp+0xfffef878> + +0002be10 <__ascii_wctomb>: + 2be10: 28000526 beq r5,zero,2be28 <__ascii_wctomb+0x18> + 2be14: 00803fc4 movi r2,255 + 2be18: 11800536 bltu r2,r6,2be30 <__ascii_wctomb+0x20> + 2be1c: 29800005 stb r6,0(r5) + 2be20: 00800044 movi r2,1 + 2be24: f800283a ret + 2be28: 0005883a mov r2,zero + 2be2c: f800283a ret + 2be30: 00802284 movi r2,138 + 2be34: 20800015 stw r2,0(r4) + 2be38: 00bfffc4 movi r2,-1 + 2be3c: f800283a ret + +0002be40 <_wctomb_r>: + 2be40: 008000f4 movhi r2,3 + 2be44: defff904 addi sp,sp,-28 + 2be48: 10915604 addi r2,r2,17752 + 2be4c: dfc00615 stw ra,24(sp) + 2be50: dc400515 stw r17,20(sp) + 2be54: dc000415 stw r16,16(sp) + 2be58: 3823883a mov r17,r7 + 2be5c: 14000017 ldw r16,0(r2) + 2be60: d9000115 stw r4,4(sp) + 2be64: d9400215 stw r5,8(sp) + 2be68: d9800315 stw r6,12(sp) + 2be6c: 00280280 call 28028 <__locale_charset> + 2be70: d9800317 ldw r6,12(sp) + 2be74: d9400217 ldw r5,8(sp) + 2be78: d9000117 ldw r4,4(sp) + 2be7c: 100f883a mov r7,r2 + 2be80: dc400015 stw r17,0(sp) + 2be84: 803ee83a callr r16 + 2be88: dfc00617 ldw ra,24(sp) + 2be8c: dc400517 ldw r17,20(sp) + 2be90: dc000417 ldw r16,16(sp) + 2be94: dec00704 addi sp,sp,28 + 2be98: f800283a ret + +0002be9c <__udivdi3>: + 2be9c: defff504 addi sp,sp,-44 + 2bea0: dcc00415 stw r19,16(sp) + 2bea4: dc000115 stw r16,4(sp) + 2bea8: dfc00a15 stw ra,40(sp) + 2beac: df000915 stw fp,36(sp) + 2beb0: ddc00815 stw r23,32(sp) + 2beb4: dd800715 stw r22,28(sp) + 2beb8: dd400615 stw r21,24(sp) + 2bebc: dd000515 stw r20,20(sp) + 2bec0: dc800315 stw r18,12(sp) + 2bec4: dc400215 stw r17,8(sp) + 2bec8: 2027883a mov r19,r4 + 2becc: 2821883a mov r16,r5 + 2bed0: 3800411e bne r7,zero,2bfd8 <__udivdi3+0x13c> + 2bed4: 3023883a mov r17,r6 + 2bed8: 2025883a mov r18,r4 + 2bedc: 2980522e bgeu r5,r6,2c028 <__udivdi3+0x18c> + 2bee0: 00bfffd4 movui r2,65535 + 2bee4: 282d883a mov r22,r5 + 2bee8: 1180a836 bltu r2,r6,2c18c <__udivdi3+0x2f0> + 2beec: 00803fc4 movi r2,255 + 2bef0: 1185803a cmpltu r2,r2,r6 + 2bef4: 100490fa slli r2,r2,3 + 2bef8: 3086d83a srl r3,r6,r2 + 2befc: 010000f4 movhi r4,3 + 2bf00: 21086e04 addi r4,r4,8632 + 2bf04: 20c7883a add r3,r4,r3 + 2bf08: 18c00003 ldbu r3,0(r3) + 2bf0c: 1885883a add r2,r3,r2 + 2bf10: 00c00804 movi r3,32 + 2bf14: 1887c83a sub r3,r3,r2 + 2bf18: 18000526 beq r3,zero,2bf30 <__udivdi3+0x94> + 2bf1c: 80e0983a sll r16,r16,r3 + 2bf20: 9884d83a srl r2,r19,r2 + 2bf24: 30e2983a sll r17,r6,r3 + 2bf28: 98e4983a sll r18,r19,r3 + 2bf2c: 142cb03a or r22,r2,r16 + 2bf30: 882ad43a srli r21,r17,16 + 2bf34: b009883a mov r4,r22 + 2bf38: 8d3fffcc andi r20,r17,65535 + 2bf3c: a80b883a mov r5,r21 + 2bf40: 00226400 call 22640 <__umodsi3> + 2bf44: b009883a mov r4,r22 + 2bf48: a80b883a mov r5,r21 + 2bf4c: 1027883a mov r19,r2 + 2bf50: 00225dc0 call 225dc <__udivsi3> + 2bf54: 102d883a mov r22,r2 + 2bf58: 9826943a slli r19,r19,16 + 2bf5c: 9004d43a srli r2,r18,16 + 2bf60: a5a1383a mul r16,r20,r22 + 2bf64: 14c4b03a or r2,r2,r19 + 2bf68: 1400052e bgeu r2,r16,2bf80 <__udivdi3+0xe4> + 2bf6c: 1445883a add r2,r2,r17 + 2bf70: b0ffffc4 addi r3,r22,-1 + 2bf74: 14400136 bltu r2,r17,2bf7c <__udivdi3+0xe0> + 2bf78: 14012336 bltu r2,r16,2c408 <__udivdi3+0x56c> + 2bf7c: 182d883a mov r22,r3 + 2bf80: 1421c83a sub r16,r2,r16 + 2bf84: a80b883a mov r5,r21 + 2bf88: 8009883a mov r4,r16 + 2bf8c: 00226400 call 22640 <__umodsi3> + 2bf90: 1027883a mov r19,r2 + 2bf94: a80b883a mov r5,r21 + 2bf98: 8009883a mov r4,r16 + 2bf9c: 00225dc0 call 225dc <__udivsi3> + 2bfa0: 9826943a slli r19,r19,16 + 2bfa4: a0a9383a mul r20,r20,r2 + 2bfa8: 94bfffcc andi r18,r18,65535 + 2bfac: 94e4b03a or r18,r18,r19 + 2bfb0: 9500052e bgeu r18,r20,2bfc8 <__udivdi3+0x12c> + 2bfb4: 8ca5883a add r18,r17,r18 + 2bfb8: 10ffffc4 addi r3,r2,-1 + 2bfbc: 9440f136 bltu r18,r17,2c384 <__udivdi3+0x4e8> + 2bfc0: 9500f02e bgeu r18,r20,2c384 <__udivdi3+0x4e8> + 2bfc4: 10bfff84 addi r2,r2,-2 + 2bfc8: b00c943a slli r6,r22,16 + 2bfcc: 0007883a mov r3,zero + 2bfd0: 3084b03a or r2,r6,r2 + 2bfd4: 00005906 br 2c13c <__udivdi3+0x2a0> + 2bfd8: 29c05636 bltu r5,r7,2c134 <__udivdi3+0x298> + 2bfdc: 00bfffd4 movui r2,65535 + 2bfe0: 11c0622e bgeu r2,r7,2c16c <__udivdi3+0x2d0> + 2bfe4: 00804034 movhi r2,256 + 2bfe8: 10bfffc4 addi r2,r2,-1 + 2bfec: 11c0ee36 bltu r2,r7,2c3a8 <__udivdi3+0x50c> + 2bff0: 00800404 movi r2,16 + 2bff4: 3886d83a srl r3,r7,r2 + 2bff8: 010000f4 movhi r4,3 + 2bffc: 21086e04 addi r4,r4,8632 + 2c000: 20c7883a add r3,r4,r3 + 2c004: 18c00003 ldbu r3,0(r3) + 2c008: 05400804 movi r21,32 + 2c00c: 1885883a add r2,r3,r2 + 2c010: a8abc83a sub r21,r21,r2 + 2c014: a800621e bne r21,zero,2c1a0 <__udivdi3+0x304> + 2c018: 3c00e936 bltu r7,r16,2c3c0 <__udivdi3+0x524> + 2c01c: 9985403a cmpgeu r2,r19,r6 + 2c020: 0007883a mov r3,zero + 2c024: 00004506 br 2c13c <__udivdi3+0x2a0> + 2c028: 3000041e bne r6,zero,2c03c <__udivdi3+0x1a0> + 2c02c: 000b883a mov r5,zero + 2c030: 01000044 movi r4,1 + 2c034: 00225dc0 call 225dc <__udivsi3> + 2c038: 1023883a mov r17,r2 + 2c03c: 00bfffd4 movui r2,65535 + 2c040: 14404e2e bgeu r2,r17,2c17c <__udivdi3+0x2e0> + 2c044: 00804034 movhi r2,256 + 2c048: 10bfffc4 addi r2,r2,-1 + 2c04c: 1440d836 bltu r2,r17,2c3b0 <__udivdi3+0x514> + 2c050: 00800404 movi r2,16 + 2c054: 8886d83a srl r3,r17,r2 + 2c058: 010000f4 movhi r4,3 + 2c05c: 21086e04 addi r4,r4,8632 + 2c060: 20c7883a add r3,r4,r3 + 2c064: 18c00003 ldbu r3,0(r3) + 2c068: 1885883a add r2,r3,r2 + 2c06c: 00c00804 movi r3,32 + 2c070: 1887c83a sub r3,r3,r2 + 2c074: 18008f1e bne r3,zero,2c2b4 <__udivdi3+0x418> + 2c078: 882ad43a srli r21,r17,16 + 2c07c: 8461c83a sub r16,r16,r17 + 2c080: 8d3fffcc andi r20,r17,65535 + 2c084: 00c00044 movi r3,1 + 2c088: 8009883a mov r4,r16 + 2c08c: a80b883a mov r5,r21 + 2c090: d8c00015 stw r3,0(sp) + 2c094: 00226400 call 22640 <__umodsi3> + 2c098: 8009883a mov r4,r16 + 2c09c: a80b883a mov r5,r21 + 2c0a0: 1027883a mov r19,r2 + 2c0a4: 00225dc0 call 225dc <__udivsi3> + 2c0a8: 9826943a slli r19,r19,16 + 2c0ac: 9008d43a srli r4,r18,16 + 2c0b0: 1521383a mul r16,r2,r20 + 2c0b4: 102d883a mov r22,r2 + 2c0b8: 24c8b03a or r4,r4,r19 + 2c0bc: d8c00017 ldw r3,0(sp) + 2c0c0: 2400052e bgeu r4,r16,2c0d8 <__udivdi3+0x23c> + 2c0c4: 2449883a add r4,r4,r17 + 2c0c8: b0bfffc4 addi r2,r22,-1 + 2c0cc: 24400136 bltu r4,r17,2c0d4 <__udivdi3+0x238> + 2c0d0: 2400ca36 bltu r4,r16,2c3fc <__udivdi3+0x560> + 2c0d4: 102d883a mov r22,r2 + 2c0d8: 2421c83a sub r16,r4,r16 + 2c0dc: a80b883a mov r5,r21 + 2c0e0: 8009883a mov r4,r16 + 2c0e4: d8c00015 stw r3,0(sp) + 2c0e8: 00226400 call 22640 <__umodsi3> + 2c0ec: 1027883a mov r19,r2 + 2c0f0: a80b883a mov r5,r21 + 2c0f4: 8009883a mov r4,r16 + 2c0f8: 00225dc0 call 225dc <__udivsi3> + 2c0fc: 9826943a slli r19,r19,16 + 2c100: 1529383a mul r20,r2,r20 + 2c104: 94bfffcc andi r18,r18,65535 + 2c108: 94e4b03a or r18,r18,r19 + 2c10c: d8c00017 ldw r3,0(sp) + 2c110: 9500052e bgeu r18,r20,2c128 <__udivdi3+0x28c> + 2c114: 8ca5883a add r18,r17,r18 + 2c118: 113fffc4 addi r4,r2,-1 + 2c11c: 94409736 bltu r18,r17,2c37c <__udivdi3+0x4e0> + 2c120: 9500962e bgeu r18,r20,2c37c <__udivdi3+0x4e0> + 2c124: 10bfff84 addi r2,r2,-2 + 2c128: b00c943a slli r6,r22,16 + 2c12c: 3084b03a or r2,r6,r2 + 2c130: 00000206 br 2c13c <__udivdi3+0x2a0> + 2c134: 0007883a mov r3,zero + 2c138: 0005883a mov r2,zero + 2c13c: dfc00a17 ldw ra,40(sp) + 2c140: df000917 ldw fp,36(sp) + 2c144: ddc00817 ldw r23,32(sp) + 2c148: dd800717 ldw r22,28(sp) + 2c14c: dd400617 ldw r21,24(sp) + 2c150: dd000517 ldw r20,20(sp) + 2c154: dcc00417 ldw r19,16(sp) + 2c158: dc800317 ldw r18,12(sp) + 2c15c: dc400217 ldw r17,8(sp) + 2c160: dc000117 ldw r16,4(sp) + 2c164: dec00b04 addi sp,sp,44 + 2c168: f800283a ret + 2c16c: 00803fc4 movi r2,255 + 2c170: 11c5803a cmpltu r2,r2,r7 + 2c174: 100490fa slli r2,r2,3 + 2c178: 003f9e06 br 2bff4 <_gp+0xfffefabc> + 2c17c: 00803fc4 movi r2,255 + 2c180: 1445803a cmpltu r2,r2,r17 + 2c184: 100490fa slli r2,r2,3 + 2c188: 003fb206 br 2c054 <_gp+0xfffefb1c> + 2c18c: 00804034 movhi r2,256 + 2c190: 10bfffc4 addi r2,r2,-1 + 2c194: 11808836 bltu r2,r6,2c3b8 <__udivdi3+0x51c> + 2c198: 00800404 movi r2,16 + 2c19c: 003f5606 br 2bef8 <_gp+0xfffef9c0> + 2c1a0: 30aed83a srl r23,r6,r2 + 2c1a4: 3d4e983a sll r7,r7,r21 + 2c1a8: 80acd83a srl r22,r16,r2 + 2c1ac: 9884d83a srl r2,r19,r2 + 2c1b0: 3deeb03a or r23,r7,r23 + 2c1b4: b824d43a srli r18,r23,16 + 2c1b8: 8560983a sll r16,r16,r21 + 2c1bc: b009883a mov r4,r22 + 2c1c0: 900b883a mov r5,r18 + 2c1c4: 3568983a sll r20,r6,r21 + 2c1c8: 1420b03a or r16,r2,r16 + 2c1cc: 00226400 call 22640 <__umodsi3> + 2c1d0: b009883a mov r4,r22 + 2c1d4: 900b883a mov r5,r18 + 2c1d8: 1023883a mov r17,r2 + 2c1dc: 00225dc0 call 225dc <__udivsi3> + 2c1e0: 8808943a slli r4,r17,16 + 2c1e4: bf3fffcc andi fp,r23,65535 + 2c1e8: 8006d43a srli r3,r16,16 + 2c1ec: e0a3383a mul r17,fp,r2 + 2c1f0: 100d883a mov r6,r2 + 2c1f4: 1906b03a or r3,r3,r4 + 2c1f8: 1c40042e bgeu r3,r17,2c20c <__udivdi3+0x370> + 2c1fc: 1dc7883a add r3,r3,r23 + 2c200: 10bfffc4 addi r2,r2,-1 + 2c204: 1dc0752e bgeu r3,r23,2c3dc <__udivdi3+0x540> + 2c208: 100d883a mov r6,r2 + 2c20c: 1c63c83a sub r17,r3,r17 + 2c210: 900b883a mov r5,r18 + 2c214: 8809883a mov r4,r17 + 2c218: d9800015 stw r6,0(sp) + 2c21c: 00226400 call 22640 <__umodsi3> + 2c220: 102d883a mov r22,r2 + 2c224: 8809883a mov r4,r17 + 2c228: 900b883a mov r5,r18 + 2c22c: 00225dc0 call 225dc <__udivsi3> + 2c230: b02c943a slli r22,r22,16 + 2c234: e089383a mul r4,fp,r2 + 2c238: 843fffcc andi r16,r16,65535 + 2c23c: 85a0b03a or r16,r16,r22 + 2c240: d9800017 ldw r6,0(sp) + 2c244: 8100042e bgeu r16,r4,2c258 <__udivdi3+0x3bc> + 2c248: 85e1883a add r16,r16,r23 + 2c24c: 10ffffc4 addi r3,r2,-1 + 2c250: 85c05e2e bgeu r16,r23,2c3cc <__udivdi3+0x530> + 2c254: 1805883a mov r2,r3 + 2c258: 300c943a slli r6,r6,16 + 2c25c: a17fffcc andi r5,r20,65535 + 2c260: a028d43a srli r20,r20,16 + 2c264: 3084b03a or r2,r6,r2 + 2c268: 10ffffcc andi r3,r2,65535 + 2c26c: 100cd43a srli r6,r2,16 + 2c270: 194f383a mul r7,r3,r5 + 2c274: 1d07383a mul r3,r3,r20 + 2c278: 314b383a mul r5,r6,r5 + 2c27c: 3810d43a srli r8,r7,16 + 2c280: 8121c83a sub r16,r16,r4 + 2c284: 1947883a add r3,r3,r5 + 2c288: 40c7883a add r3,r8,r3 + 2c28c: 350d383a mul r6,r6,r20 + 2c290: 1940022e bgeu r3,r5,2c29c <__udivdi3+0x400> + 2c294: 01000074 movhi r4,1 + 2c298: 310d883a add r6,r6,r4 + 2c29c: 1828d43a srli r20,r3,16 + 2c2a0: a18d883a add r6,r20,r6 + 2c2a4: 81803e36 bltu r16,r6,2c3a0 <__udivdi3+0x504> + 2c2a8: 81803826 beq r16,r6,2c38c <__udivdi3+0x4f0> + 2c2ac: 0007883a mov r3,zero + 2c2b0: 003fa206 br 2c13c <_gp+0xfffefc04> + 2c2b4: 88e2983a sll r17,r17,r3 + 2c2b8: 80a8d83a srl r20,r16,r2 + 2c2bc: 80e0983a sll r16,r16,r3 + 2c2c0: 882ad43a srli r21,r17,16 + 2c2c4: 9884d83a srl r2,r19,r2 + 2c2c8: a009883a mov r4,r20 + 2c2cc: a80b883a mov r5,r21 + 2c2d0: 142eb03a or r23,r2,r16 + 2c2d4: 98e4983a sll r18,r19,r3 + 2c2d8: 00226400 call 22640 <__umodsi3> + 2c2dc: a009883a mov r4,r20 + 2c2e0: a80b883a mov r5,r21 + 2c2e4: 1021883a mov r16,r2 + 2c2e8: 00225dc0 call 225dc <__udivsi3> + 2c2ec: 1039883a mov fp,r2 + 2c2f0: 8d3fffcc andi r20,r17,65535 + 2c2f4: 8020943a slli r16,r16,16 + 2c2f8: b804d43a srli r2,r23,16 + 2c2fc: a72d383a mul r22,r20,fp + 2c300: 1404b03a or r2,r2,r16 + 2c304: 1580062e bgeu r2,r22,2c320 <__udivdi3+0x484> + 2c308: 1445883a add r2,r2,r17 + 2c30c: e0ffffc4 addi r3,fp,-1 + 2c310: 14403836 bltu r2,r17,2c3f4 <__udivdi3+0x558> + 2c314: 1580372e bgeu r2,r22,2c3f4 <__udivdi3+0x558> + 2c318: e73fff84 addi fp,fp,-2 + 2c31c: 1445883a add r2,r2,r17 + 2c320: 15adc83a sub r22,r2,r22 + 2c324: a80b883a mov r5,r21 + 2c328: b009883a mov r4,r22 + 2c32c: 00226400 call 22640 <__umodsi3> + 2c330: 1027883a mov r19,r2 + 2c334: b009883a mov r4,r22 + 2c338: a80b883a mov r5,r21 + 2c33c: 00225dc0 call 225dc <__udivsi3> + 2c340: 9826943a slli r19,r19,16 + 2c344: a0a1383a mul r16,r20,r2 + 2c348: b93fffcc andi r4,r23,65535 + 2c34c: 24c8b03a or r4,r4,r19 + 2c350: 2400062e bgeu r4,r16,2c36c <__udivdi3+0x4d0> + 2c354: 2449883a add r4,r4,r17 + 2c358: 10ffffc4 addi r3,r2,-1 + 2c35c: 24402336 bltu r4,r17,2c3ec <__udivdi3+0x550> + 2c360: 2400222e bgeu r4,r16,2c3ec <__udivdi3+0x550> + 2c364: 10bfff84 addi r2,r2,-2 + 2c368: 2449883a add r4,r4,r17 + 2c36c: e038943a slli fp,fp,16 + 2c370: 2421c83a sub r16,r4,r16 + 2c374: e086b03a or r3,fp,r2 + 2c378: 003f4306 br 2c088 <_gp+0xfffefb50> + 2c37c: 2005883a mov r2,r4 + 2c380: 003f6906 br 2c128 <_gp+0xfffefbf0> + 2c384: 1805883a mov r2,r3 + 2c388: 003f0f06 br 2bfc8 <_gp+0xfffefa90> + 2c38c: 1806943a slli r3,r3,16 + 2c390: 9d66983a sll r19,r19,r21 + 2c394: 39ffffcc andi r7,r7,65535 + 2c398: 19c7883a add r3,r3,r7 + 2c39c: 98ffc32e bgeu r19,r3,2c2ac <_gp+0xfffefd74> + 2c3a0: 10bfffc4 addi r2,r2,-1 + 2c3a4: 003fc106 br 2c2ac <_gp+0xfffefd74> + 2c3a8: 00800604 movi r2,24 + 2c3ac: 003f1106 br 2bff4 <_gp+0xfffefabc> + 2c3b0: 00800604 movi r2,24 + 2c3b4: 003f2706 br 2c054 <_gp+0xfffefb1c> + 2c3b8: 00800604 movi r2,24 + 2c3bc: 003ece06 br 2bef8 <_gp+0xfffef9c0> + 2c3c0: 0007883a mov r3,zero + 2c3c4: 00800044 movi r2,1 + 2c3c8: 003f5c06 br 2c13c <_gp+0xfffefc04> + 2c3cc: 813fa12e bgeu r16,r4,2c254 <_gp+0xfffefd1c> + 2c3d0: 10bfff84 addi r2,r2,-2 + 2c3d4: 85e1883a add r16,r16,r23 + 2c3d8: 003f9f06 br 2c258 <_gp+0xfffefd20> + 2c3dc: 1c7f8a2e bgeu r3,r17,2c208 <_gp+0xfffefcd0> + 2c3e0: 31bfff84 addi r6,r6,-2 + 2c3e4: 1dc7883a add r3,r3,r23 + 2c3e8: 003f8806 br 2c20c <_gp+0xfffefcd4> + 2c3ec: 1805883a mov r2,r3 + 2c3f0: 003fde06 br 2c36c <_gp+0xfffefe34> + 2c3f4: 1839883a mov fp,r3 + 2c3f8: 003fc906 br 2c320 <_gp+0xfffefde8> + 2c3fc: b5bfff84 addi r22,r22,-2 + 2c400: 2449883a add r4,r4,r17 + 2c404: 003f3406 br 2c0d8 <_gp+0xfffefba0> + 2c408: b5bfff84 addi r22,r22,-2 + 2c40c: 1445883a add r2,r2,r17 + 2c410: 003edb06 br 2bf80 <_gp+0xfffefa48> + +0002c414 <__umoddi3>: + 2c414: defff404 addi sp,sp,-48 + 2c418: df000a15 stw fp,40(sp) + 2c41c: dc400315 stw r17,12(sp) + 2c420: dc000215 stw r16,8(sp) + 2c424: dfc00b15 stw ra,44(sp) + 2c428: ddc00915 stw r23,36(sp) + 2c42c: dd800815 stw r22,32(sp) + 2c430: dd400715 stw r21,28(sp) + 2c434: dd000615 stw r20,24(sp) + 2c438: dcc00515 stw r19,20(sp) + 2c43c: dc800415 stw r18,16(sp) + 2c440: 2021883a mov r16,r4 + 2c444: 2823883a mov r17,r5 + 2c448: 2839883a mov fp,r5 + 2c44c: 38003c1e bne r7,zero,2c540 <__umoddi3+0x12c> + 2c450: 3027883a mov r19,r6 + 2c454: 2029883a mov r20,r4 + 2c458: 2980512e bgeu r5,r6,2c5a0 <__umoddi3+0x18c> + 2c45c: 00bfffd4 movui r2,65535 + 2c460: 11809a36 bltu r2,r6,2c6cc <__umoddi3+0x2b8> + 2c464: 01003fc4 movi r4,255 + 2c468: 2189803a cmpltu r4,r4,r6 + 2c46c: 200890fa slli r4,r4,3 + 2c470: 3104d83a srl r2,r6,r4 + 2c474: 00c000f4 movhi r3,3 + 2c478: 18c86e04 addi r3,r3,8632 + 2c47c: 1885883a add r2,r3,r2 + 2c480: 10c00003 ldbu r3,0(r2) + 2c484: 00800804 movi r2,32 + 2c488: 1909883a add r4,r3,r4 + 2c48c: 1125c83a sub r18,r2,r4 + 2c490: 90000526 beq r18,zero,2c4a8 <__umoddi3+0x94> + 2c494: 8ca2983a sll r17,r17,r18 + 2c498: 8108d83a srl r4,r16,r4 + 2c49c: 34a6983a sll r19,r6,r18 + 2c4a0: 84a8983a sll r20,r16,r18 + 2c4a4: 2478b03a or fp,r4,r17 + 2c4a8: 982ed43a srli r23,r19,16 + 2c4ac: e009883a mov r4,fp + 2c4b0: 9dbfffcc andi r22,r19,65535 + 2c4b4: b80b883a mov r5,r23 + 2c4b8: 00226400 call 22640 <__umodsi3> + 2c4bc: e009883a mov r4,fp + 2c4c0: b80b883a mov r5,r23 + 2c4c4: 102b883a mov r21,r2 + 2c4c8: 00225dc0 call 225dc <__udivsi3> + 2c4cc: a806943a slli r3,r21,16 + 2c4d0: a008d43a srli r4,r20,16 + 2c4d4: b085383a mul r2,r22,r2 + 2c4d8: 20c8b03a or r4,r4,r3 + 2c4dc: 2080032e bgeu r4,r2,2c4ec <__umoddi3+0xd8> + 2c4e0: 24c9883a add r4,r4,r19 + 2c4e4: 24c00136 bltu r4,r19,2c4ec <__umoddi3+0xd8> + 2c4e8: 20811036 bltu r4,r2,2c92c <__umoddi3+0x518> + 2c4ec: 20abc83a sub r21,r4,r2 + 2c4f0: b80b883a mov r5,r23 + 2c4f4: a809883a mov r4,r21 + 2c4f8: 00226400 call 22640 <__umodsi3> + 2c4fc: 1023883a mov r17,r2 + 2c500: b80b883a mov r5,r23 + 2c504: a809883a mov r4,r21 + 2c508: 00225dc0 call 225dc <__udivsi3> + 2c50c: 8822943a slli r17,r17,16 + 2c510: b085383a mul r2,r22,r2 + 2c514: a0ffffcc andi r3,r20,65535 + 2c518: 1c46b03a or r3,r3,r17 + 2c51c: 1880042e bgeu r3,r2,2c530 <__umoddi3+0x11c> + 2c520: 1cc7883a add r3,r3,r19 + 2c524: 1cc00236 bltu r3,r19,2c530 <__umoddi3+0x11c> + 2c528: 1880012e bgeu r3,r2,2c530 <__umoddi3+0x11c> + 2c52c: 1cc7883a add r3,r3,r19 + 2c530: 1885c83a sub r2,r3,r2 + 2c534: 1484d83a srl r2,r2,r18 + 2c538: 0007883a mov r3,zero + 2c53c: 00004f06 br 2c67c <__umoddi3+0x268> + 2c540: 29c04c36 bltu r5,r7,2c674 <__umoddi3+0x260> + 2c544: 00bfffd4 movui r2,65535 + 2c548: 11c0582e bgeu r2,r7,2c6ac <__umoddi3+0x298> + 2c54c: 00804034 movhi r2,256 + 2c550: 10bfffc4 addi r2,r2,-1 + 2c554: 11c0e736 bltu r2,r7,2c8f4 <__umoddi3+0x4e0> + 2c558: 01000404 movi r4,16 + 2c55c: 3904d83a srl r2,r7,r4 + 2c560: 00c000f4 movhi r3,3 + 2c564: 18c86e04 addi r3,r3,8632 + 2c568: 1885883a add r2,r3,r2 + 2c56c: 14c00003 ldbu r19,0(r2) + 2c570: 00c00804 movi r3,32 + 2c574: 9927883a add r19,r19,r4 + 2c578: 1ce9c83a sub r20,r3,r19 + 2c57c: a000581e bne r20,zero,2c6e0 <__umoddi3+0x2cc> + 2c580: 3c400136 bltu r7,r17,2c588 <__umoddi3+0x174> + 2c584: 8180eb36 bltu r16,r6,2c934 <__umoddi3+0x520> + 2c588: 8185c83a sub r2,r16,r6 + 2c58c: 89e3c83a sub r17,r17,r7 + 2c590: 8089803a cmpltu r4,r16,r2 + 2c594: 8939c83a sub fp,r17,r4 + 2c598: e007883a mov r3,fp + 2c59c: 00003706 br 2c67c <__umoddi3+0x268> + 2c5a0: 3000041e bne r6,zero,2c5b4 <__umoddi3+0x1a0> + 2c5a4: 000b883a mov r5,zero + 2c5a8: 01000044 movi r4,1 + 2c5ac: 00225dc0 call 225dc <__udivsi3> + 2c5b0: 1027883a mov r19,r2 + 2c5b4: 00bfffd4 movui r2,65535 + 2c5b8: 14c0402e bgeu r2,r19,2c6bc <__umoddi3+0x2a8> + 2c5bc: 00804034 movhi r2,256 + 2c5c0: 10bfffc4 addi r2,r2,-1 + 2c5c4: 14c0cd36 bltu r2,r19,2c8fc <__umoddi3+0x4e8> + 2c5c8: 00800404 movi r2,16 + 2c5cc: 9886d83a srl r3,r19,r2 + 2c5d0: 010000f4 movhi r4,3 + 2c5d4: 21086e04 addi r4,r4,8632 + 2c5d8: 20c7883a add r3,r4,r3 + 2c5dc: 18c00003 ldbu r3,0(r3) + 2c5e0: 1887883a add r3,r3,r2 + 2c5e4: 00800804 movi r2,32 + 2c5e8: 10e5c83a sub r18,r2,r3 + 2c5ec: 9000901e bne r18,zero,2c830 <__umoddi3+0x41c> + 2c5f0: 982cd43a srli r22,r19,16 + 2c5f4: 8ce3c83a sub r17,r17,r19 + 2c5f8: 9d7fffcc andi r21,r19,65535 + 2c5fc: b00b883a mov r5,r22 + 2c600: 8809883a mov r4,r17 + 2c604: 00226400 call 22640 <__umodsi3> + 2c608: 8809883a mov r4,r17 + 2c60c: b00b883a mov r5,r22 + 2c610: 1021883a mov r16,r2 + 2c614: 00225dc0 call 225dc <__udivsi3> + 2c618: 8006943a slli r3,r16,16 + 2c61c: a008d43a srli r4,r20,16 + 2c620: 1545383a mul r2,r2,r21 + 2c624: 20c8b03a or r4,r4,r3 + 2c628: 2080042e bgeu r4,r2,2c63c <__umoddi3+0x228> + 2c62c: 24c9883a add r4,r4,r19 + 2c630: 24c00236 bltu r4,r19,2c63c <__umoddi3+0x228> + 2c634: 2080012e bgeu r4,r2,2c63c <__umoddi3+0x228> + 2c638: 24c9883a add r4,r4,r19 + 2c63c: 20a1c83a sub r16,r4,r2 + 2c640: b00b883a mov r5,r22 + 2c644: 8009883a mov r4,r16 + 2c648: 00226400 call 22640 <__umodsi3> + 2c64c: 1023883a mov r17,r2 + 2c650: b00b883a mov r5,r22 + 2c654: 8009883a mov r4,r16 + 2c658: 00225dc0 call 225dc <__udivsi3> + 2c65c: 8822943a slli r17,r17,16 + 2c660: 1545383a mul r2,r2,r21 + 2c664: a53fffcc andi r20,r20,65535 + 2c668: a446b03a or r3,r20,r17 + 2c66c: 18bfb02e bgeu r3,r2,2c530 <_gp+0xfffefff8> + 2c670: 003fab06 br 2c520 <_gp+0xfffeffe8> + 2c674: 2005883a mov r2,r4 + 2c678: 2807883a mov r3,r5 + 2c67c: dfc00b17 ldw ra,44(sp) + 2c680: df000a17 ldw fp,40(sp) + 2c684: ddc00917 ldw r23,36(sp) + 2c688: dd800817 ldw r22,32(sp) + 2c68c: dd400717 ldw r21,28(sp) + 2c690: dd000617 ldw r20,24(sp) + 2c694: dcc00517 ldw r19,20(sp) + 2c698: dc800417 ldw r18,16(sp) + 2c69c: dc400317 ldw r17,12(sp) + 2c6a0: dc000217 ldw r16,8(sp) + 2c6a4: dec00c04 addi sp,sp,48 + 2c6a8: f800283a ret + 2c6ac: 04c03fc4 movi r19,255 + 2c6b0: 99c9803a cmpltu r4,r19,r7 + 2c6b4: 200890fa slli r4,r4,3 + 2c6b8: 003fa806 br 2c55c <_gp+0xffff0024> + 2c6bc: 00803fc4 movi r2,255 + 2c6c0: 14c5803a cmpltu r2,r2,r19 + 2c6c4: 100490fa slli r2,r2,3 + 2c6c8: 003fc006 br 2c5cc <_gp+0xffff0094> + 2c6cc: 00804034 movhi r2,256 + 2c6d0: 10bfffc4 addi r2,r2,-1 + 2c6d4: 11808b36 bltu r2,r6,2c904 <__umoddi3+0x4f0> + 2c6d8: 01000404 movi r4,16 + 2c6dc: 003f6406 br 2c470 <_gp+0xfffeff38> + 2c6e0: 34c4d83a srl r2,r6,r19 + 2c6e4: 3d0e983a sll r7,r7,r20 + 2c6e8: 8cf8d83a srl fp,r17,r19 + 2c6ec: 8d10983a sll r8,r17,r20 + 2c6f0: 38aab03a or r21,r7,r2 + 2c6f4: a82cd43a srli r22,r21,16 + 2c6f8: 84e2d83a srl r17,r16,r19 + 2c6fc: e009883a mov r4,fp + 2c700: b00b883a mov r5,r22 + 2c704: 8a22b03a or r17,r17,r8 + 2c708: 3524983a sll r18,r6,r20 + 2c70c: 00226400 call 22640 <__umodsi3> + 2c710: e009883a mov r4,fp + 2c714: b00b883a mov r5,r22 + 2c718: 102f883a mov r23,r2 + 2c71c: 00225dc0 call 225dc <__udivsi3> + 2c720: 100d883a mov r6,r2 + 2c724: b808943a slli r4,r23,16 + 2c728: aa3fffcc andi r8,r21,65535 + 2c72c: 8804d43a srli r2,r17,16 + 2c730: 41af383a mul r23,r8,r6 + 2c734: 8520983a sll r16,r16,r20 + 2c738: 1104b03a or r2,r2,r4 + 2c73c: 15c0042e bgeu r2,r23,2c750 <__umoddi3+0x33c> + 2c740: 1545883a add r2,r2,r21 + 2c744: 30ffffc4 addi r3,r6,-1 + 2c748: 1540742e bgeu r2,r21,2c91c <__umoddi3+0x508> + 2c74c: 180d883a mov r6,r3 + 2c750: 15efc83a sub r23,r2,r23 + 2c754: b00b883a mov r5,r22 + 2c758: b809883a mov r4,r23 + 2c75c: d9800115 stw r6,4(sp) + 2c760: da000015 stw r8,0(sp) + 2c764: 00226400 call 22640 <__umodsi3> + 2c768: b00b883a mov r5,r22 + 2c76c: b809883a mov r4,r23 + 2c770: 1039883a mov fp,r2 + 2c774: 00225dc0 call 225dc <__udivsi3> + 2c778: da000017 ldw r8,0(sp) + 2c77c: e038943a slli fp,fp,16 + 2c780: 100b883a mov r5,r2 + 2c784: 4089383a mul r4,r8,r2 + 2c788: 8a3fffcc andi r8,r17,65535 + 2c78c: 4710b03a or r8,r8,fp + 2c790: d9800117 ldw r6,4(sp) + 2c794: 4100042e bgeu r8,r4,2c7a8 <__umoddi3+0x394> + 2c798: 4551883a add r8,r8,r21 + 2c79c: 10bfffc4 addi r2,r2,-1 + 2c7a0: 45405a2e bgeu r8,r21,2c90c <__umoddi3+0x4f8> + 2c7a4: 100b883a mov r5,r2 + 2c7a8: 300c943a slli r6,r6,16 + 2c7ac: 91ffffcc andi r7,r18,65535 + 2c7b0: 9004d43a srli r2,r18,16 + 2c7b4: 314cb03a or r6,r6,r5 + 2c7b8: 317fffcc andi r5,r6,65535 + 2c7bc: 300cd43a srli r6,r6,16 + 2c7c0: 29d3383a mul r9,r5,r7 + 2c7c4: 288b383a mul r5,r5,r2 + 2c7c8: 31cf383a mul r7,r6,r7 + 2c7cc: 4806d43a srli r3,r9,16 + 2c7d0: 4111c83a sub r8,r8,r4 + 2c7d4: 29cb883a add r5,r5,r7 + 2c7d8: 194b883a add r5,r3,r5 + 2c7dc: 3085383a mul r2,r6,r2 + 2c7e0: 29c0022e bgeu r5,r7,2c7ec <__umoddi3+0x3d8> + 2c7e4: 00c00074 movhi r3,1 + 2c7e8: 10c5883a add r2,r2,r3 + 2c7ec: 2808d43a srli r4,r5,16 + 2c7f0: 280a943a slli r5,r5,16 + 2c7f4: 4a7fffcc andi r9,r9,65535 + 2c7f8: 2085883a add r2,r4,r2 + 2c7fc: 2a4b883a add r5,r5,r9 + 2c800: 40803636 bltu r8,r2,2c8dc <__umoddi3+0x4c8> + 2c804: 40804d26 beq r8,r2,2c93c <__umoddi3+0x528> + 2c808: 4089c83a sub r4,r8,r2 + 2c80c: 280f883a mov r7,r5 + 2c810: 81cfc83a sub r7,r16,r7 + 2c814: 81c7803a cmpltu r3,r16,r7 + 2c818: 20c7c83a sub r3,r4,r3 + 2c81c: 1cc4983a sll r2,r3,r19 + 2c820: 3d0ed83a srl r7,r7,r20 + 2c824: 1d06d83a srl r3,r3,r20 + 2c828: 11c4b03a or r2,r2,r7 + 2c82c: 003f9306 br 2c67c <_gp+0xffff0144> + 2c830: 9ca6983a sll r19,r19,r18 + 2c834: 88e8d83a srl r20,r17,r3 + 2c838: 80c4d83a srl r2,r16,r3 + 2c83c: 982cd43a srli r22,r19,16 + 2c840: 8ca2983a sll r17,r17,r18 + 2c844: a009883a mov r4,r20 + 2c848: b00b883a mov r5,r22 + 2c84c: 1478b03a or fp,r2,r17 + 2c850: 00226400 call 22640 <__umodsi3> + 2c854: a009883a mov r4,r20 + 2c858: b00b883a mov r5,r22 + 2c85c: 1023883a mov r17,r2 + 2c860: 00225dc0 call 225dc <__udivsi3> + 2c864: 9d7fffcc andi r21,r19,65535 + 2c868: 880a943a slli r5,r17,16 + 2c86c: e008d43a srli r4,fp,16 + 2c870: a885383a mul r2,r21,r2 + 2c874: 84a8983a sll r20,r16,r18 + 2c878: 2148b03a or r4,r4,r5 + 2c87c: 2080042e bgeu r4,r2,2c890 <__umoddi3+0x47c> + 2c880: 24c9883a add r4,r4,r19 + 2c884: 24c00236 bltu r4,r19,2c890 <__umoddi3+0x47c> + 2c888: 2080012e bgeu r4,r2,2c890 <__umoddi3+0x47c> + 2c88c: 24c9883a add r4,r4,r19 + 2c890: 20a3c83a sub r17,r4,r2 + 2c894: b00b883a mov r5,r22 + 2c898: 8809883a mov r4,r17 + 2c89c: 00226400 call 22640 <__umodsi3> + 2c8a0: 102f883a mov r23,r2 + 2c8a4: 8809883a mov r4,r17 + 2c8a8: b00b883a mov r5,r22 + 2c8ac: 00225dc0 call 225dc <__udivsi3> + 2c8b0: b82e943a slli r23,r23,16 + 2c8b4: a885383a mul r2,r21,r2 + 2c8b8: e13fffcc andi r4,fp,65535 + 2c8bc: 25c8b03a or r4,r4,r23 + 2c8c0: 2080042e bgeu r4,r2,2c8d4 <__umoddi3+0x4c0> + 2c8c4: 24c9883a add r4,r4,r19 + 2c8c8: 24c00236 bltu r4,r19,2c8d4 <__umoddi3+0x4c0> + 2c8cc: 2080012e bgeu r4,r2,2c8d4 <__umoddi3+0x4c0> + 2c8d0: 24c9883a add r4,r4,r19 + 2c8d4: 20a3c83a sub r17,r4,r2 + 2c8d8: 003f4806 br 2c5fc <_gp+0xffff00c4> + 2c8dc: 2c8fc83a sub r7,r5,r18 + 2c8e0: 1545c83a sub r2,r2,r21 + 2c8e4: 29cb803a cmpltu r5,r5,r7 + 2c8e8: 1145c83a sub r2,r2,r5 + 2c8ec: 4089c83a sub r4,r8,r2 + 2c8f0: 003fc706 br 2c810 <_gp+0xffff02d8> + 2c8f4: 01000604 movi r4,24 + 2c8f8: 003f1806 br 2c55c <_gp+0xffff0024> + 2c8fc: 00800604 movi r2,24 + 2c900: 003f3206 br 2c5cc <_gp+0xffff0094> + 2c904: 01000604 movi r4,24 + 2c908: 003ed906 br 2c470 <_gp+0xfffeff38> + 2c90c: 413fa52e bgeu r8,r4,2c7a4 <_gp+0xffff026c> + 2c910: 297fff84 addi r5,r5,-2 + 2c914: 4551883a add r8,r8,r21 + 2c918: 003fa306 br 2c7a8 <_gp+0xffff0270> + 2c91c: 15ff8b2e bgeu r2,r23,2c74c <_gp+0xffff0214> + 2c920: 31bfff84 addi r6,r6,-2 + 2c924: 1545883a add r2,r2,r21 + 2c928: 003f8906 br 2c750 <_gp+0xffff0218> + 2c92c: 24c9883a add r4,r4,r19 + 2c930: 003eee06 br 2c4ec <_gp+0xfffeffb4> + 2c934: 8005883a mov r2,r16 + 2c938: 003f1706 br 2c598 <_gp+0xffff0060> + 2c93c: 817fe736 bltu r16,r5,2c8dc <_gp+0xffff03a4> + 2c940: 280f883a mov r7,r5 + 2c944: 0009883a mov r4,zero + 2c948: 003fb106 br 2c810 <_gp+0xffff02d8> + +0002c94c <__adddf3>: + 2c94c: 02c00434 movhi r11,16 + 2c950: 5affffc4 addi r11,r11,-1 + 2c954: 2806d7fa srli r3,r5,31 + 2c958: 2ad4703a and r10,r5,r11 + 2c95c: 3ad2703a and r9,r7,r11 + 2c960: 3804d53a srli r2,r7,20 + 2c964: 3018d77a srli r12,r6,29 + 2c968: 280ad53a srli r5,r5,20 + 2c96c: 501490fa slli r10,r10,3 + 2c970: 2010d77a srli r8,r4,29 + 2c974: 481290fa slli r9,r9,3 + 2c978: 380ed7fa srli r7,r7,31 + 2c97c: defffb04 addi sp,sp,-20 + 2c980: dc800215 stw r18,8(sp) + 2c984: dc400115 stw r17,4(sp) + 2c988: dc000015 stw r16,0(sp) + 2c98c: dfc00415 stw ra,16(sp) + 2c990: dcc00315 stw r19,12(sp) + 2c994: 1c803fcc andi r18,r3,255 + 2c998: 2c01ffcc andi r16,r5,2047 + 2c99c: 5210b03a or r8,r10,r8 + 2c9a0: 202290fa slli r17,r4,3 + 2c9a4: 1081ffcc andi r2,r2,2047 + 2c9a8: 4b12b03a or r9,r9,r12 + 2c9ac: 300c90fa slli r6,r6,3 + 2c9b0: 91c07526 beq r18,r7,2cb88 <__adddf3+0x23c> + 2c9b4: 8087c83a sub r3,r16,r2 + 2c9b8: 00c0ab0e bge zero,r3,2cc68 <__adddf3+0x31c> + 2c9bc: 10002a1e bne r2,zero,2ca68 <__adddf3+0x11c> + 2c9c0: 4984b03a or r2,r9,r6 + 2c9c4: 1000961e bne r2,zero,2cc20 <__adddf3+0x2d4> + 2c9c8: 888001cc andi r2,r17,7 + 2c9cc: 10000726 beq r2,zero,2c9ec <__adddf3+0xa0> + 2c9d0: 888003cc andi r2,r17,15 + 2c9d4: 00c00104 movi r3,4 + 2c9d8: 10c00426 beq r2,r3,2c9ec <__adddf3+0xa0> + 2c9dc: 88c7883a add r3,r17,r3 + 2c9e0: 1c63803a cmpltu r17,r3,r17 + 2c9e4: 4451883a add r8,r8,r17 + 2c9e8: 1823883a mov r17,r3 + 2c9ec: 4080202c andhi r2,r8,128 + 2c9f0: 10005926 beq r2,zero,2cb58 <__adddf3+0x20c> + 2c9f4: 84000044 addi r16,r16,1 + 2c9f8: 0081ffc4 movi r2,2047 + 2c9fc: 8080ba26 beq r16,r2,2cce8 <__adddf3+0x39c> + 2ca00: 00bfe034 movhi r2,65408 + 2ca04: 10bfffc4 addi r2,r2,-1 + 2ca08: 4090703a and r8,r8,r2 + 2ca0c: 4004977a slli r2,r8,29 + 2ca10: 4010927a slli r8,r8,9 + 2ca14: 8822d0fa srli r17,r17,3 + 2ca18: 8401ffcc andi r16,r16,2047 + 2ca1c: 4010d33a srli r8,r8,12 + 2ca20: 9007883a mov r3,r18 + 2ca24: 1444b03a or r2,r2,r17 + 2ca28: 8401ffcc andi r16,r16,2047 + 2ca2c: 8020953a slli r16,r16,20 + 2ca30: 18c03fcc andi r3,r3,255 + 2ca34: 01000434 movhi r4,16 + 2ca38: 213fffc4 addi r4,r4,-1 + 2ca3c: 180697fa slli r3,r3,31 + 2ca40: 4110703a and r8,r8,r4 + 2ca44: 4410b03a or r8,r8,r16 + 2ca48: 40c6b03a or r3,r8,r3 + 2ca4c: dfc00417 ldw ra,16(sp) + 2ca50: dcc00317 ldw r19,12(sp) + 2ca54: dc800217 ldw r18,8(sp) + 2ca58: dc400117 ldw r17,4(sp) + 2ca5c: dc000017 ldw r16,0(sp) + 2ca60: dec00504 addi sp,sp,20 + 2ca64: f800283a ret + 2ca68: 0081ffc4 movi r2,2047 + 2ca6c: 80bfd626 beq r16,r2,2c9c8 <_gp+0xffff0490> + 2ca70: 4a402034 orhi r9,r9,128 + 2ca74: 00800e04 movi r2,56 + 2ca78: 10c09f16 blt r2,r3,2ccf8 <__adddf3+0x3ac> + 2ca7c: 008007c4 movi r2,31 + 2ca80: 10c0c216 blt r2,r3,2cd8c <__adddf3+0x440> + 2ca84: 00800804 movi r2,32 + 2ca88: 10c5c83a sub r2,r2,r3 + 2ca8c: 488a983a sll r5,r9,r2 + 2ca90: 30c8d83a srl r4,r6,r3 + 2ca94: 3084983a sll r2,r6,r2 + 2ca98: 48c6d83a srl r3,r9,r3 + 2ca9c: 290cb03a or r6,r5,r4 + 2caa0: 1004c03a cmpne r2,r2,zero + 2caa4: 308cb03a or r6,r6,r2 + 2caa8: 898dc83a sub r6,r17,r6 + 2caac: 89a3803a cmpltu r17,r17,r6 + 2cab0: 40d1c83a sub r8,r8,r3 + 2cab4: 4451c83a sub r8,r8,r17 + 2cab8: 3023883a mov r17,r6 + 2cabc: 4080202c andhi r2,r8,128 + 2cac0: 10002326 beq r2,zero,2cb50 <__adddf3+0x204> + 2cac4: 04c02034 movhi r19,128 + 2cac8: 9cffffc4 addi r19,r19,-1 + 2cacc: 44e6703a and r19,r8,r19 + 2cad0: 98007626 beq r19,zero,2ccac <__adddf3+0x360> + 2cad4: 9809883a mov r4,r19 + 2cad8: 002ef500 call 2ef50 <__clzsi2> + 2cadc: 10fffe04 addi r3,r2,-8 + 2cae0: 010007c4 movi r4,31 + 2cae4: 20c07716 blt r4,r3,2ccc4 <__adddf3+0x378> + 2cae8: 00800804 movi r2,32 + 2caec: 10c5c83a sub r2,r2,r3 + 2caf0: 8884d83a srl r2,r17,r2 + 2caf4: 98d0983a sll r8,r19,r3 + 2caf8: 88e2983a sll r17,r17,r3 + 2cafc: 1204b03a or r2,r2,r8 + 2cb00: 1c007416 blt r3,r16,2ccd4 <__adddf3+0x388> + 2cb04: 1c21c83a sub r16,r3,r16 + 2cb08: 82000044 addi r8,r16,1 + 2cb0c: 00c007c4 movi r3,31 + 2cb10: 1a009116 blt r3,r8,2cd58 <__adddf3+0x40c> + 2cb14: 00c00804 movi r3,32 + 2cb18: 1a07c83a sub r3,r3,r8 + 2cb1c: 8a08d83a srl r4,r17,r8 + 2cb20: 88e2983a sll r17,r17,r3 + 2cb24: 10c6983a sll r3,r2,r3 + 2cb28: 1210d83a srl r8,r2,r8 + 2cb2c: 8804c03a cmpne r2,r17,zero + 2cb30: 1906b03a or r3,r3,r4 + 2cb34: 18a2b03a or r17,r3,r2 + 2cb38: 0021883a mov r16,zero + 2cb3c: 003fa206 br 2c9c8 <_gp+0xffff0490> + 2cb40: 1890b03a or r8,r3,r2 + 2cb44: 40017d26 beq r8,zero,2d13c <__adddf3+0x7f0> + 2cb48: 1011883a mov r8,r2 + 2cb4c: 1823883a mov r17,r3 + 2cb50: 888001cc andi r2,r17,7 + 2cb54: 103f9e1e bne r2,zero,2c9d0 <_gp+0xffff0498> + 2cb58: 4004977a slli r2,r8,29 + 2cb5c: 8822d0fa srli r17,r17,3 + 2cb60: 4010d0fa srli r8,r8,3 + 2cb64: 9007883a mov r3,r18 + 2cb68: 1444b03a or r2,r2,r17 + 2cb6c: 0101ffc4 movi r4,2047 + 2cb70: 81002426 beq r16,r4,2cc04 <__adddf3+0x2b8> + 2cb74: 8120703a and r16,r16,r4 + 2cb78: 01000434 movhi r4,16 + 2cb7c: 213fffc4 addi r4,r4,-1 + 2cb80: 4110703a and r8,r8,r4 + 2cb84: 003fa806 br 2ca28 <_gp+0xffff04f0> + 2cb88: 8089c83a sub r4,r16,r2 + 2cb8c: 01005e0e bge zero,r4,2cd08 <__adddf3+0x3bc> + 2cb90: 10002b26 beq r2,zero,2cc40 <__adddf3+0x2f4> + 2cb94: 0081ffc4 movi r2,2047 + 2cb98: 80bf8b26 beq r16,r2,2c9c8 <_gp+0xffff0490> + 2cb9c: 4a402034 orhi r9,r9,128 + 2cba0: 00800e04 movi r2,56 + 2cba4: 1100a40e bge r2,r4,2ce38 <__adddf3+0x4ec> + 2cba8: 498cb03a or r6,r9,r6 + 2cbac: 300ac03a cmpne r5,r6,zero + 2cbb0: 0013883a mov r9,zero + 2cbb4: 2c4b883a add r5,r5,r17 + 2cbb8: 2c63803a cmpltu r17,r5,r17 + 2cbbc: 4a11883a add r8,r9,r8 + 2cbc0: 8a11883a add r8,r17,r8 + 2cbc4: 2823883a mov r17,r5 + 2cbc8: 4080202c andhi r2,r8,128 + 2cbcc: 103fe026 beq r2,zero,2cb50 <_gp+0xffff0618> + 2cbd0: 84000044 addi r16,r16,1 + 2cbd4: 0081ffc4 movi r2,2047 + 2cbd8: 8080d226 beq r16,r2,2cf24 <__adddf3+0x5d8> + 2cbdc: 00bfe034 movhi r2,65408 + 2cbe0: 10bfffc4 addi r2,r2,-1 + 2cbe4: 4090703a and r8,r8,r2 + 2cbe8: 880ad07a srli r5,r17,1 + 2cbec: 400897fa slli r4,r8,31 + 2cbf0: 88c0004c andi r3,r17,1 + 2cbf4: 28e2b03a or r17,r5,r3 + 2cbf8: 4010d07a srli r8,r8,1 + 2cbfc: 2462b03a or r17,r4,r17 + 2cc00: 003f7106 br 2c9c8 <_gp+0xffff0490> + 2cc04: 4088b03a or r4,r8,r2 + 2cc08: 20014526 beq r4,zero,2d120 <__adddf3+0x7d4> + 2cc0c: 01000434 movhi r4,16 + 2cc10: 42000234 orhi r8,r8,8 + 2cc14: 213fffc4 addi r4,r4,-1 + 2cc18: 4110703a and r8,r8,r4 + 2cc1c: 003f8206 br 2ca28 <_gp+0xffff04f0> + 2cc20: 18ffffc4 addi r3,r3,-1 + 2cc24: 1800491e bne r3,zero,2cd4c <__adddf3+0x400> + 2cc28: 898bc83a sub r5,r17,r6 + 2cc2c: 8963803a cmpltu r17,r17,r5 + 2cc30: 4251c83a sub r8,r8,r9 + 2cc34: 4451c83a sub r8,r8,r17 + 2cc38: 2823883a mov r17,r5 + 2cc3c: 003f9f06 br 2cabc <_gp+0xffff0584> + 2cc40: 4984b03a or r2,r9,r6 + 2cc44: 103f6026 beq r2,zero,2c9c8 <_gp+0xffff0490> + 2cc48: 213fffc4 addi r4,r4,-1 + 2cc4c: 2000931e bne r4,zero,2ce9c <__adddf3+0x550> + 2cc50: 898d883a add r6,r17,r6 + 2cc54: 3463803a cmpltu r17,r6,r17 + 2cc58: 4251883a add r8,r8,r9 + 2cc5c: 8a11883a add r8,r17,r8 + 2cc60: 3023883a mov r17,r6 + 2cc64: 003fd806 br 2cbc8 <_gp+0xffff0690> + 2cc68: 1800541e bne r3,zero,2cdbc <__adddf3+0x470> + 2cc6c: 80800044 addi r2,r16,1 + 2cc70: 1081ffcc andi r2,r2,2047 + 2cc74: 00c00044 movi r3,1 + 2cc78: 1880a00e bge r3,r2,2cefc <__adddf3+0x5b0> + 2cc7c: 8989c83a sub r4,r17,r6 + 2cc80: 8905803a cmpltu r2,r17,r4 + 2cc84: 4267c83a sub r19,r8,r9 + 2cc88: 98a7c83a sub r19,r19,r2 + 2cc8c: 9880202c andhi r2,r19,128 + 2cc90: 10006326 beq r2,zero,2ce20 <__adddf3+0x4d4> + 2cc94: 3463c83a sub r17,r6,r17 + 2cc98: 4a07c83a sub r3,r9,r8 + 2cc9c: 344d803a cmpltu r6,r6,r17 + 2cca0: 19a7c83a sub r19,r3,r6 + 2cca4: 3825883a mov r18,r7 + 2cca8: 983f8a1e bne r19,zero,2cad4 <_gp+0xffff059c> + 2ccac: 8809883a mov r4,r17 + 2ccb0: 002ef500 call 2ef50 <__clzsi2> + 2ccb4: 10800804 addi r2,r2,32 + 2ccb8: 10fffe04 addi r3,r2,-8 + 2ccbc: 010007c4 movi r4,31 + 2ccc0: 20ff890e bge r4,r3,2cae8 <_gp+0xffff05b0> + 2ccc4: 10bff604 addi r2,r2,-40 + 2ccc8: 8884983a sll r2,r17,r2 + 2cccc: 0023883a mov r17,zero + 2ccd0: 1c3f8c0e bge r3,r16,2cb04 <_gp+0xffff05cc> + 2ccd4: 023fe034 movhi r8,65408 + 2ccd8: 423fffc4 addi r8,r8,-1 + 2ccdc: 80e1c83a sub r16,r16,r3 + 2cce0: 1210703a and r8,r2,r8 + 2cce4: 003f3806 br 2c9c8 <_gp+0xffff0490> + 2cce8: 9007883a mov r3,r18 + 2ccec: 0011883a mov r8,zero + 2ccf0: 0005883a mov r2,zero + 2ccf4: 003f4c06 br 2ca28 <_gp+0xffff04f0> + 2ccf8: 498cb03a or r6,r9,r6 + 2ccfc: 300cc03a cmpne r6,r6,zero + 2cd00: 0007883a mov r3,zero + 2cd04: 003f6806 br 2caa8 <_gp+0xffff0570> + 2cd08: 20009c1e bne r4,zero,2cf7c <__adddf3+0x630> + 2cd0c: 80800044 addi r2,r16,1 + 2cd10: 1141ffcc andi r5,r2,2047 + 2cd14: 01000044 movi r4,1 + 2cd18: 2140670e bge r4,r5,2ceb8 <__adddf3+0x56c> + 2cd1c: 0101ffc4 movi r4,2047 + 2cd20: 11007f26 beq r2,r4,2cf20 <__adddf3+0x5d4> + 2cd24: 898d883a add r6,r17,r6 + 2cd28: 4247883a add r3,r8,r9 + 2cd2c: 3451803a cmpltu r8,r6,r17 + 2cd30: 40d1883a add r8,r8,r3 + 2cd34: 402297fa slli r17,r8,31 + 2cd38: 300cd07a srli r6,r6,1 + 2cd3c: 4010d07a srli r8,r8,1 + 2cd40: 1021883a mov r16,r2 + 2cd44: 89a2b03a or r17,r17,r6 + 2cd48: 003f1f06 br 2c9c8 <_gp+0xffff0490> + 2cd4c: 0081ffc4 movi r2,2047 + 2cd50: 80bf481e bne r16,r2,2ca74 <_gp+0xffff053c> + 2cd54: 003f1c06 br 2c9c8 <_gp+0xffff0490> + 2cd58: 843ff844 addi r16,r16,-31 + 2cd5c: 01000804 movi r4,32 + 2cd60: 1406d83a srl r3,r2,r16 + 2cd64: 41005026 beq r8,r4,2cea8 <__adddf3+0x55c> + 2cd68: 01001004 movi r4,64 + 2cd6c: 2211c83a sub r8,r4,r8 + 2cd70: 1204983a sll r2,r2,r8 + 2cd74: 88a2b03a or r17,r17,r2 + 2cd78: 8822c03a cmpne r17,r17,zero + 2cd7c: 1c62b03a or r17,r3,r17 + 2cd80: 0011883a mov r8,zero + 2cd84: 0021883a mov r16,zero + 2cd88: 003f7106 br 2cb50 <_gp+0xffff0618> + 2cd8c: 193ff804 addi r4,r3,-32 + 2cd90: 00800804 movi r2,32 + 2cd94: 4908d83a srl r4,r9,r4 + 2cd98: 18804526 beq r3,r2,2ceb0 <__adddf3+0x564> + 2cd9c: 00801004 movi r2,64 + 2cda0: 10c5c83a sub r2,r2,r3 + 2cda4: 4886983a sll r3,r9,r2 + 2cda8: 198cb03a or r6,r3,r6 + 2cdac: 300cc03a cmpne r6,r6,zero + 2cdb0: 218cb03a or r6,r4,r6 + 2cdb4: 0007883a mov r3,zero + 2cdb8: 003f3b06 br 2caa8 <_gp+0xffff0570> + 2cdbc: 80002a26 beq r16,zero,2ce68 <__adddf3+0x51c> + 2cdc0: 0101ffc4 movi r4,2047 + 2cdc4: 11006826 beq r2,r4,2cf68 <__adddf3+0x61c> + 2cdc8: 00c7c83a sub r3,zero,r3 + 2cdcc: 42002034 orhi r8,r8,128 + 2cdd0: 01000e04 movi r4,56 + 2cdd4: 20c07c16 blt r4,r3,2cfc8 <__adddf3+0x67c> + 2cdd8: 010007c4 movi r4,31 + 2cddc: 20c0da16 blt r4,r3,2d148 <__adddf3+0x7fc> + 2cde0: 01000804 movi r4,32 + 2cde4: 20c9c83a sub r4,r4,r3 + 2cde8: 4114983a sll r10,r8,r4 + 2cdec: 88cad83a srl r5,r17,r3 + 2cdf0: 8908983a sll r4,r17,r4 + 2cdf4: 40c6d83a srl r3,r8,r3 + 2cdf8: 5162b03a or r17,r10,r5 + 2cdfc: 2008c03a cmpne r4,r4,zero + 2ce00: 8922b03a or r17,r17,r4 + 2ce04: 3463c83a sub r17,r6,r17 + 2ce08: 48c7c83a sub r3,r9,r3 + 2ce0c: 344d803a cmpltu r6,r6,r17 + 2ce10: 1991c83a sub r8,r3,r6 + 2ce14: 1021883a mov r16,r2 + 2ce18: 3825883a mov r18,r7 + 2ce1c: 003f2706 br 2cabc <_gp+0xffff0584> + 2ce20: 24d0b03a or r8,r4,r19 + 2ce24: 40001b1e bne r8,zero,2ce94 <__adddf3+0x548> + 2ce28: 0005883a mov r2,zero + 2ce2c: 0007883a mov r3,zero + 2ce30: 0021883a mov r16,zero + 2ce34: 003f4d06 br 2cb6c <_gp+0xffff0634> + 2ce38: 008007c4 movi r2,31 + 2ce3c: 11003c16 blt r2,r4,2cf30 <__adddf3+0x5e4> + 2ce40: 00800804 movi r2,32 + 2ce44: 1105c83a sub r2,r2,r4 + 2ce48: 488e983a sll r7,r9,r2 + 2ce4c: 310ad83a srl r5,r6,r4 + 2ce50: 3084983a sll r2,r6,r2 + 2ce54: 4912d83a srl r9,r9,r4 + 2ce58: 394ab03a or r5,r7,r5 + 2ce5c: 1004c03a cmpne r2,r2,zero + 2ce60: 288ab03a or r5,r5,r2 + 2ce64: 003f5306 br 2cbb4 <_gp+0xffff067c> + 2ce68: 4448b03a or r4,r8,r17 + 2ce6c: 20003e26 beq r4,zero,2cf68 <__adddf3+0x61c> + 2ce70: 00c6303a nor r3,zero,r3 + 2ce74: 18003a1e bne r3,zero,2cf60 <__adddf3+0x614> + 2ce78: 3463c83a sub r17,r6,r17 + 2ce7c: 4a07c83a sub r3,r9,r8 + 2ce80: 344d803a cmpltu r6,r6,r17 + 2ce84: 1991c83a sub r8,r3,r6 + 2ce88: 1021883a mov r16,r2 + 2ce8c: 3825883a mov r18,r7 + 2ce90: 003f0a06 br 2cabc <_gp+0xffff0584> + 2ce94: 2023883a mov r17,r4 + 2ce98: 003f0d06 br 2cad0 <_gp+0xffff0598> + 2ce9c: 0081ffc4 movi r2,2047 + 2cea0: 80bf3f1e bne r16,r2,2cba0 <_gp+0xffff0668> + 2cea4: 003ec806 br 2c9c8 <_gp+0xffff0490> + 2cea8: 0005883a mov r2,zero + 2ceac: 003fb106 br 2cd74 <_gp+0xffff083c> + 2ceb0: 0007883a mov r3,zero + 2ceb4: 003fbc06 br 2cda8 <_gp+0xffff0870> + 2ceb8: 4444b03a or r2,r8,r17 + 2cebc: 8000871e bne r16,zero,2d0dc <__adddf3+0x790> + 2cec0: 1000ba26 beq r2,zero,2d1ac <__adddf3+0x860> + 2cec4: 4984b03a or r2,r9,r6 + 2cec8: 103ebf26 beq r2,zero,2c9c8 <_gp+0xffff0490> + 2cecc: 8985883a add r2,r17,r6 + 2ced0: 4247883a add r3,r8,r9 + 2ced4: 1451803a cmpltu r8,r2,r17 + 2ced8: 40d1883a add r8,r8,r3 + 2cedc: 40c0202c andhi r3,r8,128 + 2cee0: 1023883a mov r17,r2 + 2cee4: 183f1a26 beq r3,zero,2cb50 <_gp+0xffff0618> + 2cee8: 00bfe034 movhi r2,65408 + 2ceec: 10bfffc4 addi r2,r2,-1 + 2cef0: 2021883a mov r16,r4 + 2cef4: 4090703a and r8,r8,r2 + 2cef8: 003eb306 br 2c9c8 <_gp+0xffff0490> + 2cefc: 4444b03a or r2,r8,r17 + 2cf00: 8000291e bne r16,zero,2cfa8 <__adddf3+0x65c> + 2cf04: 10004b1e bne r2,zero,2d034 <__adddf3+0x6e8> + 2cf08: 4990b03a or r8,r9,r6 + 2cf0c: 40008b26 beq r8,zero,2d13c <__adddf3+0x7f0> + 2cf10: 4811883a mov r8,r9 + 2cf14: 3023883a mov r17,r6 + 2cf18: 3825883a mov r18,r7 + 2cf1c: 003eaa06 br 2c9c8 <_gp+0xffff0490> + 2cf20: 1021883a mov r16,r2 + 2cf24: 0011883a mov r8,zero + 2cf28: 0005883a mov r2,zero + 2cf2c: 003f0f06 br 2cb6c <_gp+0xffff0634> + 2cf30: 217ff804 addi r5,r4,-32 + 2cf34: 00800804 movi r2,32 + 2cf38: 494ad83a srl r5,r9,r5 + 2cf3c: 20807d26 beq r4,r2,2d134 <__adddf3+0x7e8> + 2cf40: 00801004 movi r2,64 + 2cf44: 1109c83a sub r4,r2,r4 + 2cf48: 4912983a sll r9,r9,r4 + 2cf4c: 498cb03a or r6,r9,r6 + 2cf50: 300cc03a cmpne r6,r6,zero + 2cf54: 298ab03a or r5,r5,r6 + 2cf58: 0013883a mov r9,zero + 2cf5c: 003f1506 br 2cbb4 <_gp+0xffff067c> + 2cf60: 0101ffc4 movi r4,2047 + 2cf64: 113f9a1e bne r2,r4,2cdd0 <_gp+0xffff0898> + 2cf68: 4811883a mov r8,r9 + 2cf6c: 3023883a mov r17,r6 + 2cf70: 1021883a mov r16,r2 + 2cf74: 3825883a mov r18,r7 + 2cf78: 003e9306 br 2c9c8 <_gp+0xffff0490> + 2cf7c: 8000161e bne r16,zero,2cfd8 <__adddf3+0x68c> + 2cf80: 444ab03a or r5,r8,r17 + 2cf84: 28005126 beq r5,zero,2d0cc <__adddf3+0x780> + 2cf88: 0108303a nor r4,zero,r4 + 2cf8c: 20004d1e bne r4,zero,2d0c4 <__adddf3+0x778> + 2cf90: 89a3883a add r17,r17,r6 + 2cf94: 4253883a add r9,r8,r9 + 2cf98: 898d803a cmpltu r6,r17,r6 + 2cf9c: 3251883a add r8,r6,r9 + 2cfa0: 1021883a mov r16,r2 + 2cfa4: 003f0806 br 2cbc8 <_gp+0xffff0690> + 2cfa8: 1000301e bne r2,zero,2d06c <__adddf3+0x720> + 2cfac: 4984b03a or r2,r9,r6 + 2cfb0: 10007126 beq r2,zero,2d178 <__adddf3+0x82c> + 2cfb4: 4811883a mov r8,r9 + 2cfb8: 3023883a mov r17,r6 + 2cfbc: 3825883a mov r18,r7 + 2cfc0: 0401ffc4 movi r16,2047 + 2cfc4: 003e8006 br 2c9c8 <_gp+0xffff0490> + 2cfc8: 4462b03a or r17,r8,r17 + 2cfcc: 8822c03a cmpne r17,r17,zero + 2cfd0: 0007883a mov r3,zero + 2cfd4: 003f8b06 br 2ce04 <_gp+0xffff08cc> + 2cfd8: 0141ffc4 movi r5,2047 + 2cfdc: 11403b26 beq r2,r5,2d0cc <__adddf3+0x780> + 2cfe0: 0109c83a sub r4,zero,r4 + 2cfe4: 42002034 orhi r8,r8,128 + 2cfe8: 01400e04 movi r5,56 + 2cfec: 29006716 blt r5,r4,2d18c <__adddf3+0x840> + 2cff0: 014007c4 movi r5,31 + 2cff4: 29007016 blt r5,r4,2d1b8 <__adddf3+0x86c> + 2cff8: 01400804 movi r5,32 + 2cffc: 290bc83a sub r5,r5,r4 + 2d000: 4154983a sll r10,r8,r5 + 2d004: 890ed83a srl r7,r17,r4 + 2d008: 894a983a sll r5,r17,r5 + 2d00c: 4108d83a srl r4,r8,r4 + 2d010: 51e2b03a or r17,r10,r7 + 2d014: 280ac03a cmpne r5,r5,zero + 2d018: 8962b03a or r17,r17,r5 + 2d01c: 89a3883a add r17,r17,r6 + 2d020: 2253883a add r9,r4,r9 + 2d024: 898d803a cmpltu r6,r17,r6 + 2d028: 3251883a add r8,r6,r9 + 2d02c: 1021883a mov r16,r2 + 2d030: 003ee506 br 2cbc8 <_gp+0xffff0690> + 2d034: 4984b03a or r2,r9,r6 + 2d038: 103e6326 beq r2,zero,2c9c8 <_gp+0xffff0490> + 2d03c: 8987c83a sub r3,r17,r6 + 2d040: 88c9803a cmpltu r4,r17,r3 + 2d044: 4245c83a sub r2,r8,r9 + 2d048: 1105c83a sub r2,r2,r4 + 2d04c: 1100202c andhi r4,r2,128 + 2d050: 203ebb26 beq r4,zero,2cb40 <_gp+0xffff0608> + 2d054: 3463c83a sub r17,r6,r17 + 2d058: 4a07c83a sub r3,r9,r8 + 2d05c: 344d803a cmpltu r6,r6,r17 + 2d060: 1991c83a sub r8,r3,r6 + 2d064: 3825883a mov r18,r7 + 2d068: 003e5706 br 2c9c8 <_gp+0xffff0490> + 2d06c: 4984b03a or r2,r9,r6 + 2d070: 10002e26 beq r2,zero,2d12c <__adddf3+0x7e0> + 2d074: 4004d0fa srli r2,r8,3 + 2d078: 8822d0fa srli r17,r17,3 + 2d07c: 4010977a slli r8,r8,29 + 2d080: 10c0022c andhi r3,r2,8 + 2d084: 4462b03a or r17,r8,r17 + 2d088: 18000826 beq r3,zero,2d0ac <__adddf3+0x760> + 2d08c: 4808d0fa srli r4,r9,3 + 2d090: 20c0022c andhi r3,r4,8 + 2d094: 1800051e bne r3,zero,2d0ac <__adddf3+0x760> + 2d098: 300cd0fa srli r6,r6,3 + 2d09c: 4806977a slli r3,r9,29 + 2d0a0: 2005883a mov r2,r4 + 2d0a4: 3825883a mov r18,r7 + 2d0a8: 19a2b03a or r17,r3,r6 + 2d0ac: 8810d77a srli r8,r17,29 + 2d0b0: 100490fa slli r2,r2,3 + 2d0b4: 882290fa slli r17,r17,3 + 2d0b8: 0401ffc4 movi r16,2047 + 2d0bc: 4090b03a or r8,r8,r2 + 2d0c0: 003e4106 br 2c9c8 <_gp+0xffff0490> + 2d0c4: 0141ffc4 movi r5,2047 + 2d0c8: 117fc71e bne r2,r5,2cfe8 <_gp+0xffff0ab0> + 2d0cc: 4811883a mov r8,r9 + 2d0d0: 3023883a mov r17,r6 + 2d0d4: 1021883a mov r16,r2 + 2d0d8: 003e3b06 br 2c9c8 <_gp+0xffff0490> + 2d0dc: 10002f26 beq r2,zero,2d19c <__adddf3+0x850> + 2d0e0: 4984b03a or r2,r9,r6 + 2d0e4: 10001126 beq r2,zero,2d12c <__adddf3+0x7e0> + 2d0e8: 4004d0fa srli r2,r8,3 + 2d0ec: 8822d0fa srli r17,r17,3 + 2d0f0: 4010977a slli r8,r8,29 + 2d0f4: 10c0022c andhi r3,r2,8 + 2d0f8: 4462b03a or r17,r8,r17 + 2d0fc: 183feb26 beq r3,zero,2d0ac <_gp+0xffff0b74> + 2d100: 4808d0fa srli r4,r9,3 + 2d104: 20c0022c andhi r3,r4,8 + 2d108: 183fe81e bne r3,zero,2d0ac <_gp+0xffff0b74> + 2d10c: 300cd0fa srli r6,r6,3 + 2d110: 4806977a slli r3,r9,29 + 2d114: 2005883a mov r2,r4 + 2d118: 19a2b03a or r17,r3,r6 + 2d11c: 003fe306 br 2d0ac <_gp+0xffff0b74> + 2d120: 0011883a mov r8,zero + 2d124: 0005883a mov r2,zero + 2d128: 003e3f06 br 2ca28 <_gp+0xffff04f0> + 2d12c: 0401ffc4 movi r16,2047 + 2d130: 003e2506 br 2c9c8 <_gp+0xffff0490> + 2d134: 0013883a mov r9,zero + 2d138: 003f8406 br 2cf4c <_gp+0xffff0a14> + 2d13c: 0005883a mov r2,zero + 2d140: 0007883a mov r3,zero + 2d144: 003e8906 br 2cb6c <_gp+0xffff0634> + 2d148: 197ff804 addi r5,r3,-32 + 2d14c: 01000804 movi r4,32 + 2d150: 414ad83a srl r5,r8,r5 + 2d154: 19002426 beq r3,r4,2d1e8 <__adddf3+0x89c> + 2d158: 01001004 movi r4,64 + 2d15c: 20c7c83a sub r3,r4,r3 + 2d160: 40c6983a sll r3,r8,r3 + 2d164: 1c46b03a or r3,r3,r17 + 2d168: 1806c03a cmpne r3,r3,zero + 2d16c: 28e2b03a or r17,r5,r3 + 2d170: 0007883a mov r3,zero + 2d174: 003f2306 br 2ce04 <_gp+0xffff08cc> + 2d178: 0007883a mov r3,zero + 2d17c: 5811883a mov r8,r11 + 2d180: 00bfffc4 movi r2,-1 + 2d184: 0401ffc4 movi r16,2047 + 2d188: 003e7806 br 2cb6c <_gp+0xffff0634> + 2d18c: 4462b03a or r17,r8,r17 + 2d190: 8822c03a cmpne r17,r17,zero + 2d194: 0009883a mov r4,zero + 2d198: 003fa006 br 2d01c <_gp+0xffff0ae4> + 2d19c: 4811883a mov r8,r9 + 2d1a0: 3023883a mov r17,r6 + 2d1a4: 0401ffc4 movi r16,2047 + 2d1a8: 003e0706 br 2c9c8 <_gp+0xffff0490> + 2d1ac: 4811883a mov r8,r9 + 2d1b0: 3023883a mov r17,r6 + 2d1b4: 003e0406 br 2c9c8 <_gp+0xffff0490> + 2d1b8: 21fff804 addi r7,r4,-32 + 2d1bc: 01400804 movi r5,32 + 2d1c0: 41ced83a srl r7,r8,r7 + 2d1c4: 21400a26 beq r4,r5,2d1f0 <__adddf3+0x8a4> + 2d1c8: 01401004 movi r5,64 + 2d1cc: 2909c83a sub r4,r5,r4 + 2d1d0: 4108983a sll r4,r8,r4 + 2d1d4: 2448b03a or r4,r4,r17 + 2d1d8: 2008c03a cmpne r4,r4,zero + 2d1dc: 3922b03a or r17,r7,r4 + 2d1e0: 0009883a mov r4,zero + 2d1e4: 003f8d06 br 2d01c <_gp+0xffff0ae4> + 2d1e8: 0007883a mov r3,zero + 2d1ec: 003fdd06 br 2d164 <_gp+0xffff0c2c> + 2d1f0: 0009883a mov r4,zero + 2d1f4: 003ff706 br 2d1d4 <_gp+0xffff0c9c> + +0002d1f8 <__divdf3>: + 2d1f8: defff204 addi sp,sp,-56 + 2d1fc: dd400915 stw r21,36(sp) + 2d200: 282ad53a srli r21,r5,20 + 2d204: dd000815 stw r20,32(sp) + 2d208: 2828d7fa srli r20,r5,31 + 2d20c: dc000415 stw r16,16(sp) + 2d210: 04000434 movhi r16,16 + 2d214: df000c15 stw fp,48(sp) + 2d218: 843fffc4 addi r16,r16,-1 + 2d21c: dfc00d15 stw ra,52(sp) + 2d220: ddc00b15 stw r23,44(sp) + 2d224: dd800a15 stw r22,40(sp) + 2d228: dcc00715 stw r19,28(sp) + 2d22c: dc800615 stw r18,24(sp) + 2d230: dc400515 stw r17,20(sp) + 2d234: ad41ffcc andi r21,r21,2047 + 2d238: 2c20703a and r16,r5,r16 + 2d23c: a7003fcc andi fp,r20,255 + 2d240: a8006126 beq r21,zero,2d3c8 <__divdf3+0x1d0> + 2d244: 0081ffc4 movi r2,2047 + 2d248: 2025883a mov r18,r4 + 2d24c: a8803726 beq r21,r2,2d32c <__divdf3+0x134> + 2d250: 80800434 orhi r2,r16,16 + 2d254: 100490fa slli r2,r2,3 + 2d258: 2020d77a srli r16,r4,29 + 2d25c: 202490fa slli r18,r4,3 + 2d260: ad7f0044 addi r21,r21,-1023 + 2d264: 80a0b03a or r16,r16,r2 + 2d268: 0027883a mov r19,zero + 2d26c: 0013883a mov r9,zero + 2d270: 3804d53a srli r2,r7,20 + 2d274: 382cd7fa srli r22,r7,31 + 2d278: 04400434 movhi r17,16 + 2d27c: 8c7fffc4 addi r17,r17,-1 + 2d280: 1081ffcc andi r2,r2,2047 + 2d284: 3011883a mov r8,r6 + 2d288: 3c62703a and r17,r7,r17 + 2d28c: b5c03fcc andi r23,r22,255 + 2d290: 10006c26 beq r2,zero,2d444 <__divdf3+0x24c> + 2d294: 00c1ffc4 movi r3,2047 + 2d298: 10c06426 beq r2,r3,2d42c <__divdf3+0x234> + 2d29c: 88c00434 orhi r3,r17,16 + 2d2a0: 180690fa slli r3,r3,3 + 2d2a4: 3022d77a srli r17,r6,29 + 2d2a8: 301090fa slli r8,r6,3 + 2d2ac: 10bf0044 addi r2,r2,-1023 + 2d2b0: 88e2b03a or r17,r17,r3 + 2d2b4: 000f883a mov r7,zero + 2d2b8: a58cf03a xor r6,r20,r22 + 2d2bc: 3cc8b03a or r4,r7,r19 + 2d2c0: a8abc83a sub r21,r21,r2 + 2d2c4: 008003c4 movi r2,15 + 2d2c8: 3007883a mov r3,r6 + 2d2cc: 34c03fcc andi r19,r6,255 + 2d2d0: 11009036 bltu r2,r4,2d514 <__divdf3+0x31c> + 2d2d4: 200890ba slli r4,r4,2 + 2d2d8: 008000f4 movhi r2,3 + 2d2dc: 10b4bb04 addi r2,r2,-11540 + 2d2e0: 2089883a add r4,r4,r2 + 2d2e4: 20800017 ldw r2,0(r4) + 2d2e8: 1000683a jmp r2 + 2d2ec: 0002d514 movui zero,2900 + 2d2f0: 0002d364 muli zero,zero,2893 + 2d2f4: 0002d504 movi zero,2900 + 2d2f8: 0002d358 cmpnei zero,zero,2893 + 2d2fc: 0002d504 movi zero,2900 + 2d300: 0002d4d8 cmpnei zero,zero,2899 + 2d304: 0002d504 movi zero,2900 + 2d308: 0002d358 cmpnei zero,zero,2893 + 2d30c: 0002d364 muli zero,zero,2893 + 2d310: 0002d364 muli zero,zero,2893 + 2d314: 0002d4d8 cmpnei zero,zero,2899 + 2d318: 0002d358 cmpnei zero,zero,2893 + 2d31c: 0002d348 cmpgei zero,zero,2893 + 2d320: 0002d348 cmpgei zero,zero,2893 + 2d324: 0002d348 cmpgei zero,zero,2893 + 2d328: 0002d7f8 rdprs zero,zero,2911 + 2d32c: 2404b03a or r2,r4,r16 + 2d330: 1000661e bne r2,zero,2d4cc <__divdf3+0x2d4> + 2d334: 04c00204 movi r19,8 + 2d338: 0021883a mov r16,zero + 2d33c: 0025883a mov r18,zero + 2d340: 02400084 movi r9,2 + 2d344: 003fca06 br 2d270 <_gp+0xffff0d38> + 2d348: 8023883a mov r17,r16 + 2d34c: 9011883a mov r8,r18 + 2d350: e02f883a mov r23,fp + 2d354: 480f883a mov r7,r9 + 2d358: 00800084 movi r2,2 + 2d35c: 3881311e bne r7,r2,2d824 <__divdf3+0x62c> + 2d360: b827883a mov r19,r23 + 2d364: 98c0004c andi r3,r19,1 + 2d368: 0081ffc4 movi r2,2047 + 2d36c: 000b883a mov r5,zero + 2d370: 0025883a mov r18,zero + 2d374: 1004953a slli r2,r2,20 + 2d378: 18c03fcc andi r3,r3,255 + 2d37c: 04400434 movhi r17,16 + 2d380: 8c7fffc4 addi r17,r17,-1 + 2d384: 180697fa slli r3,r3,31 + 2d388: 2c4a703a and r5,r5,r17 + 2d38c: 288ab03a or r5,r5,r2 + 2d390: 28c6b03a or r3,r5,r3 + 2d394: 9005883a mov r2,r18 + 2d398: dfc00d17 ldw ra,52(sp) + 2d39c: df000c17 ldw fp,48(sp) + 2d3a0: ddc00b17 ldw r23,44(sp) + 2d3a4: dd800a17 ldw r22,40(sp) + 2d3a8: dd400917 ldw r21,36(sp) + 2d3ac: dd000817 ldw r20,32(sp) + 2d3b0: dcc00717 ldw r19,28(sp) + 2d3b4: dc800617 ldw r18,24(sp) + 2d3b8: dc400517 ldw r17,20(sp) + 2d3bc: dc000417 ldw r16,16(sp) + 2d3c0: dec00e04 addi sp,sp,56 + 2d3c4: f800283a ret + 2d3c8: 2404b03a or r2,r4,r16 + 2d3cc: 2027883a mov r19,r4 + 2d3d0: 10003926 beq r2,zero,2d4b8 <__divdf3+0x2c0> + 2d3d4: 80012e26 beq r16,zero,2d890 <__divdf3+0x698> + 2d3d8: 8009883a mov r4,r16 + 2d3dc: d9800315 stw r6,12(sp) + 2d3e0: d9c00215 stw r7,8(sp) + 2d3e4: 002ef500 call 2ef50 <__clzsi2> + 2d3e8: d9800317 ldw r6,12(sp) + 2d3ec: d9c00217 ldw r7,8(sp) + 2d3f0: 113ffd44 addi r4,r2,-11 + 2d3f4: 00c00704 movi r3,28 + 2d3f8: 19012116 blt r3,r4,2d880 <__divdf3+0x688> + 2d3fc: 00c00744 movi r3,29 + 2d400: 147ffe04 addi r17,r2,-8 + 2d404: 1907c83a sub r3,r3,r4 + 2d408: 8460983a sll r16,r16,r17 + 2d40c: 98c6d83a srl r3,r19,r3 + 2d410: 9c64983a sll r18,r19,r17 + 2d414: 1c20b03a or r16,r3,r16 + 2d418: 1080fcc4 addi r2,r2,1011 + 2d41c: 00abc83a sub r21,zero,r2 + 2d420: 0027883a mov r19,zero + 2d424: 0013883a mov r9,zero + 2d428: 003f9106 br 2d270 <_gp+0xffff0d38> + 2d42c: 3446b03a or r3,r6,r17 + 2d430: 18001f1e bne r3,zero,2d4b0 <__divdf3+0x2b8> + 2d434: 0023883a mov r17,zero + 2d438: 0011883a mov r8,zero + 2d43c: 01c00084 movi r7,2 + 2d440: 003f9d06 br 2d2b8 <_gp+0xffff0d80> + 2d444: 3446b03a or r3,r6,r17 + 2d448: 18001526 beq r3,zero,2d4a0 <__divdf3+0x2a8> + 2d44c: 88011b26 beq r17,zero,2d8bc <__divdf3+0x6c4> + 2d450: 8809883a mov r4,r17 + 2d454: d9800315 stw r6,12(sp) + 2d458: da400115 stw r9,4(sp) + 2d45c: 002ef500 call 2ef50 <__clzsi2> + 2d460: d9800317 ldw r6,12(sp) + 2d464: da400117 ldw r9,4(sp) + 2d468: 113ffd44 addi r4,r2,-11 + 2d46c: 00c00704 movi r3,28 + 2d470: 19010e16 blt r3,r4,2d8ac <__divdf3+0x6b4> + 2d474: 00c00744 movi r3,29 + 2d478: 123ffe04 addi r8,r2,-8 + 2d47c: 1907c83a sub r3,r3,r4 + 2d480: 8a22983a sll r17,r17,r8 + 2d484: 30c6d83a srl r3,r6,r3 + 2d488: 3210983a sll r8,r6,r8 + 2d48c: 1c62b03a or r17,r3,r17 + 2d490: 1080fcc4 addi r2,r2,1011 + 2d494: 0085c83a sub r2,zero,r2 + 2d498: 000f883a mov r7,zero + 2d49c: 003f8606 br 2d2b8 <_gp+0xffff0d80> + 2d4a0: 0023883a mov r17,zero + 2d4a4: 0011883a mov r8,zero + 2d4a8: 01c00044 movi r7,1 + 2d4ac: 003f8206 br 2d2b8 <_gp+0xffff0d80> + 2d4b0: 01c000c4 movi r7,3 + 2d4b4: 003f8006 br 2d2b8 <_gp+0xffff0d80> + 2d4b8: 04c00104 movi r19,4 + 2d4bc: 0021883a mov r16,zero + 2d4c0: 0025883a mov r18,zero + 2d4c4: 02400044 movi r9,1 + 2d4c8: 003f6906 br 2d270 <_gp+0xffff0d38> + 2d4cc: 04c00304 movi r19,12 + 2d4d0: 024000c4 movi r9,3 + 2d4d4: 003f6606 br 2d270 <_gp+0xffff0d38> + 2d4d8: 01400434 movhi r5,16 + 2d4dc: 0007883a mov r3,zero + 2d4e0: 297fffc4 addi r5,r5,-1 + 2d4e4: 04bfffc4 movi r18,-1 + 2d4e8: 0081ffc4 movi r2,2047 + 2d4ec: 003fa106 br 2d374 <_gp+0xffff0e3c> + 2d4f0: 00c00044 movi r3,1 + 2d4f4: 1887c83a sub r3,r3,r2 + 2d4f8: 01000e04 movi r4,56 + 2d4fc: 20c1210e bge r4,r3,2d984 <__divdf3+0x78c> + 2d500: 98c0004c andi r3,r19,1 + 2d504: 0005883a mov r2,zero + 2d508: 000b883a mov r5,zero + 2d50c: 0025883a mov r18,zero + 2d510: 003f9806 br 2d374 <_gp+0xffff0e3c> + 2d514: 8c00fd36 bltu r17,r16,2d90c <__divdf3+0x714> + 2d518: 8440fb26 beq r16,r17,2d908 <__divdf3+0x710> + 2d51c: 8007883a mov r3,r16 + 2d520: ad7fffc4 addi r21,r21,-1 + 2d524: 0021883a mov r16,zero + 2d528: 4004d63a srli r2,r8,24 + 2d52c: 8822923a slli r17,r17,8 + 2d530: 1809883a mov r4,r3 + 2d534: 402c923a slli r22,r8,8 + 2d538: 88b8b03a or fp,r17,r2 + 2d53c: e028d43a srli r20,fp,16 + 2d540: d8c00015 stw r3,0(sp) + 2d544: e5ffffcc andi r23,fp,65535 + 2d548: a00b883a mov r5,r20 + 2d54c: 00225dc0 call 225dc <__udivsi3> + 2d550: d8c00017 ldw r3,0(sp) + 2d554: a00b883a mov r5,r20 + 2d558: d8800315 stw r2,12(sp) + 2d55c: 1809883a mov r4,r3 + 2d560: 00226400 call 22640 <__umodsi3> + 2d564: d9800317 ldw r6,12(sp) + 2d568: 1006943a slli r3,r2,16 + 2d56c: 9004d43a srli r2,r18,16 + 2d570: b9a3383a mul r17,r23,r6 + 2d574: 10c4b03a or r2,r2,r3 + 2d578: 1440062e bgeu r2,r17,2d594 <__divdf3+0x39c> + 2d57c: 1705883a add r2,r2,fp + 2d580: 30ffffc4 addi r3,r6,-1 + 2d584: 1700ee36 bltu r2,fp,2d940 <__divdf3+0x748> + 2d588: 1440ed2e bgeu r2,r17,2d940 <__divdf3+0x748> + 2d58c: 31bfff84 addi r6,r6,-2 + 2d590: 1705883a add r2,r2,fp + 2d594: 1463c83a sub r17,r2,r17 + 2d598: a00b883a mov r5,r20 + 2d59c: 8809883a mov r4,r17 + 2d5a0: d9800315 stw r6,12(sp) + 2d5a4: 00225dc0 call 225dc <__udivsi3> + 2d5a8: a00b883a mov r5,r20 + 2d5ac: 8809883a mov r4,r17 + 2d5b0: d8800215 stw r2,8(sp) + 2d5b4: 00226400 call 22640 <__umodsi3> + 2d5b8: d9c00217 ldw r7,8(sp) + 2d5bc: 1004943a slli r2,r2,16 + 2d5c0: 94bfffcc andi r18,r18,65535 + 2d5c4: b9d1383a mul r8,r23,r7 + 2d5c8: 90a4b03a or r18,r18,r2 + 2d5cc: d9800317 ldw r6,12(sp) + 2d5d0: 9200062e bgeu r18,r8,2d5ec <__divdf3+0x3f4> + 2d5d4: 9725883a add r18,r18,fp + 2d5d8: 38bfffc4 addi r2,r7,-1 + 2d5dc: 9700d636 bltu r18,fp,2d938 <__divdf3+0x740> + 2d5e0: 9200d52e bgeu r18,r8,2d938 <__divdf3+0x740> + 2d5e4: 39ffff84 addi r7,r7,-2 + 2d5e8: 9725883a add r18,r18,fp + 2d5ec: 3004943a slli r2,r6,16 + 2d5f0: b012d43a srli r9,r22,16 + 2d5f4: b1bfffcc andi r6,r22,65535 + 2d5f8: 11e2b03a or r17,r2,r7 + 2d5fc: 8806d43a srli r3,r17,16 + 2d600: 893fffcc andi r4,r17,65535 + 2d604: 218b383a mul r5,r4,r6 + 2d608: 30c5383a mul r2,r6,r3 + 2d60c: 2249383a mul r4,r4,r9 + 2d610: 280ed43a srli r7,r5,16 + 2d614: 9225c83a sub r18,r18,r8 + 2d618: 2089883a add r4,r4,r2 + 2d61c: 3909883a add r4,r7,r4 + 2d620: 1a47383a mul r3,r3,r9 + 2d624: 2080022e bgeu r4,r2,2d630 <__divdf3+0x438> + 2d628: 00800074 movhi r2,1 + 2d62c: 1887883a add r3,r3,r2 + 2d630: 2004d43a srli r2,r4,16 + 2d634: 2008943a slli r4,r4,16 + 2d638: 297fffcc andi r5,r5,65535 + 2d63c: 10c7883a add r3,r2,r3 + 2d640: 2149883a add r4,r4,r5 + 2d644: 90c0a536 bltu r18,r3,2d8dc <__divdf3+0x6e4> + 2d648: 90c0bf26 beq r18,r3,2d948 <__divdf3+0x750> + 2d64c: 90c7c83a sub r3,r18,r3 + 2d650: 810fc83a sub r7,r16,r4 + 2d654: 81e5803a cmpltu r18,r16,r7 + 2d658: 1ca5c83a sub r18,r3,r18 + 2d65c: e480c126 beq fp,r18,2d964 <__divdf3+0x76c> + 2d660: a00b883a mov r5,r20 + 2d664: 9009883a mov r4,r18 + 2d668: d9800315 stw r6,12(sp) + 2d66c: d9c00215 stw r7,8(sp) + 2d670: da400115 stw r9,4(sp) + 2d674: 00225dc0 call 225dc <__udivsi3> + 2d678: a00b883a mov r5,r20 + 2d67c: 9009883a mov r4,r18 + 2d680: d8800015 stw r2,0(sp) + 2d684: 00226400 call 22640 <__umodsi3> + 2d688: d9c00217 ldw r7,8(sp) + 2d68c: da000017 ldw r8,0(sp) + 2d690: 1006943a slli r3,r2,16 + 2d694: 3804d43a srli r2,r7,16 + 2d698: ba21383a mul r16,r23,r8 + 2d69c: d9800317 ldw r6,12(sp) + 2d6a0: 10c4b03a or r2,r2,r3 + 2d6a4: da400117 ldw r9,4(sp) + 2d6a8: 1400062e bgeu r2,r16,2d6c4 <__divdf3+0x4cc> + 2d6ac: 1705883a add r2,r2,fp + 2d6b0: 40ffffc4 addi r3,r8,-1 + 2d6b4: 1700ad36 bltu r2,fp,2d96c <__divdf3+0x774> + 2d6b8: 1400ac2e bgeu r2,r16,2d96c <__divdf3+0x774> + 2d6bc: 423fff84 addi r8,r8,-2 + 2d6c0: 1705883a add r2,r2,fp + 2d6c4: 1421c83a sub r16,r2,r16 + 2d6c8: a00b883a mov r5,r20 + 2d6cc: 8009883a mov r4,r16 + 2d6d0: d9800315 stw r6,12(sp) + 2d6d4: d9c00215 stw r7,8(sp) + 2d6d8: da000015 stw r8,0(sp) + 2d6dc: da400115 stw r9,4(sp) + 2d6e0: 00225dc0 call 225dc <__udivsi3> + 2d6e4: 8009883a mov r4,r16 + 2d6e8: a00b883a mov r5,r20 + 2d6ec: 1025883a mov r18,r2 + 2d6f0: 00226400 call 22640 <__umodsi3> + 2d6f4: d9c00217 ldw r7,8(sp) + 2d6f8: 1004943a slli r2,r2,16 + 2d6fc: bcaf383a mul r23,r23,r18 + 2d700: 393fffcc andi r4,r7,65535 + 2d704: 2088b03a or r4,r4,r2 + 2d708: d9800317 ldw r6,12(sp) + 2d70c: da000017 ldw r8,0(sp) + 2d710: da400117 ldw r9,4(sp) + 2d714: 25c0062e bgeu r4,r23,2d730 <__divdf3+0x538> + 2d718: 2709883a add r4,r4,fp + 2d71c: 90bfffc4 addi r2,r18,-1 + 2d720: 27009436 bltu r4,fp,2d974 <__divdf3+0x77c> + 2d724: 25c0932e bgeu r4,r23,2d974 <__divdf3+0x77c> + 2d728: 94bfff84 addi r18,r18,-2 + 2d72c: 2709883a add r4,r4,fp + 2d730: 4004943a slli r2,r8,16 + 2d734: 25efc83a sub r23,r4,r23 + 2d738: 1490b03a or r8,r2,r18 + 2d73c: 4008d43a srli r4,r8,16 + 2d740: 40ffffcc andi r3,r8,65535 + 2d744: 30c5383a mul r2,r6,r3 + 2d748: 1a47383a mul r3,r3,r9 + 2d74c: 310d383a mul r6,r6,r4 + 2d750: 100ad43a srli r5,r2,16 + 2d754: 4913383a mul r9,r9,r4 + 2d758: 1987883a add r3,r3,r6 + 2d75c: 28c7883a add r3,r5,r3 + 2d760: 1980022e bgeu r3,r6,2d76c <__divdf3+0x574> + 2d764: 01000074 movhi r4,1 + 2d768: 4913883a add r9,r9,r4 + 2d76c: 1808d43a srli r4,r3,16 + 2d770: 1806943a slli r3,r3,16 + 2d774: 10bfffcc andi r2,r2,65535 + 2d778: 2253883a add r9,r4,r9 + 2d77c: 1887883a add r3,r3,r2 + 2d780: ba403836 bltu r23,r9,2d864 <__divdf3+0x66c> + 2d784: ba403626 beq r23,r9,2d860 <__divdf3+0x668> + 2d788: 42000054 ori r8,r8,1 + 2d78c: a880ffc4 addi r2,r21,1023 + 2d790: 00bf570e bge zero,r2,2d4f0 <_gp+0xffff0fb8> + 2d794: 40c001cc andi r3,r8,7 + 2d798: 18000726 beq r3,zero,2d7b8 <__divdf3+0x5c0> + 2d79c: 40c003cc andi r3,r8,15 + 2d7a0: 01000104 movi r4,4 + 2d7a4: 19000426 beq r3,r4,2d7b8 <__divdf3+0x5c0> + 2d7a8: 4107883a add r3,r8,r4 + 2d7ac: 1a11803a cmpltu r8,r3,r8 + 2d7b0: 8a23883a add r17,r17,r8 + 2d7b4: 1811883a mov r8,r3 + 2d7b8: 88c0402c andhi r3,r17,256 + 2d7bc: 18000426 beq r3,zero,2d7d0 <__divdf3+0x5d8> + 2d7c0: 00ffc034 movhi r3,65280 + 2d7c4: 18ffffc4 addi r3,r3,-1 + 2d7c8: a8810004 addi r2,r21,1024 + 2d7cc: 88e2703a and r17,r17,r3 + 2d7d0: 00c1ff84 movi r3,2046 + 2d7d4: 18bee316 blt r3,r2,2d364 <_gp+0xffff0e2c> + 2d7d8: 8824977a slli r18,r17,29 + 2d7dc: 4010d0fa srli r8,r8,3 + 2d7e0: 8822927a slli r17,r17,9 + 2d7e4: 1081ffcc andi r2,r2,2047 + 2d7e8: 9224b03a or r18,r18,r8 + 2d7ec: 880ad33a srli r5,r17,12 + 2d7f0: 98c0004c andi r3,r19,1 + 2d7f4: 003edf06 br 2d374 <_gp+0xffff0e3c> + 2d7f8: 8080022c andhi r2,r16,8 + 2d7fc: 10001226 beq r2,zero,2d848 <__divdf3+0x650> + 2d800: 8880022c andhi r2,r17,8 + 2d804: 1000101e bne r2,zero,2d848 <__divdf3+0x650> + 2d808: 00800434 movhi r2,16 + 2d80c: 89400234 orhi r5,r17,8 + 2d810: 10bfffc4 addi r2,r2,-1 + 2d814: b007883a mov r3,r22 + 2d818: 288a703a and r5,r5,r2 + 2d81c: 4025883a mov r18,r8 + 2d820: 003f3106 br 2d4e8 <_gp+0xffff0fb0> + 2d824: 008000c4 movi r2,3 + 2d828: 3880a626 beq r7,r2,2dac4 <__divdf3+0x8cc> + 2d82c: 00800044 movi r2,1 + 2d830: 3880521e bne r7,r2,2d97c <__divdf3+0x784> + 2d834: b807883a mov r3,r23 + 2d838: 0005883a mov r2,zero + 2d83c: 000b883a mov r5,zero + 2d840: 0025883a mov r18,zero + 2d844: 003ecb06 br 2d374 <_gp+0xffff0e3c> + 2d848: 00800434 movhi r2,16 + 2d84c: 81400234 orhi r5,r16,8 + 2d850: 10bfffc4 addi r2,r2,-1 + 2d854: a007883a mov r3,r20 + 2d858: 288a703a and r5,r5,r2 + 2d85c: 003f2206 br 2d4e8 <_gp+0xffff0fb0> + 2d860: 183fca26 beq r3,zero,2d78c <_gp+0xffff1254> + 2d864: e5ef883a add r23,fp,r23 + 2d868: 40bfffc4 addi r2,r8,-1 + 2d86c: bf00392e bgeu r23,fp,2d954 <__divdf3+0x75c> + 2d870: 1011883a mov r8,r2 + 2d874: ba7fc41e bne r23,r9,2d788 <_gp+0xffff1250> + 2d878: b0ffc31e bne r22,r3,2d788 <_gp+0xffff1250> + 2d87c: 003fc306 br 2d78c <_gp+0xffff1254> + 2d880: 143ff604 addi r16,r2,-40 + 2d884: 9c20983a sll r16,r19,r16 + 2d888: 0025883a mov r18,zero + 2d88c: 003ee206 br 2d418 <_gp+0xffff0ee0> + 2d890: d9800315 stw r6,12(sp) + 2d894: d9c00215 stw r7,8(sp) + 2d898: 002ef500 call 2ef50 <__clzsi2> + 2d89c: 10800804 addi r2,r2,32 + 2d8a0: d9c00217 ldw r7,8(sp) + 2d8a4: d9800317 ldw r6,12(sp) + 2d8a8: 003ed106 br 2d3f0 <_gp+0xffff0eb8> + 2d8ac: 147ff604 addi r17,r2,-40 + 2d8b0: 3462983a sll r17,r6,r17 + 2d8b4: 0011883a mov r8,zero + 2d8b8: 003ef506 br 2d490 <_gp+0xffff0f58> + 2d8bc: 3009883a mov r4,r6 + 2d8c0: d9800315 stw r6,12(sp) + 2d8c4: da400115 stw r9,4(sp) + 2d8c8: 002ef500 call 2ef50 <__clzsi2> + 2d8cc: 10800804 addi r2,r2,32 + 2d8d0: da400117 ldw r9,4(sp) + 2d8d4: d9800317 ldw r6,12(sp) + 2d8d8: 003ee306 br 2d468 <_gp+0xffff0f30> + 2d8dc: 85a1883a add r16,r16,r22 + 2d8e0: 8585803a cmpltu r2,r16,r22 + 2d8e4: 1705883a add r2,r2,fp + 2d8e8: 14a5883a add r18,r2,r18 + 2d8ec: 88bfffc4 addi r2,r17,-1 + 2d8f0: e4800c2e bgeu fp,r18,2d924 <__divdf3+0x72c> + 2d8f4: 90c03e36 bltu r18,r3,2d9f0 <__divdf3+0x7f8> + 2d8f8: 1c806926 beq r3,r18,2daa0 <__divdf3+0x8a8> + 2d8fc: 90c7c83a sub r3,r18,r3 + 2d900: 1023883a mov r17,r2 + 2d904: 003f5206 br 2d650 <_gp+0xffff1118> + 2d908: 923f0436 bltu r18,r8,2d51c <_gp+0xffff0fe4> + 2d90c: 800897fa slli r4,r16,31 + 2d910: 9004d07a srli r2,r18,1 + 2d914: 8006d07a srli r3,r16,1 + 2d918: 902097fa slli r16,r18,31 + 2d91c: 20a4b03a or r18,r4,r2 + 2d920: 003f0106 br 2d528 <_gp+0xffff0ff0> + 2d924: e4bff51e bne fp,r18,2d8fc <_gp+0xffff13c4> + 2d928: 85bff22e bgeu r16,r22,2d8f4 <_gp+0xffff13bc> + 2d92c: e0c7c83a sub r3,fp,r3 + 2d930: 1023883a mov r17,r2 + 2d934: 003f4606 br 2d650 <_gp+0xffff1118> + 2d938: 100f883a mov r7,r2 + 2d93c: 003f2b06 br 2d5ec <_gp+0xffff10b4> + 2d940: 180d883a mov r6,r3 + 2d944: 003f1306 br 2d594 <_gp+0xffff105c> + 2d948: 813fe436 bltu r16,r4,2d8dc <_gp+0xffff13a4> + 2d94c: 0007883a mov r3,zero + 2d950: 003f3f06 br 2d650 <_gp+0xffff1118> + 2d954: ba402c36 bltu r23,r9,2da08 <__divdf3+0x810> + 2d958: 4dc05426 beq r9,r23,2daac <__divdf3+0x8b4> + 2d95c: 1011883a mov r8,r2 + 2d960: 003f8906 br 2d788 <_gp+0xffff1250> + 2d964: 023fffc4 movi r8,-1 + 2d968: 003f8806 br 2d78c <_gp+0xffff1254> + 2d96c: 1811883a mov r8,r3 + 2d970: 003f5406 br 2d6c4 <_gp+0xffff118c> + 2d974: 1025883a mov r18,r2 + 2d978: 003f6d06 br 2d730 <_gp+0xffff11f8> + 2d97c: b827883a mov r19,r23 + 2d980: 003f8206 br 2d78c <_gp+0xffff1254> + 2d984: 010007c4 movi r4,31 + 2d988: 20c02616 blt r4,r3,2da24 <__divdf3+0x82c> + 2d98c: 00800804 movi r2,32 + 2d990: 10c5c83a sub r2,r2,r3 + 2d994: 888a983a sll r5,r17,r2 + 2d998: 40c8d83a srl r4,r8,r3 + 2d99c: 4084983a sll r2,r8,r2 + 2d9a0: 88e2d83a srl r17,r17,r3 + 2d9a4: 2906b03a or r3,r5,r4 + 2d9a8: 1004c03a cmpne r2,r2,zero + 2d9ac: 1886b03a or r3,r3,r2 + 2d9b0: 188001cc andi r2,r3,7 + 2d9b4: 10000726 beq r2,zero,2d9d4 <__divdf3+0x7dc> + 2d9b8: 188003cc andi r2,r3,15 + 2d9bc: 01000104 movi r4,4 + 2d9c0: 11000426 beq r2,r4,2d9d4 <__divdf3+0x7dc> + 2d9c4: 1805883a mov r2,r3 + 2d9c8: 10c00104 addi r3,r2,4 + 2d9cc: 1885803a cmpltu r2,r3,r2 + 2d9d0: 88a3883a add r17,r17,r2 + 2d9d4: 8880202c andhi r2,r17,128 + 2d9d8: 10002726 beq r2,zero,2da78 <__divdf3+0x880> + 2d9dc: 98c0004c andi r3,r19,1 + 2d9e0: 00800044 movi r2,1 + 2d9e4: 000b883a mov r5,zero + 2d9e8: 0025883a mov r18,zero + 2d9ec: 003e6106 br 2d374 <_gp+0xffff0e3c> + 2d9f0: 85a1883a add r16,r16,r22 + 2d9f4: 8585803a cmpltu r2,r16,r22 + 2d9f8: 1705883a add r2,r2,fp + 2d9fc: 14a5883a add r18,r2,r18 + 2da00: 8c7fff84 addi r17,r17,-2 + 2da04: 003f1106 br 2d64c <_gp+0xffff1114> + 2da08: b589883a add r4,r22,r22 + 2da0c: 25ad803a cmpltu r22,r4,r22 + 2da10: b739883a add fp,r22,fp + 2da14: 40bfff84 addi r2,r8,-2 + 2da18: bf2f883a add r23,r23,fp + 2da1c: 202d883a mov r22,r4 + 2da20: 003f9306 br 2d870 <_gp+0xffff1338> + 2da24: 013ff844 movi r4,-31 + 2da28: 2085c83a sub r2,r4,r2 + 2da2c: 8888d83a srl r4,r17,r2 + 2da30: 00800804 movi r2,32 + 2da34: 18802126 beq r3,r2,2dabc <__divdf3+0x8c4> + 2da38: 00801004 movi r2,64 + 2da3c: 10c5c83a sub r2,r2,r3 + 2da40: 8884983a sll r2,r17,r2 + 2da44: 1204b03a or r2,r2,r8 + 2da48: 1004c03a cmpne r2,r2,zero + 2da4c: 2084b03a or r2,r4,r2 + 2da50: 144001cc andi r17,r2,7 + 2da54: 88000d1e bne r17,zero,2da8c <__divdf3+0x894> + 2da58: 000b883a mov r5,zero + 2da5c: 1024d0fa srli r18,r2,3 + 2da60: 98c0004c andi r3,r19,1 + 2da64: 0005883a mov r2,zero + 2da68: 9464b03a or r18,r18,r17 + 2da6c: 003e4106 br 2d374 <_gp+0xffff0e3c> + 2da70: 1007883a mov r3,r2 + 2da74: 0023883a mov r17,zero + 2da78: 880a927a slli r5,r17,9 + 2da7c: 1805883a mov r2,r3 + 2da80: 8822977a slli r17,r17,29 + 2da84: 280ad33a srli r5,r5,12 + 2da88: 003ff406 br 2da5c <_gp+0xffff1524> + 2da8c: 10c003cc andi r3,r2,15 + 2da90: 01000104 movi r4,4 + 2da94: 193ff626 beq r3,r4,2da70 <_gp+0xffff1538> + 2da98: 0023883a mov r17,zero + 2da9c: 003fca06 br 2d9c8 <_gp+0xffff1490> + 2daa0: 813fd336 bltu r16,r4,2d9f0 <_gp+0xffff14b8> + 2daa4: 1023883a mov r17,r2 + 2daa8: 003fa806 br 2d94c <_gp+0xffff1414> + 2daac: b0ffd636 bltu r22,r3,2da08 <_gp+0xffff14d0> + 2dab0: 1011883a mov r8,r2 + 2dab4: b0ff341e bne r22,r3,2d788 <_gp+0xffff1250> + 2dab8: 003f3406 br 2d78c <_gp+0xffff1254> + 2dabc: 0005883a mov r2,zero + 2dac0: 003fe006 br 2da44 <_gp+0xffff150c> + 2dac4: 00800434 movhi r2,16 + 2dac8: 89400234 orhi r5,r17,8 + 2dacc: 10bfffc4 addi r2,r2,-1 + 2dad0: b807883a mov r3,r23 + 2dad4: 288a703a and r5,r5,r2 + 2dad8: 4025883a mov r18,r8 + 2dadc: 003e8206 br 2d4e8 <_gp+0xffff0fb0> + +0002dae0 <__eqdf2>: + 2dae0: 2804d53a srli r2,r5,20 + 2dae4: 3806d53a srli r3,r7,20 + 2dae8: 02000434 movhi r8,16 + 2daec: 423fffc4 addi r8,r8,-1 + 2daf0: 1081ffcc andi r2,r2,2047 + 2daf4: 0281ffc4 movi r10,2047 + 2daf8: 2a12703a and r9,r5,r8 + 2dafc: 18c1ffcc andi r3,r3,2047 + 2db00: 3a10703a and r8,r7,r8 + 2db04: 280ad7fa srli r5,r5,31 + 2db08: 380ed7fa srli r7,r7,31 + 2db0c: 12801026 beq r2,r10,2db50 <__eqdf2+0x70> + 2db10: 0281ffc4 movi r10,2047 + 2db14: 1a800a26 beq r3,r10,2db40 <__eqdf2+0x60> + 2db18: 10c00226 beq r2,r3,2db24 <__eqdf2+0x44> + 2db1c: 00800044 movi r2,1 + 2db20: f800283a ret + 2db24: 4a3ffd1e bne r9,r8,2db1c <_gp+0xffff15e4> + 2db28: 21bffc1e bne r4,r6,2db1c <_gp+0xffff15e4> + 2db2c: 29c00c26 beq r5,r7,2db60 <__eqdf2+0x80> + 2db30: 103ffa1e bne r2,zero,2db1c <_gp+0xffff15e4> + 2db34: 2244b03a or r2,r4,r9 + 2db38: 1004c03a cmpne r2,r2,zero + 2db3c: f800283a ret + 2db40: 3214b03a or r10,r6,r8 + 2db44: 503ff426 beq r10,zero,2db18 <_gp+0xffff15e0> + 2db48: 00800044 movi r2,1 + 2db4c: f800283a ret + 2db50: 2254b03a or r10,r4,r9 + 2db54: 503fee26 beq r10,zero,2db10 <_gp+0xffff15d8> + 2db58: 00800044 movi r2,1 + 2db5c: f800283a ret + 2db60: 0005883a mov r2,zero + 2db64: f800283a ret + +0002db68 <__gedf2>: + 2db68: 2804d53a srli r2,r5,20 + 2db6c: 3806d53a srli r3,r7,20 + 2db70: 02000434 movhi r8,16 + 2db74: 423fffc4 addi r8,r8,-1 + 2db78: 1081ffcc andi r2,r2,2047 + 2db7c: 0241ffc4 movi r9,2047 + 2db80: 2a14703a and r10,r5,r8 + 2db84: 18c1ffcc andi r3,r3,2047 + 2db88: 3a10703a and r8,r7,r8 + 2db8c: 280ad7fa srli r5,r5,31 + 2db90: 380ed7fa srli r7,r7,31 + 2db94: 12401d26 beq r2,r9,2dc0c <__gedf2+0xa4> + 2db98: 0241ffc4 movi r9,2047 + 2db9c: 1a401226 beq r3,r9,2dbe8 <__gedf2+0x80> + 2dba0: 1000081e bne r2,zero,2dbc4 <__gedf2+0x5c> + 2dba4: 2296b03a or r11,r4,r10 + 2dba8: 5813003a cmpeq r9,r11,zero + 2dbac: 1800091e bne r3,zero,2dbd4 <__gedf2+0x6c> + 2dbb0: 3218b03a or r12,r6,r8 + 2dbb4: 6000071e bne r12,zero,2dbd4 <__gedf2+0x6c> + 2dbb8: 0005883a mov r2,zero + 2dbbc: 5800101e bne r11,zero,2dc00 <__gedf2+0x98> + 2dbc0: f800283a ret + 2dbc4: 18000c1e bne r3,zero,2dbf8 <__gedf2+0x90> + 2dbc8: 3212b03a or r9,r6,r8 + 2dbcc: 48000c26 beq r9,zero,2dc00 <__gedf2+0x98> + 2dbd0: 0013883a mov r9,zero + 2dbd4: 39c03fcc andi r7,r7,255 + 2dbd8: 48000826 beq r9,zero,2dbfc <__gedf2+0x94> + 2dbdc: 38000926 beq r7,zero,2dc04 <__gedf2+0x9c> + 2dbe0: 00800044 movi r2,1 + 2dbe4: f800283a ret + 2dbe8: 3212b03a or r9,r6,r8 + 2dbec: 483fec26 beq r9,zero,2dba0 <_gp+0xffff1668> + 2dbf0: 00bfff84 movi r2,-2 + 2dbf4: f800283a ret + 2dbf8: 39c03fcc andi r7,r7,255 + 2dbfc: 29c00626 beq r5,r7,2dc18 <__gedf2+0xb0> + 2dc00: 283ff726 beq r5,zero,2dbe0 <_gp+0xffff16a8> + 2dc04: 00bfffc4 movi r2,-1 + 2dc08: f800283a ret + 2dc0c: 2292b03a or r9,r4,r10 + 2dc10: 483fe126 beq r9,zero,2db98 <_gp+0xffff1660> + 2dc14: 003ff606 br 2dbf0 <_gp+0xffff16b8> + 2dc18: 18bff916 blt r3,r2,2dc00 <_gp+0xffff16c8> + 2dc1c: 10c00316 blt r2,r3,2dc2c <__gedf2+0xc4> + 2dc20: 42bff736 bltu r8,r10,2dc00 <_gp+0xffff16c8> + 2dc24: 52000326 beq r10,r8,2dc34 <__gedf2+0xcc> + 2dc28: 5200042e bgeu r10,r8,2dc3c <__gedf2+0xd4> + 2dc2c: 283fec1e bne r5,zero,2dbe0 <_gp+0xffff16a8> + 2dc30: 003ff406 br 2dc04 <_gp+0xffff16cc> + 2dc34: 313ff236 bltu r6,r4,2dc00 <_gp+0xffff16c8> + 2dc38: 21bffc36 bltu r4,r6,2dc2c <_gp+0xffff16f4> + 2dc3c: 0005883a mov r2,zero + 2dc40: f800283a ret + +0002dc44 <__ledf2>: + 2dc44: 2804d53a srli r2,r5,20 + 2dc48: 3810d53a srli r8,r7,20 + 2dc4c: 00c00434 movhi r3,16 + 2dc50: 18ffffc4 addi r3,r3,-1 + 2dc54: 1081ffcc andi r2,r2,2047 + 2dc58: 0241ffc4 movi r9,2047 + 2dc5c: 28d4703a and r10,r5,r3 + 2dc60: 4201ffcc andi r8,r8,2047 + 2dc64: 38c6703a and r3,r7,r3 + 2dc68: 280ad7fa srli r5,r5,31 + 2dc6c: 380ed7fa srli r7,r7,31 + 2dc70: 12401f26 beq r2,r9,2dcf0 <__ledf2+0xac> + 2dc74: 0241ffc4 movi r9,2047 + 2dc78: 42401426 beq r8,r9,2dccc <__ledf2+0x88> + 2dc7c: 1000091e bne r2,zero,2dca4 <__ledf2+0x60> + 2dc80: 2296b03a or r11,r4,r10 + 2dc84: 5813003a cmpeq r9,r11,zero + 2dc88: 29403fcc andi r5,r5,255 + 2dc8c: 40000a1e bne r8,zero,2dcb8 <__ledf2+0x74> + 2dc90: 30d8b03a or r12,r6,r3 + 2dc94: 6000081e bne r12,zero,2dcb8 <__ledf2+0x74> + 2dc98: 0005883a mov r2,zero + 2dc9c: 5800111e bne r11,zero,2dce4 <__ledf2+0xa0> + 2dca0: f800283a ret + 2dca4: 29403fcc andi r5,r5,255 + 2dca8: 40000c1e bne r8,zero,2dcdc <__ledf2+0x98> + 2dcac: 30d2b03a or r9,r6,r3 + 2dcb0: 48000c26 beq r9,zero,2dce4 <__ledf2+0xa0> + 2dcb4: 0013883a mov r9,zero + 2dcb8: 39c03fcc andi r7,r7,255 + 2dcbc: 48000826 beq r9,zero,2dce0 <__ledf2+0x9c> + 2dcc0: 38001126 beq r7,zero,2dd08 <__ledf2+0xc4> + 2dcc4: 00800044 movi r2,1 + 2dcc8: f800283a ret + 2dccc: 30d2b03a or r9,r6,r3 + 2dcd0: 483fea26 beq r9,zero,2dc7c <_gp+0xffff1744> + 2dcd4: 00800084 movi r2,2 + 2dcd8: f800283a ret + 2dcdc: 39c03fcc andi r7,r7,255 + 2dce0: 39400726 beq r7,r5,2dd00 <__ledf2+0xbc> + 2dce4: 2800081e bne r5,zero,2dd08 <__ledf2+0xc4> + 2dce8: 00800044 movi r2,1 + 2dcec: f800283a ret + 2dcf0: 2292b03a or r9,r4,r10 + 2dcf4: 483fdf26 beq r9,zero,2dc74 <_gp+0xffff173c> + 2dcf8: 00800084 movi r2,2 + 2dcfc: f800283a ret + 2dd00: 4080030e bge r8,r2,2dd10 <__ledf2+0xcc> + 2dd04: 383fef26 beq r7,zero,2dcc4 <_gp+0xffff178c> + 2dd08: 00bfffc4 movi r2,-1 + 2dd0c: f800283a ret + 2dd10: 123feb16 blt r2,r8,2dcc0 <_gp+0xffff1788> + 2dd14: 1abff336 bltu r3,r10,2dce4 <_gp+0xffff17ac> + 2dd18: 50c00326 beq r10,r3,2dd28 <__ledf2+0xe4> + 2dd1c: 50c0042e bgeu r10,r3,2dd30 <__ledf2+0xec> + 2dd20: 283fe81e bne r5,zero,2dcc4 <_gp+0xffff178c> + 2dd24: 003ff806 br 2dd08 <_gp+0xffff17d0> + 2dd28: 313fee36 bltu r6,r4,2dce4 <_gp+0xffff17ac> + 2dd2c: 21bffc36 bltu r4,r6,2dd20 <_gp+0xffff17e8> + 2dd30: 0005883a mov r2,zero + 2dd34: f800283a ret + +0002dd38 <__muldf3>: + 2dd38: defff304 addi sp,sp,-52 + 2dd3c: 2804d53a srli r2,r5,20 + 2dd40: dd800915 stw r22,36(sp) + 2dd44: 282cd7fa srli r22,r5,31 + 2dd48: dc000315 stw r16,12(sp) + 2dd4c: 04000434 movhi r16,16 + 2dd50: dd400815 stw r21,32(sp) + 2dd54: dc800515 stw r18,20(sp) + 2dd58: 843fffc4 addi r16,r16,-1 + 2dd5c: dfc00c15 stw ra,48(sp) + 2dd60: df000b15 stw fp,44(sp) + 2dd64: ddc00a15 stw r23,40(sp) + 2dd68: dd000715 stw r20,28(sp) + 2dd6c: dcc00615 stw r19,24(sp) + 2dd70: dc400415 stw r17,16(sp) + 2dd74: 1481ffcc andi r18,r2,2047 + 2dd78: 2c20703a and r16,r5,r16 + 2dd7c: b02b883a mov r21,r22 + 2dd80: b2403fcc andi r9,r22,255 + 2dd84: 90006026 beq r18,zero,2df08 <__muldf3+0x1d0> + 2dd88: 0081ffc4 movi r2,2047 + 2dd8c: 2029883a mov r20,r4 + 2dd90: 90803626 beq r18,r2,2de6c <__muldf3+0x134> + 2dd94: 80800434 orhi r2,r16,16 + 2dd98: 100490fa slli r2,r2,3 + 2dd9c: 2020d77a srli r16,r4,29 + 2dda0: 202890fa slli r20,r4,3 + 2dda4: 94bf0044 addi r18,r18,-1023 + 2dda8: 80a0b03a or r16,r16,r2 + 2ddac: 0027883a mov r19,zero + 2ddb0: 0039883a mov fp,zero + 2ddb4: 3804d53a srli r2,r7,20 + 2ddb8: 382ed7fa srli r23,r7,31 + 2ddbc: 04400434 movhi r17,16 + 2ddc0: 8c7fffc4 addi r17,r17,-1 + 2ddc4: 1081ffcc andi r2,r2,2047 + 2ddc8: 3011883a mov r8,r6 + 2ddcc: 3c62703a and r17,r7,r17 + 2ddd0: ba803fcc andi r10,r23,255 + 2ddd4: 10006d26 beq r2,zero,2df8c <__muldf3+0x254> + 2ddd8: 00c1ffc4 movi r3,2047 + 2dddc: 10c06526 beq r2,r3,2df74 <__muldf3+0x23c> + 2dde0: 88c00434 orhi r3,r17,16 + 2dde4: 180690fa slli r3,r3,3 + 2dde8: 3022d77a srli r17,r6,29 + 2ddec: 301090fa slli r8,r6,3 + 2ddf0: 10bf0044 addi r2,r2,-1023 + 2ddf4: 88e2b03a or r17,r17,r3 + 2ddf8: 000b883a mov r5,zero + 2ddfc: 9085883a add r2,r18,r2 + 2de00: 2cc8b03a or r4,r5,r19 + 2de04: 00c003c4 movi r3,15 + 2de08: bdacf03a xor r22,r23,r22 + 2de0c: 12c00044 addi r11,r2,1 + 2de10: 19009936 bltu r3,r4,2e078 <__muldf3+0x340> + 2de14: 200890ba slli r4,r4,2 + 2de18: 00c000f4 movhi r3,3 + 2de1c: 18f78b04 addi r3,r3,-8660 + 2de20: 20c9883a add r4,r4,r3 + 2de24: 20c00017 ldw r3,0(r4) + 2de28: 1800683a jmp r3 + 2de2c: 0002e078 rdprs zero,zero,2945 + 2de30: 0002de8c andi zero,zero,2938 + 2de34: 0002de8c andi zero,zero,2938 + 2de38: 0002de88 cmpgei zero,zero,2938 + 2de3c: 0002e054 movui zero,2945 + 2de40: 0002e054 movui zero,2945 + 2de44: 0002e03c xorhi zero,zero,2944 + 2de48: 0002de88 cmpgei zero,zero,2938 + 2de4c: 0002e054 movui zero,2945 + 2de50: 0002e03c xorhi zero,zero,2944 + 2de54: 0002e054 movui zero,2945 + 2de58: 0002de88 cmpgei zero,zero,2938 + 2de5c: 0002e064 muli zero,zero,2945 + 2de60: 0002e064 muli zero,zero,2945 + 2de64: 0002e064 muli zero,zero,2945 + 2de68: 0002e280 call 2e28 <__alt_mem_onchip_memory2_0-0x1d1d8> + 2de6c: 2404b03a or r2,r4,r16 + 2de70: 10006f1e bne r2,zero,2e030 <__muldf3+0x2f8> + 2de74: 04c00204 movi r19,8 + 2de78: 0021883a mov r16,zero + 2de7c: 0029883a mov r20,zero + 2de80: 07000084 movi fp,2 + 2de84: 003fcb06 br 2ddb4 <_gp+0xffff187c> + 2de88: 502d883a mov r22,r10 + 2de8c: 00800084 movi r2,2 + 2de90: 28805726 beq r5,r2,2dff0 <__muldf3+0x2b8> + 2de94: 008000c4 movi r2,3 + 2de98: 28816626 beq r5,r2,2e434 <__muldf3+0x6fc> + 2de9c: 00800044 movi r2,1 + 2dea0: 2881411e bne r5,r2,2e3a8 <__muldf3+0x670> + 2dea4: b02b883a mov r21,r22 + 2dea8: 0005883a mov r2,zero + 2deac: 000b883a mov r5,zero + 2deb0: 0029883a mov r20,zero + 2deb4: 1004953a slli r2,r2,20 + 2deb8: a8c03fcc andi r3,r21,255 + 2debc: 04400434 movhi r17,16 + 2dec0: 8c7fffc4 addi r17,r17,-1 + 2dec4: 180697fa slli r3,r3,31 + 2dec8: 2c4a703a and r5,r5,r17 + 2decc: 288ab03a or r5,r5,r2 + 2ded0: 28c6b03a or r3,r5,r3 + 2ded4: a005883a mov r2,r20 + 2ded8: dfc00c17 ldw ra,48(sp) + 2dedc: df000b17 ldw fp,44(sp) + 2dee0: ddc00a17 ldw r23,40(sp) + 2dee4: dd800917 ldw r22,36(sp) + 2dee8: dd400817 ldw r21,32(sp) + 2deec: dd000717 ldw r20,28(sp) + 2def0: dcc00617 ldw r19,24(sp) + 2def4: dc800517 ldw r18,20(sp) + 2def8: dc400417 ldw r17,16(sp) + 2defc: dc000317 ldw r16,12(sp) + 2df00: dec00d04 addi sp,sp,52 + 2df04: f800283a ret + 2df08: 2404b03a or r2,r4,r16 + 2df0c: 2027883a mov r19,r4 + 2df10: 10004226 beq r2,zero,2e01c <__muldf3+0x2e4> + 2df14: 8000fc26 beq r16,zero,2e308 <__muldf3+0x5d0> + 2df18: 8009883a mov r4,r16 + 2df1c: d9800215 stw r6,8(sp) + 2df20: d9c00015 stw r7,0(sp) + 2df24: da400115 stw r9,4(sp) + 2df28: 002ef500 call 2ef50 <__clzsi2> + 2df2c: d9800217 ldw r6,8(sp) + 2df30: d9c00017 ldw r7,0(sp) + 2df34: da400117 ldw r9,4(sp) + 2df38: 113ffd44 addi r4,r2,-11 + 2df3c: 00c00704 movi r3,28 + 2df40: 1900ed16 blt r3,r4,2e2f8 <__muldf3+0x5c0> + 2df44: 00c00744 movi r3,29 + 2df48: 147ffe04 addi r17,r2,-8 + 2df4c: 1907c83a sub r3,r3,r4 + 2df50: 8460983a sll r16,r16,r17 + 2df54: 98c6d83a srl r3,r19,r3 + 2df58: 9c68983a sll r20,r19,r17 + 2df5c: 1c20b03a or r16,r3,r16 + 2df60: 1080fcc4 addi r2,r2,1011 + 2df64: 00a5c83a sub r18,zero,r2 + 2df68: 0027883a mov r19,zero + 2df6c: 0039883a mov fp,zero + 2df70: 003f9006 br 2ddb4 <_gp+0xffff187c> + 2df74: 3446b03a or r3,r6,r17 + 2df78: 1800261e bne r3,zero,2e014 <__muldf3+0x2dc> + 2df7c: 0023883a mov r17,zero + 2df80: 0011883a mov r8,zero + 2df84: 01400084 movi r5,2 + 2df88: 003f9c06 br 2ddfc <_gp+0xffff18c4> + 2df8c: 3446b03a or r3,r6,r17 + 2df90: 18001c26 beq r3,zero,2e004 <__muldf3+0x2cc> + 2df94: 8800ce26 beq r17,zero,2e2d0 <__muldf3+0x598> + 2df98: 8809883a mov r4,r17 + 2df9c: d9800215 stw r6,8(sp) + 2dfa0: da400115 stw r9,4(sp) + 2dfa4: da800015 stw r10,0(sp) + 2dfa8: 002ef500 call 2ef50 <__clzsi2> + 2dfac: d9800217 ldw r6,8(sp) + 2dfb0: da400117 ldw r9,4(sp) + 2dfb4: da800017 ldw r10,0(sp) + 2dfb8: 113ffd44 addi r4,r2,-11 + 2dfbc: 00c00704 movi r3,28 + 2dfc0: 1900bf16 blt r3,r4,2e2c0 <__muldf3+0x588> + 2dfc4: 00c00744 movi r3,29 + 2dfc8: 123ffe04 addi r8,r2,-8 + 2dfcc: 1907c83a sub r3,r3,r4 + 2dfd0: 8a22983a sll r17,r17,r8 + 2dfd4: 30c6d83a srl r3,r6,r3 + 2dfd8: 3210983a sll r8,r6,r8 + 2dfdc: 1c62b03a or r17,r3,r17 + 2dfe0: 1080fcc4 addi r2,r2,1011 + 2dfe4: 0085c83a sub r2,zero,r2 + 2dfe8: 000b883a mov r5,zero + 2dfec: 003f8306 br 2ddfc <_gp+0xffff18c4> + 2dff0: b02b883a mov r21,r22 + 2dff4: 0081ffc4 movi r2,2047 + 2dff8: 000b883a mov r5,zero + 2dffc: 0029883a mov r20,zero + 2e000: 003fac06 br 2deb4 <_gp+0xffff197c> + 2e004: 0023883a mov r17,zero + 2e008: 0011883a mov r8,zero + 2e00c: 01400044 movi r5,1 + 2e010: 003f7a06 br 2ddfc <_gp+0xffff18c4> + 2e014: 014000c4 movi r5,3 + 2e018: 003f7806 br 2ddfc <_gp+0xffff18c4> + 2e01c: 04c00104 movi r19,4 + 2e020: 0021883a mov r16,zero + 2e024: 0029883a mov r20,zero + 2e028: 07000044 movi fp,1 + 2e02c: 003f6106 br 2ddb4 <_gp+0xffff187c> + 2e030: 04c00304 movi r19,12 + 2e034: 070000c4 movi fp,3 + 2e038: 003f5e06 br 2ddb4 <_gp+0xffff187c> + 2e03c: 01400434 movhi r5,16 + 2e040: 002b883a mov r21,zero + 2e044: 297fffc4 addi r5,r5,-1 + 2e048: 053fffc4 movi r20,-1 + 2e04c: 0081ffc4 movi r2,2047 + 2e050: 003f9806 br 2deb4 <_gp+0xffff197c> + 2e054: 8023883a mov r17,r16 + 2e058: a011883a mov r8,r20 + 2e05c: e00b883a mov r5,fp + 2e060: 003f8a06 br 2de8c <_gp+0xffff1954> + 2e064: 8023883a mov r17,r16 + 2e068: a011883a mov r8,r20 + 2e06c: 482d883a mov r22,r9 + 2e070: e00b883a mov r5,fp + 2e074: 003f8506 br 2de8c <_gp+0xffff1954> + 2e078: a00ad43a srli r5,r20,16 + 2e07c: 401ad43a srli r13,r8,16 + 2e080: a53fffcc andi r20,r20,65535 + 2e084: 423fffcc andi r8,r8,65535 + 2e088: 4519383a mul r12,r8,r20 + 2e08c: 4147383a mul r3,r8,r5 + 2e090: 6d09383a mul r4,r13,r20 + 2e094: 600cd43a srli r6,r12,16 + 2e098: 2b5d383a mul r14,r5,r13 + 2e09c: 20c9883a add r4,r4,r3 + 2e0a0: 310d883a add r6,r6,r4 + 2e0a4: 30c0022e bgeu r6,r3,2e0b0 <__muldf3+0x378> + 2e0a8: 00c00074 movhi r3,1 + 2e0ac: 70dd883a add r14,r14,r3 + 2e0b0: 8826d43a srli r19,r17,16 + 2e0b4: 8bffffcc andi r15,r17,65535 + 2e0b8: 7d23383a mul r17,r15,r20 + 2e0bc: 7949383a mul r4,r15,r5 + 2e0c0: 9d29383a mul r20,r19,r20 + 2e0c4: 8814d43a srli r10,r17,16 + 2e0c8: 3012943a slli r9,r6,16 + 2e0cc: a129883a add r20,r20,r4 + 2e0d0: 633fffcc andi r12,r12,65535 + 2e0d4: 5515883a add r10,r10,r20 + 2e0d8: 3006d43a srli r3,r6,16 + 2e0dc: 4b13883a add r9,r9,r12 + 2e0e0: 2ccb383a mul r5,r5,r19 + 2e0e4: 5100022e bgeu r10,r4,2e0f0 <__muldf3+0x3b8> + 2e0e8: 01000074 movhi r4,1 + 2e0ec: 290b883a add r5,r5,r4 + 2e0f0: 802ad43a srli r21,r16,16 + 2e0f4: 843fffcc andi r16,r16,65535 + 2e0f8: 440d383a mul r6,r8,r16 + 2e0fc: 4565383a mul r18,r8,r21 + 2e100: 8349383a mul r4,r16,r13 + 2e104: 500e943a slli r7,r10,16 + 2e108: 3010d43a srli r8,r6,16 + 2e10c: 5028d43a srli r20,r10,16 + 2e110: 2489883a add r4,r4,r18 + 2e114: 8abfffcc andi r10,r17,65535 + 2e118: 3a95883a add r10,r7,r10 + 2e11c: 4119883a add r12,r8,r4 + 2e120: a169883a add r20,r20,r5 + 2e124: 1a87883a add r3,r3,r10 + 2e128: 6d5b383a mul r13,r13,r21 + 2e12c: 6480022e bgeu r12,r18,2e138 <__muldf3+0x400> + 2e130: 01000074 movhi r4,1 + 2e134: 691b883a add r13,r13,r4 + 2e138: 7c25383a mul r18,r15,r16 + 2e13c: 7d4b383a mul r5,r15,r21 + 2e140: 84cf383a mul r7,r16,r19 + 2e144: 901ed43a srli r15,r18,16 + 2e148: 6008d43a srli r4,r12,16 + 2e14c: 6010943a slli r8,r12,16 + 2e150: 394f883a add r7,r7,r5 + 2e154: 333fffcc andi r12,r6,65535 + 2e158: 79df883a add r15,r15,r7 + 2e15c: 235b883a add r13,r4,r13 + 2e160: 9d63383a mul r17,r19,r21 + 2e164: 4309883a add r4,r8,r12 + 2e168: 7940022e bgeu r15,r5,2e174 <__muldf3+0x43c> + 2e16c: 01400074 movhi r5,1 + 2e170: 8963883a add r17,r17,r5 + 2e174: 780a943a slli r5,r15,16 + 2e178: 91bfffcc andi r6,r18,65535 + 2e17c: 70c7883a add r3,r14,r3 + 2e180: 298d883a add r6,r5,r6 + 2e184: 1a8f803a cmpltu r7,r3,r10 + 2e188: 350b883a add r5,r6,r20 + 2e18c: 20c7883a add r3,r4,r3 + 2e190: 3955883a add r10,r7,r5 + 2e194: 1909803a cmpltu r4,r3,r4 + 2e198: 6a91883a add r8,r13,r10 + 2e19c: 780cd43a srli r6,r15,16 + 2e1a0: 2219883a add r12,r4,r8 + 2e1a4: 2d0b803a cmpltu r5,r5,r20 + 2e1a8: 51cf803a cmpltu r7,r10,r7 + 2e1ac: 29ceb03a or r7,r5,r7 + 2e1b0: 4351803a cmpltu r8,r8,r13 + 2e1b4: 610b803a cmpltu r5,r12,r4 + 2e1b8: 4148b03a or r4,r8,r5 + 2e1bc: 398f883a add r7,r7,r6 + 2e1c0: 3909883a add r4,r7,r4 + 2e1c4: 1810927a slli r8,r3,9 + 2e1c8: 2449883a add r4,r4,r17 + 2e1cc: 2008927a slli r4,r4,9 + 2e1d0: 6022d5fa srli r17,r12,23 + 2e1d4: 1806d5fa srli r3,r3,23 + 2e1d8: 4252b03a or r9,r8,r9 + 2e1dc: 600a927a slli r5,r12,9 + 2e1e0: 4810c03a cmpne r8,r9,zero + 2e1e4: 2462b03a or r17,r4,r17 + 2e1e8: 40c6b03a or r3,r8,r3 + 2e1ec: 8900402c andhi r4,r17,256 + 2e1f0: 1950b03a or r8,r3,r5 + 2e1f4: 20000726 beq r4,zero,2e214 <__muldf3+0x4dc> + 2e1f8: 4006d07a srli r3,r8,1 + 2e1fc: 880497fa slli r2,r17,31 + 2e200: 4200004c andi r8,r8,1 + 2e204: 8822d07a srli r17,r17,1 + 2e208: 1a10b03a or r8,r3,r8 + 2e20c: 1210b03a or r8,r2,r8 + 2e210: 5805883a mov r2,r11 + 2e214: 1140ffc4 addi r5,r2,1023 + 2e218: 0140440e bge zero,r5,2e32c <__muldf3+0x5f4> + 2e21c: 40c001cc andi r3,r8,7 + 2e220: 18000726 beq r3,zero,2e240 <__muldf3+0x508> + 2e224: 40c003cc andi r3,r8,15 + 2e228: 01000104 movi r4,4 + 2e22c: 19000426 beq r3,r4,2e240 <__muldf3+0x508> + 2e230: 4107883a add r3,r8,r4 + 2e234: 1a11803a cmpltu r8,r3,r8 + 2e238: 8a23883a add r17,r17,r8 + 2e23c: 1811883a mov r8,r3 + 2e240: 88c0402c andhi r3,r17,256 + 2e244: 18000426 beq r3,zero,2e258 <__muldf3+0x520> + 2e248: 11410004 addi r5,r2,1024 + 2e24c: 00bfc034 movhi r2,65280 + 2e250: 10bfffc4 addi r2,r2,-1 + 2e254: 88a2703a and r17,r17,r2 + 2e258: 0081ff84 movi r2,2046 + 2e25c: 117f6416 blt r2,r5,2dff0 <_gp+0xffff1ab8> + 2e260: 8828977a slli r20,r17,29 + 2e264: 4010d0fa srli r8,r8,3 + 2e268: 8822927a slli r17,r17,9 + 2e26c: 2881ffcc andi r2,r5,2047 + 2e270: a228b03a or r20,r20,r8 + 2e274: 880ad33a srli r5,r17,12 + 2e278: b02b883a mov r21,r22 + 2e27c: 003f0d06 br 2deb4 <_gp+0xffff197c> + 2e280: 8080022c andhi r2,r16,8 + 2e284: 10000926 beq r2,zero,2e2ac <__muldf3+0x574> + 2e288: 8880022c andhi r2,r17,8 + 2e28c: 1000071e bne r2,zero,2e2ac <__muldf3+0x574> + 2e290: 00800434 movhi r2,16 + 2e294: 89400234 orhi r5,r17,8 + 2e298: 10bfffc4 addi r2,r2,-1 + 2e29c: b82b883a mov r21,r23 + 2e2a0: 288a703a and r5,r5,r2 + 2e2a4: 4029883a mov r20,r8 + 2e2a8: 003f6806 br 2e04c <_gp+0xffff1b14> + 2e2ac: 00800434 movhi r2,16 + 2e2b0: 81400234 orhi r5,r16,8 + 2e2b4: 10bfffc4 addi r2,r2,-1 + 2e2b8: 288a703a and r5,r5,r2 + 2e2bc: 003f6306 br 2e04c <_gp+0xffff1b14> + 2e2c0: 147ff604 addi r17,r2,-40 + 2e2c4: 3462983a sll r17,r6,r17 + 2e2c8: 0011883a mov r8,zero + 2e2cc: 003f4406 br 2dfe0 <_gp+0xffff1aa8> + 2e2d0: 3009883a mov r4,r6 + 2e2d4: d9800215 stw r6,8(sp) + 2e2d8: da400115 stw r9,4(sp) + 2e2dc: da800015 stw r10,0(sp) + 2e2e0: 002ef500 call 2ef50 <__clzsi2> + 2e2e4: 10800804 addi r2,r2,32 + 2e2e8: da800017 ldw r10,0(sp) + 2e2ec: da400117 ldw r9,4(sp) + 2e2f0: d9800217 ldw r6,8(sp) + 2e2f4: 003f3006 br 2dfb8 <_gp+0xffff1a80> + 2e2f8: 143ff604 addi r16,r2,-40 + 2e2fc: 9c20983a sll r16,r19,r16 + 2e300: 0029883a mov r20,zero + 2e304: 003f1606 br 2df60 <_gp+0xffff1a28> + 2e308: d9800215 stw r6,8(sp) + 2e30c: d9c00015 stw r7,0(sp) + 2e310: da400115 stw r9,4(sp) + 2e314: 002ef500 call 2ef50 <__clzsi2> + 2e318: 10800804 addi r2,r2,32 + 2e31c: da400117 ldw r9,4(sp) + 2e320: d9c00017 ldw r7,0(sp) + 2e324: d9800217 ldw r6,8(sp) + 2e328: 003f0306 br 2df38 <_gp+0xffff1a00> + 2e32c: 00c00044 movi r3,1 + 2e330: 1947c83a sub r3,r3,r5 + 2e334: 00800e04 movi r2,56 + 2e338: 10feda16 blt r2,r3,2dea4 <_gp+0xffff196c> + 2e33c: 008007c4 movi r2,31 + 2e340: 10c01b16 blt r2,r3,2e3b0 <__muldf3+0x678> + 2e344: 00800804 movi r2,32 + 2e348: 10c5c83a sub r2,r2,r3 + 2e34c: 888a983a sll r5,r17,r2 + 2e350: 40c8d83a srl r4,r8,r3 + 2e354: 4084983a sll r2,r8,r2 + 2e358: 88e2d83a srl r17,r17,r3 + 2e35c: 2906b03a or r3,r5,r4 + 2e360: 1004c03a cmpne r2,r2,zero + 2e364: 1886b03a or r3,r3,r2 + 2e368: 188001cc andi r2,r3,7 + 2e36c: 10000726 beq r2,zero,2e38c <__muldf3+0x654> + 2e370: 188003cc andi r2,r3,15 + 2e374: 01000104 movi r4,4 + 2e378: 11000426 beq r2,r4,2e38c <__muldf3+0x654> + 2e37c: 1805883a mov r2,r3 + 2e380: 10c00104 addi r3,r2,4 + 2e384: 1885803a cmpltu r2,r3,r2 + 2e388: 88a3883a add r17,r17,r2 + 2e38c: 8880202c andhi r2,r17,128 + 2e390: 10001c26 beq r2,zero,2e404 <__muldf3+0x6cc> + 2e394: b02b883a mov r21,r22 + 2e398: 00800044 movi r2,1 + 2e39c: 000b883a mov r5,zero + 2e3a0: 0029883a mov r20,zero + 2e3a4: 003ec306 br 2deb4 <_gp+0xffff197c> + 2e3a8: 5805883a mov r2,r11 + 2e3ac: 003f9906 br 2e214 <_gp+0xffff1cdc> + 2e3b0: 00bff844 movi r2,-31 + 2e3b4: 1145c83a sub r2,r2,r5 + 2e3b8: 8888d83a srl r4,r17,r2 + 2e3bc: 00800804 movi r2,32 + 2e3c0: 18801a26 beq r3,r2,2e42c <__muldf3+0x6f4> + 2e3c4: 00801004 movi r2,64 + 2e3c8: 10c5c83a sub r2,r2,r3 + 2e3cc: 8884983a sll r2,r17,r2 + 2e3d0: 1204b03a or r2,r2,r8 + 2e3d4: 1004c03a cmpne r2,r2,zero + 2e3d8: 2084b03a or r2,r4,r2 + 2e3dc: 144001cc andi r17,r2,7 + 2e3e0: 88000d1e bne r17,zero,2e418 <__muldf3+0x6e0> + 2e3e4: 000b883a mov r5,zero + 2e3e8: 1028d0fa srli r20,r2,3 + 2e3ec: b02b883a mov r21,r22 + 2e3f0: 0005883a mov r2,zero + 2e3f4: a468b03a or r20,r20,r17 + 2e3f8: 003eae06 br 2deb4 <_gp+0xffff197c> + 2e3fc: 1007883a mov r3,r2 + 2e400: 0023883a mov r17,zero + 2e404: 880a927a slli r5,r17,9 + 2e408: 1805883a mov r2,r3 + 2e40c: 8822977a slli r17,r17,29 + 2e410: 280ad33a srli r5,r5,12 + 2e414: 003ff406 br 2e3e8 <_gp+0xffff1eb0> + 2e418: 10c003cc andi r3,r2,15 + 2e41c: 01000104 movi r4,4 + 2e420: 193ff626 beq r3,r4,2e3fc <_gp+0xffff1ec4> + 2e424: 0023883a mov r17,zero + 2e428: 003fd506 br 2e380 <_gp+0xffff1e48> + 2e42c: 0005883a mov r2,zero + 2e430: 003fe706 br 2e3d0 <_gp+0xffff1e98> + 2e434: 00800434 movhi r2,16 + 2e438: 89400234 orhi r5,r17,8 + 2e43c: 10bfffc4 addi r2,r2,-1 + 2e440: b02b883a mov r21,r22 + 2e444: 288a703a and r5,r5,r2 + 2e448: 4029883a mov r20,r8 + 2e44c: 003eff06 br 2e04c <_gp+0xffff1b14> + +0002e450 <__subdf3>: + 2e450: 02000434 movhi r8,16 + 2e454: 423fffc4 addi r8,r8,-1 + 2e458: defffb04 addi sp,sp,-20 + 2e45c: 2a14703a and r10,r5,r8 + 2e460: 3812d53a srli r9,r7,20 + 2e464: 3a10703a and r8,r7,r8 + 2e468: 2006d77a srli r3,r4,29 + 2e46c: 3004d77a srli r2,r6,29 + 2e470: dc000015 stw r16,0(sp) + 2e474: 501490fa slli r10,r10,3 + 2e478: 2820d53a srli r16,r5,20 + 2e47c: 401090fa slli r8,r8,3 + 2e480: dc800215 stw r18,8(sp) + 2e484: dc400115 stw r17,4(sp) + 2e488: dfc00415 stw ra,16(sp) + 2e48c: 202290fa slli r17,r4,3 + 2e490: dcc00315 stw r19,12(sp) + 2e494: 4a41ffcc andi r9,r9,2047 + 2e498: 0101ffc4 movi r4,2047 + 2e49c: 2824d7fa srli r18,r5,31 + 2e4a0: 8401ffcc andi r16,r16,2047 + 2e4a4: 50c6b03a or r3,r10,r3 + 2e4a8: 380ed7fa srli r7,r7,31 + 2e4ac: 408ab03a or r5,r8,r2 + 2e4b0: 300c90fa slli r6,r6,3 + 2e4b4: 49009626 beq r9,r4,2e710 <__subdf3+0x2c0> + 2e4b8: 39c0005c xori r7,r7,1 + 2e4bc: 8245c83a sub r2,r16,r9 + 2e4c0: 3c807426 beq r7,r18,2e694 <__subdf3+0x244> + 2e4c4: 0080af0e bge zero,r2,2e784 <__subdf3+0x334> + 2e4c8: 48002a1e bne r9,zero,2e574 <__subdf3+0x124> + 2e4cc: 2988b03a or r4,r5,r6 + 2e4d0: 20009a1e bne r4,zero,2e73c <__subdf3+0x2ec> + 2e4d4: 888001cc andi r2,r17,7 + 2e4d8: 10000726 beq r2,zero,2e4f8 <__subdf3+0xa8> + 2e4dc: 888003cc andi r2,r17,15 + 2e4e0: 01000104 movi r4,4 + 2e4e4: 11000426 beq r2,r4,2e4f8 <__subdf3+0xa8> + 2e4e8: 890b883a add r5,r17,r4 + 2e4ec: 2c63803a cmpltu r17,r5,r17 + 2e4f0: 1c47883a add r3,r3,r17 + 2e4f4: 2823883a mov r17,r5 + 2e4f8: 1880202c andhi r2,r3,128 + 2e4fc: 10005926 beq r2,zero,2e664 <__subdf3+0x214> + 2e500: 84000044 addi r16,r16,1 + 2e504: 0081ffc4 movi r2,2047 + 2e508: 8080be26 beq r16,r2,2e804 <__subdf3+0x3b4> + 2e50c: 017fe034 movhi r5,65408 + 2e510: 297fffc4 addi r5,r5,-1 + 2e514: 1946703a and r3,r3,r5 + 2e518: 1804977a slli r2,r3,29 + 2e51c: 1806927a slli r3,r3,9 + 2e520: 8822d0fa srli r17,r17,3 + 2e524: 8401ffcc andi r16,r16,2047 + 2e528: 180ad33a srli r5,r3,12 + 2e52c: 9100004c andi r4,r18,1 + 2e530: 1444b03a or r2,r2,r17 + 2e534: 80c1ffcc andi r3,r16,2047 + 2e538: 1820953a slli r16,r3,20 + 2e53c: 20c03fcc andi r3,r4,255 + 2e540: 180897fa slli r4,r3,31 + 2e544: 00c00434 movhi r3,16 + 2e548: 18ffffc4 addi r3,r3,-1 + 2e54c: 28c6703a and r3,r5,r3 + 2e550: 1c06b03a or r3,r3,r16 + 2e554: 1906b03a or r3,r3,r4 + 2e558: dfc00417 ldw ra,16(sp) + 2e55c: dcc00317 ldw r19,12(sp) + 2e560: dc800217 ldw r18,8(sp) + 2e564: dc400117 ldw r17,4(sp) + 2e568: dc000017 ldw r16,0(sp) + 2e56c: dec00504 addi sp,sp,20 + 2e570: f800283a ret + 2e574: 0101ffc4 movi r4,2047 + 2e578: 813fd626 beq r16,r4,2e4d4 <_gp+0xffff1f9c> + 2e57c: 29402034 orhi r5,r5,128 + 2e580: 01000e04 movi r4,56 + 2e584: 2080a316 blt r4,r2,2e814 <__subdf3+0x3c4> + 2e588: 010007c4 movi r4,31 + 2e58c: 2080c616 blt r4,r2,2e8a8 <__subdf3+0x458> + 2e590: 01000804 movi r4,32 + 2e594: 2089c83a sub r4,r4,r2 + 2e598: 2910983a sll r8,r5,r4 + 2e59c: 308ed83a srl r7,r6,r2 + 2e5a0: 3108983a sll r4,r6,r4 + 2e5a4: 2884d83a srl r2,r5,r2 + 2e5a8: 41ccb03a or r6,r8,r7 + 2e5ac: 2008c03a cmpne r4,r4,zero + 2e5b0: 310cb03a or r6,r6,r4 + 2e5b4: 898dc83a sub r6,r17,r6 + 2e5b8: 89a3803a cmpltu r17,r17,r6 + 2e5bc: 1887c83a sub r3,r3,r2 + 2e5c0: 1c47c83a sub r3,r3,r17 + 2e5c4: 3023883a mov r17,r6 + 2e5c8: 1880202c andhi r2,r3,128 + 2e5cc: 10002326 beq r2,zero,2e65c <__subdf3+0x20c> + 2e5d0: 04c02034 movhi r19,128 + 2e5d4: 9cffffc4 addi r19,r19,-1 + 2e5d8: 1ce6703a and r19,r3,r19 + 2e5dc: 98007a26 beq r19,zero,2e7c8 <__subdf3+0x378> + 2e5e0: 9809883a mov r4,r19 + 2e5e4: 002ef500 call 2ef50 <__clzsi2> + 2e5e8: 113ffe04 addi r4,r2,-8 + 2e5ec: 00c007c4 movi r3,31 + 2e5f0: 19007b16 blt r3,r4,2e7e0 <__subdf3+0x390> + 2e5f4: 00800804 movi r2,32 + 2e5f8: 1105c83a sub r2,r2,r4 + 2e5fc: 8884d83a srl r2,r17,r2 + 2e600: 9906983a sll r3,r19,r4 + 2e604: 8922983a sll r17,r17,r4 + 2e608: 10c4b03a or r2,r2,r3 + 2e60c: 24007816 blt r4,r16,2e7f0 <__subdf3+0x3a0> + 2e610: 2421c83a sub r16,r4,r16 + 2e614: 80c00044 addi r3,r16,1 + 2e618: 010007c4 movi r4,31 + 2e61c: 20c09516 blt r4,r3,2e874 <__subdf3+0x424> + 2e620: 01400804 movi r5,32 + 2e624: 28cbc83a sub r5,r5,r3 + 2e628: 88c8d83a srl r4,r17,r3 + 2e62c: 8962983a sll r17,r17,r5 + 2e630: 114a983a sll r5,r2,r5 + 2e634: 10c6d83a srl r3,r2,r3 + 2e638: 8804c03a cmpne r2,r17,zero + 2e63c: 290ab03a or r5,r5,r4 + 2e640: 28a2b03a or r17,r5,r2 + 2e644: 0021883a mov r16,zero + 2e648: 003fa206 br 2e4d4 <_gp+0xffff1f9c> + 2e64c: 2090b03a or r8,r4,r2 + 2e650: 40018e26 beq r8,zero,2ec8c <__subdf3+0x83c> + 2e654: 1007883a mov r3,r2 + 2e658: 2023883a mov r17,r4 + 2e65c: 888001cc andi r2,r17,7 + 2e660: 103f9e1e bne r2,zero,2e4dc <_gp+0xffff1fa4> + 2e664: 1804977a slli r2,r3,29 + 2e668: 8822d0fa srli r17,r17,3 + 2e66c: 1810d0fa srli r8,r3,3 + 2e670: 9100004c andi r4,r18,1 + 2e674: 1444b03a or r2,r2,r17 + 2e678: 00c1ffc4 movi r3,2047 + 2e67c: 80c02826 beq r16,r3,2e720 <__subdf3+0x2d0> + 2e680: 01400434 movhi r5,16 + 2e684: 297fffc4 addi r5,r5,-1 + 2e688: 80e0703a and r16,r16,r3 + 2e68c: 414a703a and r5,r8,r5 + 2e690: 003fa806 br 2e534 <_gp+0xffff1ffc> + 2e694: 0080630e bge zero,r2,2e824 <__subdf3+0x3d4> + 2e698: 48003026 beq r9,zero,2e75c <__subdf3+0x30c> + 2e69c: 0101ffc4 movi r4,2047 + 2e6a0: 813f8c26 beq r16,r4,2e4d4 <_gp+0xffff1f9c> + 2e6a4: 29402034 orhi r5,r5,128 + 2e6a8: 01000e04 movi r4,56 + 2e6ac: 2080a90e bge r4,r2,2e954 <__subdf3+0x504> + 2e6b0: 298cb03a or r6,r5,r6 + 2e6b4: 3012c03a cmpne r9,r6,zero + 2e6b8: 0005883a mov r2,zero + 2e6bc: 4c53883a add r9,r9,r17 + 2e6c0: 4c63803a cmpltu r17,r9,r17 + 2e6c4: 10c7883a add r3,r2,r3 + 2e6c8: 88c7883a add r3,r17,r3 + 2e6cc: 4823883a mov r17,r9 + 2e6d0: 1880202c andhi r2,r3,128 + 2e6d4: 1000d026 beq r2,zero,2ea18 <__subdf3+0x5c8> + 2e6d8: 84000044 addi r16,r16,1 + 2e6dc: 0081ffc4 movi r2,2047 + 2e6e0: 8080fe26 beq r16,r2,2eadc <__subdf3+0x68c> + 2e6e4: 00bfe034 movhi r2,65408 + 2e6e8: 10bfffc4 addi r2,r2,-1 + 2e6ec: 1886703a and r3,r3,r2 + 2e6f0: 880ad07a srli r5,r17,1 + 2e6f4: 180497fa slli r2,r3,31 + 2e6f8: 8900004c andi r4,r17,1 + 2e6fc: 2922b03a or r17,r5,r4 + 2e700: 1806d07a srli r3,r3,1 + 2e704: 1462b03a or r17,r2,r17 + 2e708: 3825883a mov r18,r7 + 2e70c: 003f7106 br 2e4d4 <_gp+0xffff1f9c> + 2e710: 2984b03a or r2,r5,r6 + 2e714: 103f6826 beq r2,zero,2e4b8 <_gp+0xffff1f80> + 2e718: 39c03fcc andi r7,r7,255 + 2e71c: 003f6706 br 2e4bc <_gp+0xffff1f84> + 2e720: 4086b03a or r3,r8,r2 + 2e724: 18015226 beq r3,zero,2ec70 <__subdf3+0x820> + 2e728: 00c00434 movhi r3,16 + 2e72c: 41400234 orhi r5,r8,8 + 2e730: 18ffffc4 addi r3,r3,-1 + 2e734: 28ca703a and r5,r5,r3 + 2e738: 003f7e06 br 2e534 <_gp+0xffff1ffc> + 2e73c: 10bfffc4 addi r2,r2,-1 + 2e740: 1000491e bne r2,zero,2e868 <__subdf3+0x418> + 2e744: 898fc83a sub r7,r17,r6 + 2e748: 89e3803a cmpltu r17,r17,r7 + 2e74c: 1947c83a sub r3,r3,r5 + 2e750: 1c47c83a sub r3,r3,r17 + 2e754: 3823883a mov r17,r7 + 2e758: 003f9b06 br 2e5c8 <_gp+0xffff2090> + 2e75c: 2988b03a or r4,r5,r6 + 2e760: 203f5c26 beq r4,zero,2e4d4 <_gp+0xffff1f9c> + 2e764: 10bfffc4 addi r2,r2,-1 + 2e768: 1000931e bne r2,zero,2e9b8 <__subdf3+0x568> + 2e76c: 898d883a add r6,r17,r6 + 2e770: 3463803a cmpltu r17,r6,r17 + 2e774: 1947883a add r3,r3,r5 + 2e778: 88c7883a add r3,r17,r3 + 2e77c: 3023883a mov r17,r6 + 2e780: 003fd306 br 2e6d0 <_gp+0xffff2198> + 2e784: 1000541e bne r2,zero,2e8d8 <__subdf3+0x488> + 2e788: 80800044 addi r2,r16,1 + 2e78c: 1081ffcc andi r2,r2,2047 + 2e790: 01000044 movi r4,1 + 2e794: 2080a20e bge r4,r2,2ea20 <__subdf3+0x5d0> + 2e798: 8989c83a sub r4,r17,r6 + 2e79c: 8905803a cmpltu r2,r17,r4 + 2e7a0: 1967c83a sub r19,r3,r5 + 2e7a4: 98a7c83a sub r19,r19,r2 + 2e7a8: 9880202c andhi r2,r19,128 + 2e7ac: 10006326 beq r2,zero,2e93c <__subdf3+0x4ec> + 2e7b0: 3463c83a sub r17,r6,r17 + 2e7b4: 28c7c83a sub r3,r5,r3 + 2e7b8: 344d803a cmpltu r6,r6,r17 + 2e7bc: 19a7c83a sub r19,r3,r6 + 2e7c0: 3825883a mov r18,r7 + 2e7c4: 983f861e bne r19,zero,2e5e0 <_gp+0xffff20a8> + 2e7c8: 8809883a mov r4,r17 + 2e7cc: 002ef500 call 2ef50 <__clzsi2> + 2e7d0: 10800804 addi r2,r2,32 + 2e7d4: 113ffe04 addi r4,r2,-8 + 2e7d8: 00c007c4 movi r3,31 + 2e7dc: 193f850e bge r3,r4,2e5f4 <_gp+0xffff20bc> + 2e7e0: 10bff604 addi r2,r2,-40 + 2e7e4: 8884983a sll r2,r17,r2 + 2e7e8: 0023883a mov r17,zero + 2e7ec: 243f880e bge r4,r16,2e610 <_gp+0xffff20d8> + 2e7f0: 00ffe034 movhi r3,65408 + 2e7f4: 18ffffc4 addi r3,r3,-1 + 2e7f8: 8121c83a sub r16,r16,r4 + 2e7fc: 10c6703a and r3,r2,r3 + 2e800: 003f3406 br 2e4d4 <_gp+0xffff1f9c> + 2e804: 9100004c andi r4,r18,1 + 2e808: 000b883a mov r5,zero + 2e80c: 0005883a mov r2,zero + 2e810: 003f4806 br 2e534 <_gp+0xffff1ffc> + 2e814: 298cb03a or r6,r5,r6 + 2e818: 300cc03a cmpne r6,r6,zero + 2e81c: 0005883a mov r2,zero + 2e820: 003f6406 br 2e5b4 <_gp+0xffff207c> + 2e824: 10009a1e bne r2,zero,2ea90 <__subdf3+0x640> + 2e828: 82400044 addi r9,r16,1 + 2e82c: 4881ffcc andi r2,r9,2047 + 2e830: 02800044 movi r10,1 + 2e834: 5080670e bge r10,r2,2e9d4 <__subdf3+0x584> + 2e838: 0081ffc4 movi r2,2047 + 2e83c: 4880af26 beq r9,r2,2eafc <__subdf3+0x6ac> + 2e840: 898d883a add r6,r17,r6 + 2e844: 1945883a add r2,r3,r5 + 2e848: 3447803a cmpltu r3,r6,r17 + 2e84c: 1887883a add r3,r3,r2 + 2e850: 182297fa slli r17,r3,31 + 2e854: 300cd07a srli r6,r6,1 + 2e858: 1806d07a srli r3,r3,1 + 2e85c: 4821883a mov r16,r9 + 2e860: 89a2b03a or r17,r17,r6 + 2e864: 003f1b06 br 2e4d4 <_gp+0xffff1f9c> + 2e868: 0101ffc4 movi r4,2047 + 2e86c: 813f441e bne r16,r4,2e580 <_gp+0xffff2048> + 2e870: 003f1806 br 2e4d4 <_gp+0xffff1f9c> + 2e874: 843ff844 addi r16,r16,-31 + 2e878: 01400804 movi r5,32 + 2e87c: 1408d83a srl r4,r2,r16 + 2e880: 19405026 beq r3,r5,2e9c4 <__subdf3+0x574> + 2e884: 01401004 movi r5,64 + 2e888: 28c7c83a sub r3,r5,r3 + 2e88c: 10c4983a sll r2,r2,r3 + 2e890: 88a2b03a or r17,r17,r2 + 2e894: 8822c03a cmpne r17,r17,zero + 2e898: 2462b03a or r17,r4,r17 + 2e89c: 0007883a mov r3,zero + 2e8a0: 0021883a mov r16,zero + 2e8a4: 003f6d06 br 2e65c <_gp+0xffff2124> + 2e8a8: 11fff804 addi r7,r2,-32 + 2e8ac: 01000804 movi r4,32 + 2e8b0: 29ced83a srl r7,r5,r7 + 2e8b4: 11004526 beq r2,r4,2e9cc <__subdf3+0x57c> + 2e8b8: 01001004 movi r4,64 + 2e8bc: 2089c83a sub r4,r4,r2 + 2e8c0: 2904983a sll r2,r5,r4 + 2e8c4: 118cb03a or r6,r2,r6 + 2e8c8: 300cc03a cmpne r6,r6,zero + 2e8cc: 398cb03a or r6,r7,r6 + 2e8d0: 0005883a mov r2,zero + 2e8d4: 003f3706 br 2e5b4 <_gp+0xffff207c> + 2e8d8: 80002a26 beq r16,zero,2e984 <__subdf3+0x534> + 2e8dc: 0101ffc4 movi r4,2047 + 2e8e0: 49006626 beq r9,r4,2ea7c <__subdf3+0x62c> + 2e8e4: 0085c83a sub r2,zero,r2 + 2e8e8: 18c02034 orhi r3,r3,128 + 2e8ec: 01000e04 movi r4,56 + 2e8f0: 20807e16 blt r4,r2,2eaec <__subdf3+0x69c> + 2e8f4: 010007c4 movi r4,31 + 2e8f8: 2080e716 blt r4,r2,2ec98 <__subdf3+0x848> + 2e8fc: 01000804 movi r4,32 + 2e900: 2089c83a sub r4,r4,r2 + 2e904: 1914983a sll r10,r3,r4 + 2e908: 8890d83a srl r8,r17,r2 + 2e90c: 8908983a sll r4,r17,r4 + 2e910: 1884d83a srl r2,r3,r2 + 2e914: 5222b03a or r17,r10,r8 + 2e918: 2006c03a cmpne r3,r4,zero + 2e91c: 88e2b03a or r17,r17,r3 + 2e920: 3463c83a sub r17,r6,r17 + 2e924: 2885c83a sub r2,r5,r2 + 2e928: 344d803a cmpltu r6,r6,r17 + 2e92c: 1187c83a sub r3,r2,r6 + 2e930: 4821883a mov r16,r9 + 2e934: 3825883a mov r18,r7 + 2e938: 003f2306 br 2e5c8 <_gp+0xffff2090> + 2e93c: 24d0b03a or r8,r4,r19 + 2e940: 40001b1e bne r8,zero,2e9b0 <__subdf3+0x560> + 2e944: 0005883a mov r2,zero + 2e948: 0009883a mov r4,zero + 2e94c: 0021883a mov r16,zero + 2e950: 003f4906 br 2e678 <_gp+0xffff2140> + 2e954: 010007c4 movi r4,31 + 2e958: 20803a16 blt r4,r2,2ea44 <__subdf3+0x5f4> + 2e95c: 01000804 movi r4,32 + 2e960: 2089c83a sub r4,r4,r2 + 2e964: 2912983a sll r9,r5,r4 + 2e968: 3090d83a srl r8,r6,r2 + 2e96c: 3108983a sll r4,r6,r4 + 2e970: 2884d83a srl r2,r5,r2 + 2e974: 4a12b03a or r9,r9,r8 + 2e978: 2008c03a cmpne r4,r4,zero + 2e97c: 4912b03a or r9,r9,r4 + 2e980: 003f4e06 br 2e6bc <_gp+0xffff2184> + 2e984: 1c48b03a or r4,r3,r17 + 2e988: 20003c26 beq r4,zero,2ea7c <__subdf3+0x62c> + 2e98c: 0084303a nor r2,zero,r2 + 2e990: 1000381e bne r2,zero,2ea74 <__subdf3+0x624> + 2e994: 3463c83a sub r17,r6,r17 + 2e998: 28c5c83a sub r2,r5,r3 + 2e99c: 344d803a cmpltu r6,r6,r17 + 2e9a0: 1187c83a sub r3,r2,r6 + 2e9a4: 4821883a mov r16,r9 + 2e9a8: 3825883a mov r18,r7 + 2e9ac: 003f0606 br 2e5c8 <_gp+0xffff2090> + 2e9b0: 2023883a mov r17,r4 + 2e9b4: 003f0906 br 2e5dc <_gp+0xffff20a4> + 2e9b8: 0101ffc4 movi r4,2047 + 2e9bc: 813f3a1e bne r16,r4,2e6a8 <_gp+0xffff2170> + 2e9c0: 003ec406 br 2e4d4 <_gp+0xffff1f9c> + 2e9c4: 0005883a mov r2,zero + 2e9c8: 003fb106 br 2e890 <_gp+0xffff2358> + 2e9cc: 0005883a mov r2,zero + 2e9d0: 003fbc06 br 2e8c4 <_gp+0xffff238c> + 2e9d4: 1c44b03a or r2,r3,r17 + 2e9d8: 80008e1e bne r16,zero,2ec14 <__subdf3+0x7c4> + 2e9dc: 1000c826 beq r2,zero,2ed00 <__subdf3+0x8b0> + 2e9e0: 2984b03a or r2,r5,r6 + 2e9e4: 103ebb26 beq r2,zero,2e4d4 <_gp+0xffff1f9c> + 2e9e8: 8989883a add r4,r17,r6 + 2e9ec: 1945883a add r2,r3,r5 + 2e9f0: 2447803a cmpltu r3,r4,r17 + 2e9f4: 1887883a add r3,r3,r2 + 2e9f8: 1880202c andhi r2,r3,128 + 2e9fc: 2023883a mov r17,r4 + 2ea00: 103f1626 beq r2,zero,2e65c <_gp+0xffff2124> + 2ea04: 00bfe034 movhi r2,65408 + 2ea08: 10bfffc4 addi r2,r2,-1 + 2ea0c: 5021883a mov r16,r10 + 2ea10: 1886703a and r3,r3,r2 + 2ea14: 003eaf06 br 2e4d4 <_gp+0xffff1f9c> + 2ea18: 3825883a mov r18,r7 + 2ea1c: 003f0f06 br 2e65c <_gp+0xffff2124> + 2ea20: 1c44b03a or r2,r3,r17 + 2ea24: 8000251e bne r16,zero,2eabc <__subdf3+0x66c> + 2ea28: 1000661e bne r2,zero,2ebc4 <__subdf3+0x774> + 2ea2c: 2990b03a or r8,r5,r6 + 2ea30: 40009626 beq r8,zero,2ec8c <__subdf3+0x83c> + 2ea34: 2807883a mov r3,r5 + 2ea38: 3023883a mov r17,r6 + 2ea3c: 3825883a mov r18,r7 + 2ea40: 003ea406 br 2e4d4 <_gp+0xffff1f9c> + 2ea44: 127ff804 addi r9,r2,-32 + 2ea48: 01000804 movi r4,32 + 2ea4c: 2a52d83a srl r9,r5,r9 + 2ea50: 11008c26 beq r2,r4,2ec84 <__subdf3+0x834> + 2ea54: 01001004 movi r4,64 + 2ea58: 2085c83a sub r2,r4,r2 + 2ea5c: 2884983a sll r2,r5,r2 + 2ea60: 118cb03a or r6,r2,r6 + 2ea64: 300cc03a cmpne r6,r6,zero + 2ea68: 4992b03a or r9,r9,r6 + 2ea6c: 0005883a mov r2,zero + 2ea70: 003f1206 br 2e6bc <_gp+0xffff2184> + 2ea74: 0101ffc4 movi r4,2047 + 2ea78: 493f9c1e bne r9,r4,2e8ec <_gp+0xffff23b4> + 2ea7c: 2807883a mov r3,r5 + 2ea80: 3023883a mov r17,r6 + 2ea84: 4821883a mov r16,r9 + 2ea88: 3825883a mov r18,r7 + 2ea8c: 003e9106 br 2e4d4 <_gp+0xffff1f9c> + 2ea90: 80001f1e bne r16,zero,2eb10 <__subdf3+0x6c0> + 2ea94: 1c48b03a or r4,r3,r17 + 2ea98: 20005a26 beq r4,zero,2ec04 <__subdf3+0x7b4> + 2ea9c: 0084303a nor r2,zero,r2 + 2eaa0: 1000561e bne r2,zero,2ebfc <__subdf3+0x7ac> + 2eaa4: 89a3883a add r17,r17,r6 + 2eaa8: 1945883a add r2,r3,r5 + 2eaac: 898d803a cmpltu r6,r17,r6 + 2eab0: 3087883a add r3,r6,r2 + 2eab4: 4821883a mov r16,r9 + 2eab8: 003f0506 br 2e6d0 <_gp+0xffff2198> + 2eabc: 10002b1e bne r2,zero,2eb6c <__subdf3+0x71c> + 2eac0: 2984b03a or r2,r5,r6 + 2eac4: 10008026 beq r2,zero,2ecc8 <__subdf3+0x878> + 2eac8: 2807883a mov r3,r5 + 2eacc: 3023883a mov r17,r6 + 2ead0: 3825883a mov r18,r7 + 2ead4: 0401ffc4 movi r16,2047 + 2ead8: 003e7e06 br 2e4d4 <_gp+0xffff1f9c> + 2eadc: 3809883a mov r4,r7 + 2eae0: 0011883a mov r8,zero + 2eae4: 0005883a mov r2,zero + 2eae8: 003ee306 br 2e678 <_gp+0xffff2140> + 2eaec: 1c62b03a or r17,r3,r17 + 2eaf0: 8822c03a cmpne r17,r17,zero + 2eaf4: 0005883a mov r2,zero + 2eaf8: 003f8906 br 2e920 <_gp+0xffff23e8> + 2eafc: 3809883a mov r4,r7 + 2eb00: 4821883a mov r16,r9 + 2eb04: 0011883a mov r8,zero + 2eb08: 0005883a mov r2,zero + 2eb0c: 003eda06 br 2e678 <_gp+0xffff2140> + 2eb10: 0101ffc4 movi r4,2047 + 2eb14: 49003b26 beq r9,r4,2ec04 <__subdf3+0x7b4> + 2eb18: 0085c83a sub r2,zero,r2 + 2eb1c: 18c02034 orhi r3,r3,128 + 2eb20: 01000e04 movi r4,56 + 2eb24: 20806e16 blt r4,r2,2ece0 <__subdf3+0x890> + 2eb28: 010007c4 movi r4,31 + 2eb2c: 20807716 blt r4,r2,2ed0c <__subdf3+0x8bc> + 2eb30: 01000804 movi r4,32 + 2eb34: 2089c83a sub r4,r4,r2 + 2eb38: 1914983a sll r10,r3,r4 + 2eb3c: 8890d83a srl r8,r17,r2 + 2eb40: 8908983a sll r4,r17,r4 + 2eb44: 1884d83a srl r2,r3,r2 + 2eb48: 5222b03a or r17,r10,r8 + 2eb4c: 2006c03a cmpne r3,r4,zero + 2eb50: 88e2b03a or r17,r17,r3 + 2eb54: 89a3883a add r17,r17,r6 + 2eb58: 1145883a add r2,r2,r5 + 2eb5c: 898d803a cmpltu r6,r17,r6 + 2eb60: 3087883a add r3,r6,r2 + 2eb64: 4821883a mov r16,r9 + 2eb68: 003ed906 br 2e6d0 <_gp+0xffff2198> + 2eb6c: 2984b03a or r2,r5,r6 + 2eb70: 10004226 beq r2,zero,2ec7c <__subdf3+0x82c> + 2eb74: 1808d0fa srli r4,r3,3 + 2eb78: 8822d0fa srli r17,r17,3 + 2eb7c: 1806977a slli r3,r3,29 + 2eb80: 2080022c andhi r2,r4,8 + 2eb84: 1c62b03a or r17,r3,r17 + 2eb88: 10000826 beq r2,zero,2ebac <__subdf3+0x75c> + 2eb8c: 2812d0fa srli r9,r5,3 + 2eb90: 4880022c andhi r2,r9,8 + 2eb94: 1000051e bne r2,zero,2ebac <__subdf3+0x75c> + 2eb98: 300cd0fa srli r6,r6,3 + 2eb9c: 2804977a slli r2,r5,29 + 2eba0: 4809883a mov r4,r9 + 2eba4: 3825883a mov r18,r7 + 2eba8: 11a2b03a or r17,r2,r6 + 2ebac: 8806d77a srli r3,r17,29 + 2ebb0: 200890fa slli r4,r4,3 + 2ebb4: 882290fa slli r17,r17,3 + 2ebb8: 0401ffc4 movi r16,2047 + 2ebbc: 1906b03a or r3,r3,r4 + 2ebc0: 003e4406 br 2e4d4 <_gp+0xffff1f9c> + 2ebc4: 2984b03a or r2,r5,r6 + 2ebc8: 103e4226 beq r2,zero,2e4d4 <_gp+0xffff1f9c> + 2ebcc: 8989c83a sub r4,r17,r6 + 2ebd0: 8911803a cmpltu r8,r17,r4 + 2ebd4: 1945c83a sub r2,r3,r5 + 2ebd8: 1205c83a sub r2,r2,r8 + 2ebdc: 1200202c andhi r8,r2,128 + 2ebe0: 403e9a26 beq r8,zero,2e64c <_gp+0xffff2114> + 2ebe4: 3463c83a sub r17,r6,r17 + 2ebe8: 28c5c83a sub r2,r5,r3 + 2ebec: 344d803a cmpltu r6,r6,r17 + 2ebf0: 1187c83a sub r3,r2,r6 + 2ebf4: 3825883a mov r18,r7 + 2ebf8: 003e3606 br 2e4d4 <_gp+0xffff1f9c> + 2ebfc: 0101ffc4 movi r4,2047 + 2ec00: 493fc71e bne r9,r4,2eb20 <_gp+0xffff25e8> + 2ec04: 2807883a mov r3,r5 + 2ec08: 3023883a mov r17,r6 + 2ec0c: 4821883a mov r16,r9 + 2ec10: 003e3006 br 2e4d4 <_gp+0xffff1f9c> + 2ec14: 10003626 beq r2,zero,2ecf0 <__subdf3+0x8a0> + 2ec18: 2984b03a or r2,r5,r6 + 2ec1c: 10001726 beq r2,zero,2ec7c <__subdf3+0x82c> + 2ec20: 1808d0fa srli r4,r3,3 + 2ec24: 8822d0fa srli r17,r17,3 + 2ec28: 1806977a slli r3,r3,29 + 2ec2c: 2080022c andhi r2,r4,8 + 2ec30: 1c62b03a or r17,r3,r17 + 2ec34: 10000726 beq r2,zero,2ec54 <__subdf3+0x804> + 2ec38: 2812d0fa srli r9,r5,3 + 2ec3c: 4880022c andhi r2,r9,8 + 2ec40: 1000041e bne r2,zero,2ec54 <__subdf3+0x804> + 2ec44: 300cd0fa srli r6,r6,3 + 2ec48: 2804977a slli r2,r5,29 + 2ec4c: 4809883a mov r4,r9 + 2ec50: 11a2b03a or r17,r2,r6 + 2ec54: 8806d77a srli r3,r17,29 + 2ec58: 200890fa slli r4,r4,3 + 2ec5c: 882290fa slli r17,r17,3 + 2ec60: 3825883a mov r18,r7 + 2ec64: 1906b03a or r3,r3,r4 + 2ec68: 0401ffc4 movi r16,2047 + 2ec6c: 003e1906 br 2e4d4 <_gp+0xffff1f9c> + 2ec70: 000b883a mov r5,zero + 2ec74: 0005883a mov r2,zero + 2ec78: 003e2e06 br 2e534 <_gp+0xffff1ffc> + 2ec7c: 0401ffc4 movi r16,2047 + 2ec80: 003e1406 br 2e4d4 <_gp+0xffff1f9c> + 2ec84: 0005883a mov r2,zero + 2ec88: 003f7506 br 2ea60 <_gp+0xffff2528> + 2ec8c: 0005883a mov r2,zero + 2ec90: 0009883a mov r4,zero + 2ec94: 003e7806 br 2e678 <_gp+0xffff2140> + 2ec98: 123ff804 addi r8,r2,-32 + 2ec9c: 01000804 movi r4,32 + 2eca0: 1a10d83a srl r8,r3,r8 + 2eca4: 11002526 beq r2,r4,2ed3c <__subdf3+0x8ec> + 2eca8: 01001004 movi r4,64 + 2ecac: 2085c83a sub r2,r4,r2 + 2ecb0: 1884983a sll r2,r3,r2 + 2ecb4: 1444b03a or r2,r2,r17 + 2ecb8: 1004c03a cmpne r2,r2,zero + 2ecbc: 40a2b03a or r17,r8,r2 + 2ecc0: 0005883a mov r2,zero + 2ecc4: 003f1606 br 2e920 <_gp+0xffff23e8> + 2ecc8: 02000434 movhi r8,16 + 2eccc: 0009883a mov r4,zero + 2ecd0: 423fffc4 addi r8,r8,-1 + 2ecd4: 00bfffc4 movi r2,-1 + 2ecd8: 0401ffc4 movi r16,2047 + 2ecdc: 003e6606 br 2e678 <_gp+0xffff2140> + 2ece0: 1c62b03a or r17,r3,r17 + 2ece4: 8822c03a cmpne r17,r17,zero + 2ece8: 0005883a mov r2,zero + 2ecec: 003f9906 br 2eb54 <_gp+0xffff261c> + 2ecf0: 2807883a mov r3,r5 + 2ecf4: 3023883a mov r17,r6 + 2ecf8: 0401ffc4 movi r16,2047 + 2ecfc: 003df506 br 2e4d4 <_gp+0xffff1f9c> + 2ed00: 2807883a mov r3,r5 + 2ed04: 3023883a mov r17,r6 + 2ed08: 003df206 br 2e4d4 <_gp+0xffff1f9c> + 2ed0c: 123ff804 addi r8,r2,-32 + 2ed10: 01000804 movi r4,32 + 2ed14: 1a10d83a srl r8,r3,r8 + 2ed18: 11000a26 beq r2,r4,2ed44 <__subdf3+0x8f4> + 2ed1c: 01001004 movi r4,64 + 2ed20: 2085c83a sub r2,r4,r2 + 2ed24: 1884983a sll r2,r3,r2 + 2ed28: 1444b03a or r2,r2,r17 + 2ed2c: 1004c03a cmpne r2,r2,zero + 2ed30: 40a2b03a or r17,r8,r2 + 2ed34: 0005883a mov r2,zero + 2ed38: 003f8606 br 2eb54 <_gp+0xffff261c> + 2ed3c: 0005883a mov r2,zero + 2ed40: 003fdc06 br 2ecb4 <_gp+0xffff277c> + 2ed44: 0005883a mov r2,zero + 2ed48: 003ff706 br 2ed28 <_gp+0xffff27f0> + +0002ed4c <__fixdfsi>: + 2ed4c: 280cd53a srli r6,r5,20 + 2ed50: 00c00434 movhi r3,16 + 2ed54: 18ffffc4 addi r3,r3,-1 + 2ed58: 3181ffcc andi r6,r6,2047 + 2ed5c: 01c0ff84 movi r7,1022 + 2ed60: 28c6703a and r3,r5,r3 + 2ed64: 280ad7fa srli r5,r5,31 + 2ed68: 3980120e bge r7,r6,2edb4 <__fixdfsi+0x68> + 2ed6c: 00810744 movi r2,1053 + 2ed70: 11800c16 blt r2,r6,2eda4 <__fixdfsi+0x58> + 2ed74: 00810cc4 movi r2,1075 + 2ed78: 1185c83a sub r2,r2,r6 + 2ed7c: 01c007c4 movi r7,31 + 2ed80: 18c00434 orhi r3,r3,16 + 2ed84: 38800d16 blt r7,r2,2edbc <__fixdfsi+0x70> + 2ed88: 31befb44 addi r6,r6,-1043 + 2ed8c: 2084d83a srl r2,r4,r2 + 2ed90: 1986983a sll r3,r3,r6 + 2ed94: 1884b03a or r2,r3,r2 + 2ed98: 28000726 beq r5,zero,2edb8 <__fixdfsi+0x6c> + 2ed9c: 0085c83a sub r2,zero,r2 + 2eda0: f800283a ret + 2eda4: 00a00034 movhi r2,32768 + 2eda8: 10bfffc4 addi r2,r2,-1 + 2edac: 2885883a add r2,r5,r2 + 2edb0: f800283a ret + 2edb4: 0005883a mov r2,zero + 2edb8: f800283a ret + 2edbc: 008104c4 movi r2,1043 + 2edc0: 1185c83a sub r2,r2,r6 + 2edc4: 1884d83a srl r2,r3,r2 + 2edc8: 003ff306 br 2ed98 <_gp+0xffff2860> + +0002edcc <__floatsidf>: + 2edcc: defffd04 addi sp,sp,-12 + 2edd0: dfc00215 stw ra,8(sp) + 2edd4: dc400115 stw r17,4(sp) + 2edd8: dc000015 stw r16,0(sp) + 2eddc: 20002b26 beq r4,zero,2ee8c <__floatsidf+0xc0> + 2ede0: 2023883a mov r17,r4 + 2ede4: 2020d7fa srli r16,r4,31 + 2ede8: 20002d16 blt r4,zero,2eea0 <__floatsidf+0xd4> + 2edec: 8809883a mov r4,r17 + 2edf0: 002ef500 call 2ef50 <__clzsi2> + 2edf4: 01410784 movi r5,1054 + 2edf8: 288bc83a sub r5,r5,r2 + 2edfc: 01010cc4 movi r4,1075 + 2ee00: 2149c83a sub r4,r4,r5 + 2ee04: 00c007c4 movi r3,31 + 2ee08: 1900160e bge r3,r4,2ee64 <__floatsidf+0x98> + 2ee0c: 00c104c4 movi r3,1043 + 2ee10: 1947c83a sub r3,r3,r5 + 2ee14: 88c6983a sll r3,r17,r3 + 2ee18: 00800434 movhi r2,16 + 2ee1c: 10bfffc4 addi r2,r2,-1 + 2ee20: 1886703a and r3,r3,r2 + 2ee24: 2941ffcc andi r5,r5,2047 + 2ee28: 800d883a mov r6,r16 + 2ee2c: 0005883a mov r2,zero + 2ee30: 280a953a slli r5,r5,20 + 2ee34: 31803fcc andi r6,r6,255 + 2ee38: 01000434 movhi r4,16 + 2ee3c: 300c97fa slli r6,r6,31 + 2ee40: 213fffc4 addi r4,r4,-1 + 2ee44: 1906703a and r3,r3,r4 + 2ee48: 1946b03a or r3,r3,r5 + 2ee4c: 1986b03a or r3,r3,r6 + 2ee50: dfc00217 ldw ra,8(sp) + 2ee54: dc400117 ldw r17,4(sp) + 2ee58: dc000017 ldw r16,0(sp) + 2ee5c: dec00304 addi sp,sp,12 + 2ee60: f800283a ret + 2ee64: 00c002c4 movi r3,11 + 2ee68: 1887c83a sub r3,r3,r2 + 2ee6c: 88c6d83a srl r3,r17,r3 + 2ee70: 8904983a sll r2,r17,r4 + 2ee74: 01000434 movhi r4,16 + 2ee78: 213fffc4 addi r4,r4,-1 + 2ee7c: 2941ffcc andi r5,r5,2047 + 2ee80: 1906703a and r3,r3,r4 + 2ee84: 800d883a mov r6,r16 + 2ee88: 003fe906 br 2ee30 <_gp+0xffff28f8> + 2ee8c: 000d883a mov r6,zero + 2ee90: 000b883a mov r5,zero + 2ee94: 0007883a mov r3,zero + 2ee98: 0005883a mov r2,zero + 2ee9c: 003fe406 br 2ee30 <_gp+0xffff28f8> + 2eea0: 0123c83a sub r17,zero,r4 + 2eea4: 003fd106 br 2edec <_gp+0xffff28b4> + +0002eea8 <__floatunsidf>: + 2eea8: defffe04 addi sp,sp,-8 + 2eeac: dc000015 stw r16,0(sp) + 2eeb0: dfc00115 stw ra,4(sp) + 2eeb4: 2021883a mov r16,r4 + 2eeb8: 20002226 beq r4,zero,2ef44 <__floatunsidf+0x9c> + 2eebc: 002ef500 call 2ef50 <__clzsi2> + 2eec0: 01010784 movi r4,1054 + 2eec4: 2089c83a sub r4,r4,r2 + 2eec8: 01810cc4 movi r6,1075 + 2eecc: 310dc83a sub r6,r6,r4 + 2eed0: 00c007c4 movi r3,31 + 2eed4: 1980120e bge r3,r6,2ef20 <__floatunsidf+0x78> + 2eed8: 00c104c4 movi r3,1043 + 2eedc: 1907c83a sub r3,r3,r4 + 2eee0: 80ca983a sll r5,r16,r3 + 2eee4: 00800434 movhi r2,16 + 2eee8: 10bfffc4 addi r2,r2,-1 + 2eeec: 2101ffcc andi r4,r4,2047 + 2eef0: 0021883a mov r16,zero + 2eef4: 288a703a and r5,r5,r2 + 2eef8: 2008953a slli r4,r4,20 + 2eefc: 00c00434 movhi r3,16 + 2ef00: 18ffffc4 addi r3,r3,-1 + 2ef04: 28c6703a and r3,r5,r3 + 2ef08: 8005883a mov r2,r16 + 2ef0c: 1906b03a or r3,r3,r4 + 2ef10: dfc00117 ldw ra,4(sp) + 2ef14: dc000017 ldw r16,0(sp) + 2ef18: dec00204 addi sp,sp,8 + 2ef1c: f800283a ret + 2ef20: 00c002c4 movi r3,11 + 2ef24: 188bc83a sub r5,r3,r2 + 2ef28: 814ad83a srl r5,r16,r5 + 2ef2c: 00c00434 movhi r3,16 + 2ef30: 18ffffc4 addi r3,r3,-1 + 2ef34: 81a0983a sll r16,r16,r6 + 2ef38: 2101ffcc andi r4,r4,2047 + 2ef3c: 28ca703a and r5,r5,r3 + 2ef40: 003fed06 br 2eef8 <_gp+0xffff29c0> + 2ef44: 0009883a mov r4,zero + 2ef48: 000b883a mov r5,zero + 2ef4c: 003fea06 br 2eef8 <_gp+0xffff29c0> + +0002ef50 <__clzsi2>: + 2ef50: 00bfffd4 movui r2,65535 + 2ef54: 11000536 bltu r2,r4,2ef6c <__clzsi2+0x1c> + 2ef58: 00803fc4 movi r2,255 + 2ef5c: 11000f36 bltu r2,r4,2ef9c <__clzsi2+0x4c> + 2ef60: 00800804 movi r2,32 + 2ef64: 0007883a mov r3,zero + 2ef68: 00000506 br 2ef80 <__clzsi2+0x30> + 2ef6c: 00804034 movhi r2,256 + 2ef70: 10bfffc4 addi r2,r2,-1 + 2ef74: 11000c2e bgeu r2,r4,2efa8 <__clzsi2+0x58> + 2ef78: 00800204 movi r2,8 + 2ef7c: 00c00604 movi r3,24 + 2ef80: 20c8d83a srl r4,r4,r3 + 2ef84: 00c000f4 movhi r3,3 + 2ef88: 18c86e04 addi r3,r3,8632 + 2ef8c: 1909883a add r4,r3,r4 + 2ef90: 20c00003 ldbu r3,0(r4) + 2ef94: 10c5c83a sub r2,r2,r3 + 2ef98: f800283a ret + 2ef9c: 00800604 movi r2,24 + 2efa0: 00c00204 movi r3,8 + 2efa4: 003ff606 br 2ef80 <_gp+0xffff2a48> + 2efa8: 00800404 movi r2,16 + 2efac: 1007883a mov r3,r2 + 2efb0: 003ff306 br 2ef80 <_gp+0xffff2a48> + +0002efb4 : +#undef errno + +extern int errno; + +static ALT_INLINE int* alt_get_errno(void) +{ + 2efb4: defffe04 addi sp,sp,-8 + 2efb8: dfc00115 stw ra,4(sp) + 2efbc: df000015 stw fp,0(sp) + 2efc0: d839883a mov fp,sp + return ((alt_errno) ? alt_errno() : &errno); + 2efc4: 008000f4 movhi r2,3 + 2efc8: 10915c04 addi r2,r2,17776 + 2efcc: 10800017 ldw r2,0(r2) + 2efd0: 10000526 beq r2,zero,2efe8 + 2efd4: 008000f4 movhi r2,3 + 2efd8: 10915c04 addi r2,r2,17776 + 2efdc: 10800017 ldw r2,0(r2) + 2efe0: 103ee83a callr r2 + 2efe4: 00000206 br 2eff0 + 2efe8: 008000f4 movhi r2,3 + 2efec: 109a0c04 addi r2,r2,26672 +} + 2eff0: e037883a mov sp,fp + 2eff4: dfc00117 ldw ra,4(sp) + 2eff8: df000017 ldw fp,0(sp) + 2effc: dec00204 addi sp,sp,8 + 2f000: f800283a ret + +0002f004 : + * + * ALT_CLOSE is mapped onto the close() system call in alt_syscall.h + */ + +int ALT_CLOSE (int fildes) +{ + 2f004: defffb04 addi sp,sp,-20 + 2f008: dfc00415 stw ra,16(sp) + 2f00c: df000315 stw fp,12(sp) + 2f010: df000304 addi fp,sp,12 + 2f014: e13fff15 stw r4,-4(fp) + * A common error case is that when the file descriptor was created, the call + * to open() failed resulting in a negative file descriptor. This is trapped + * below so that we don't try and process an invalid file descriptor. + */ + + fd = (fildes < 0) ? NULL : &alt_fd_list[fildes]; + 2f018: e0bfff17 ldw r2,-4(fp) + 2f01c: 10000616 blt r2,zero,2f038 + 2f020: e0bfff17 ldw r2,-4(fp) + 2f024: 10c00324 muli r3,r2,12 + 2f028: 008000f4 movhi r2,3 + 2f02c: 108cd604 addi r2,r2,13144 + 2f030: 1885883a add r2,r3,r2 + 2f034: 00000106 br 2f03c + 2f038: 0005883a mov r2,zero + 2f03c: e0bffd15 stw r2,-12(fp) + + if (fd) + 2f040: e0bffd17 ldw r2,-12(fp) + 2f044: 10001926 beq r2,zero,2f0ac + /* + * If the associated file system/device has a close function, call it so + * that any necessary cleanup code can run. + */ + + rval = (fd->dev->close) ? fd->dev->close(fd) : 0; + 2f048: e0bffd17 ldw r2,-12(fp) + 2f04c: 10800017 ldw r2,0(r2) + 2f050: 10800417 ldw r2,16(r2) + 2f054: 10000626 beq r2,zero,2f070 + 2f058: e0bffd17 ldw r2,-12(fp) + 2f05c: 10800017 ldw r2,0(r2) + 2f060: 10800417 ldw r2,16(r2) + 2f064: e13ffd17 ldw r4,-12(fp) + 2f068: 103ee83a callr r2 + 2f06c: 00000106 br 2f074 + 2f070: 0005883a mov r2,zero + 2f074: e0bffe15 stw r2,-8(fp) + + /* Free the file descriptor structure and return. */ + + alt_release_fd (fildes); + 2f078: e13fff17 ldw r4,-4(fp) + 2f07c: 002f7140 call 2f714 + if (rval < 0) + 2f080: e0bffe17 ldw r2,-8(fp) + 2f084: 1000070e bge r2,zero,2f0a4 + { + ALT_ERRNO = -rval; + 2f088: 002efb40 call 2efb4 + 2f08c: 1007883a mov r3,r2 + 2f090: e0bffe17 ldw r2,-8(fp) + 2f094: 0085c83a sub r2,zero,r2 + 2f098: 18800015 stw r2,0(r3) + return -1; + 2f09c: 00bfffc4 movi r2,-1 + 2f0a0: 00000706 br 2f0c0 + } + return 0; + 2f0a4: 0005883a mov r2,zero + 2f0a8: 00000506 br 2f0c0 + } + else + { + ALT_ERRNO = EBADFD; + 2f0ac: 002efb40 call 2efb4 + 2f0b0: 1007883a mov r3,r2 + 2f0b4: 00801444 movi r2,81 + 2f0b8: 18800015 stw r2,0(r3) + return -1; + 2f0bc: 00bfffc4 movi r2,-1 + } +} + 2f0c0: e037883a mov sp,fp + 2f0c4: dfc00117 ldw ra,4(sp) + 2f0c8: df000017 ldw fp,0(sp) + 2f0cc: dec00204 addi sp,sp,8 + 2f0d0: f800283a ret + +0002f0d4 : + * by the alt_dev_null device. It simple discards all data passed to it, and + * indicates that the data has been successfully transmitted. + */ + +static int alt_dev_null_write (alt_fd* fd, const char* ptr, int len) +{ + 2f0d4: defffc04 addi sp,sp,-16 + 2f0d8: df000315 stw fp,12(sp) + 2f0dc: df000304 addi fp,sp,12 + 2f0e0: e13ffd15 stw r4,-12(fp) + 2f0e4: e17ffe15 stw r5,-8(fp) + 2f0e8: e1bfff15 stw r6,-4(fp) + return len; + 2f0ec: e0bfff17 ldw r2,-4(fp) +} + 2f0f0: e037883a mov sp,fp + 2f0f4: df000017 ldw fp,0(sp) + 2f0f8: dec00104 addi sp,sp,4 + 2f0fc: f800283a ret + +0002f100 : +#undef errno + +extern int errno; + +static ALT_INLINE int* alt_get_errno(void) +{ + 2f100: defffe04 addi sp,sp,-8 + 2f104: dfc00115 stw ra,4(sp) + 2f108: df000015 stw fp,0(sp) + 2f10c: d839883a mov fp,sp + return ((alt_errno) ? alt_errno() : &errno); + 2f110: 008000f4 movhi r2,3 + 2f114: 10915c04 addi r2,r2,17776 + 2f118: 10800017 ldw r2,0(r2) + 2f11c: 10000526 beq r2,zero,2f134 + 2f120: 008000f4 movhi r2,3 + 2f124: 10915c04 addi r2,r2,17776 + 2f128: 10800017 ldw r2,0(r2) + 2f12c: 103ee83a callr r2 + 2f130: 00000206 br 2f13c + 2f134: 008000f4 movhi r2,3 + 2f138: 109a0c04 addi r2,r2,26672 +} + 2f13c: e037883a mov sp,fp + 2f140: dfc00117 ldw ra,4(sp) + 2f144: df000017 ldw fp,0(sp) + 2f148: dec00204 addi sp,sp,8 + 2f14c: f800283a ret + +0002f150 : +} + +#else /* !ALT_USE_DIRECT_DRIVERS */ + +int ALT_FSTAT (int file, struct stat *st) +{ + 2f150: defffb04 addi sp,sp,-20 + 2f154: dfc00415 stw ra,16(sp) + 2f158: df000315 stw fp,12(sp) + 2f15c: df000304 addi fp,sp,12 + 2f160: e13ffe15 stw r4,-8(fp) + 2f164: e17fff15 stw r5,-4(fp) + * A common error case is that when the file descriptor was created, the call + * to open() failed resulting in a negative file descriptor. This is trapped + * below so that we don't try and process an invalid file descriptor. + */ + + fd = (file < 0) ? NULL : &alt_fd_list[file]; + 2f168: e0bffe17 ldw r2,-8(fp) + 2f16c: 10000616 blt r2,zero,2f188 + 2f170: e0bffe17 ldw r2,-8(fp) + 2f174: 10c00324 muli r3,r2,12 + 2f178: 008000f4 movhi r2,3 + 2f17c: 108cd604 addi r2,r2,13144 + 2f180: 1885883a add r2,r3,r2 + 2f184: 00000106 br 2f18c + 2f188: 0005883a mov r2,zero + 2f18c: e0bffd15 stw r2,-12(fp) + + if (fd) + 2f190: e0bffd17 ldw r2,-12(fp) + 2f194: 10001026 beq r2,zero,2f1d8 + { + /* Call the drivers fstat() function to fill out the "st" structure. */ + + if (fd->dev->fstat) + 2f198: e0bffd17 ldw r2,-12(fp) + 2f19c: 10800017 ldw r2,0(r2) + 2f1a0: 10800817 ldw r2,32(r2) + 2f1a4: 10000726 beq r2,zero,2f1c4 + { + return fd->dev->fstat(fd, st); + 2f1a8: e0bffd17 ldw r2,-12(fp) + 2f1ac: 10800017 ldw r2,0(r2) + 2f1b0: 10800817 ldw r2,32(r2) + 2f1b4: e17fff17 ldw r5,-4(fp) + 2f1b8: e13ffd17 ldw r4,-12(fp) + 2f1bc: 103ee83a callr r2 + 2f1c0: 00000a06 br 2f1ec + * device. + */ + + else + { + st->st_mode = _IFCHR; + 2f1c4: e0bfff17 ldw r2,-4(fp) + 2f1c8: 00c80004 movi r3,8192 + 2f1cc: 10c00115 stw r3,4(r2) + return 0; + 2f1d0: 0005883a mov r2,zero + 2f1d4: 00000506 br 2f1ec + } + } + else + { + ALT_ERRNO = EBADFD; + 2f1d8: 002f1000 call 2f100 + 2f1dc: 1007883a mov r3,r2 + 2f1e0: 00801444 movi r2,81 + 2f1e4: 18800015 stw r2,0(r3) + return -1; + 2f1e8: 00bfffc4 movi r2,-1 + } +} + 2f1ec: e037883a mov sp,fp + 2f1f0: dfc00117 ldw ra,4(sp) + 2f1f4: df000017 ldw fp,0(sp) + 2f1f8: dec00204 addi sp,sp,8 + 2f1fc: f800283a ret + +0002f200 : +#undef errno + +extern int errno; + +static ALT_INLINE int* alt_get_errno(void) +{ + 2f200: defffe04 addi sp,sp,-8 + 2f204: dfc00115 stw ra,4(sp) + 2f208: df000015 stw fp,0(sp) + 2f20c: d839883a mov fp,sp + return ((alt_errno) ? alt_errno() : &errno); + 2f210: 008000f4 movhi r2,3 + 2f214: 10915c04 addi r2,r2,17776 + 2f218: 10800017 ldw r2,0(r2) + 2f21c: 10000526 beq r2,zero,2f234 + 2f220: 008000f4 movhi r2,3 + 2f224: 10915c04 addi r2,r2,17776 + 2f228: 10800017 ldw r2,0(r2) + 2f22c: 103ee83a callr r2 + 2f230: 00000206 br 2f23c + 2f234: 008000f4 movhi r2,3 + 2f238: 109a0c04 addi r2,r2,26672 +} + 2f23c: e037883a mov sp,fp + 2f240: dfc00117 ldw ra,4(sp) + 2f244: df000017 ldw fp,0(sp) + 2f248: dec00204 addi sp,sp,8 + 2f24c: f800283a ret + +0002f250 : + * + * ALT_ISATTY is mapped onto the isatty() system call in alt_syscall.h + */ + +int ALT_ISATTY (int file) +{ + 2f250: deffed04 addi sp,sp,-76 + 2f254: dfc01215 stw ra,72(sp) + 2f258: df001115 stw fp,68(sp) + 2f25c: df001104 addi fp,sp,68 + 2f260: e13fff15 stw r4,-4(fp) + * A common error case is that when the file descriptor was created, the call + * to open() failed resulting in a negative file descriptor. This is trapped + * below so that we don't try and process an invalid file descriptor. + */ + + fd = (file < 0) ? NULL : &alt_fd_list[file]; + 2f264: e0bfff17 ldw r2,-4(fp) + 2f268: 10000616 blt r2,zero,2f284 + 2f26c: e0bfff17 ldw r2,-4(fp) + 2f270: 10c00324 muli r3,r2,12 + 2f274: 008000f4 movhi r2,3 + 2f278: 108cd604 addi r2,r2,13144 + 2f27c: 1885883a add r2,r3,r2 + 2f280: 00000106 br 2f288 + 2f284: 0005883a mov r2,zero + 2f288: e0bfef15 stw r2,-68(fp) + + if (fd) + 2f28c: e0bfef17 ldw r2,-68(fp) + 2f290: 10000e26 beq r2,zero,2f2cc + /* + * If a device driver does not provide an fstat() function, then it is + * treated as a terminal device by default. + */ + + if (!fd->dev->fstat) + 2f294: e0bfef17 ldw r2,-68(fp) + 2f298: 10800017 ldw r2,0(r2) + 2f29c: 10800817 ldw r2,32(r2) + 2f2a0: 1000021e bne r2,zero,2f2ac + { + return 1; + 2f2a4: 00800044 movi r2,1 + 2f2a8: 00000d06 br 2f2e0 + * this is called so that the device can identify itself. + */ + + else + { + fstat (file, &stat); + 2f2ac: e0bff004 addi r2,fp,-64 + 2f2b0: 100b883a mov r5,r2 + 2f2b4: e13fff17 ldw r4,-4(fp) + 2f2b8: 002f1500 call 2f150 + return (stat.st_mode == _IFCHR) ? 1 : 0; + 2f2bc: e0bff117 ldw r2,-60(fp) + 2f2c0: 10880020 cmpeqi r2,r2,8192 + 2f2c4: 10803fcc andi r2,r2,255 + 2f2c8: 00000506 br 2f2e0 + } + } + else + { + ALT_ERRNO = EBADFD; + 2f2cc: 002f2000 call 2f200 + 2f2d0: 1007883a mov r3,r2 + 2f2d4: 00801444 movi r2,81 + 2f2d8: 18800015 stw r2,0(r3) + return 0; + 2f2dc: 0005883a mov r2,zero + } +} + 2f2e0: e037883a mov sp,fp + 2f2e4: dfc00117 ldw ra,4(sp) + 2f2e8: df000017 ldw fp,0(sp) + 2f2ec: dec00204 addi sp,sp,8 + 2f2f0: f800283a ret + +0002f2f4 : + */ + +static void ALT_INLINE alt_load_section (alt_u32* from, + alt_u32* to, + alt_u32* end) +{ + 2f2f4: defffc04 addi sp,sp,-16 + 2f2f8: df000315 stw fp,12(sp) + 2f2fc: df000304 addi fp,sp,12 + 2f300: e13ffd15 stw r4,-12(fp) + 2f304: e17ffe15 stw r5,-8(fp) + 2f308: e1bfff15 stw r6,-4(fp) + if (to != from) + 2f30c: e0fffe17 ldw r3,-8(fp) + 2f310: e0bffd17 ldw r2,-12(fp) + 2f314: 18800c26 beq r3,r2,2f348 + { + while( to != end ) + 2f318: 00000806 br 2f33c + { + *to++ = *from++; + 2f31c: e0bffe17 ldw r2,-8(fp) + 2f320: 10c00104 addi r3,r2,4 + 2f324: e0fffe15 stw r3,-8(fp) + 2f328: e0fffd17 ldw r3,-12(fp) + 2f32c: 19000104 addi r4,r3,4 + 2f330: e13ffd15 stw r4,-12(fp) + 2f334: 18c00017 ldw r3,0(r3) + 2f338: 10c00015 stw r3,0(r2) + alt_u32* to, + alt_u32* end) +{ + if (to != from) + { + while( to != end ) + 2f33c: e0fffe17 ldw r3,-8(fp) + 2f340: e0bfff17 ldw r2,-4(fp) + 2f344: 18bff51e bne r3,r2,2f31c <_gp+0xffff2de4> + { + *to++ = *from++; + } + } +} + 2f348: 0001883a nop + 2f34c: e037883a mov sp,fp + 2f350: df000017 ldw fp,0(sp) + 2f354: dec00104 addi sp,sp,4 + 2f358: f800283a ret + +0002f35c : + * there is no bootloader, so this application is responsible for loading to + * RAM any sections that are required. + */ + +void alt_load (void) +{ + 2f35c: defffe04 addi sp,sp,-8 + 2f360: dfc00115 stw ra,4(sp) + 2f364: df000015 stw fp,0(sp) + 2f368: d839883a mov fp,sp + /* + * Copy the .rwdata section. + */ + + alt_load_section (&__flash_rwdata_start, + 2f36c: 018000f4 movhi r6,3 + 2f370: 31916104 addi r6,r6,17796 + 2f374: 014000f4 movhi r5,3 + 2f378: 2948b904 addi r5,r5,8932 + 2f37c: 010000f4 movhi r4,3 + 2f380: 21116104 addi r4,r4,17796 + 2f384: 002f2f40 call 2f2f4 + + /* + * Copy the exception handler. + */ + + alt_load_section (&__flash_exceptions_start, + 2f388: 018000b4 movhi r6,2 + 2f38c: 31809104 addi r6,r6,580 + 2f390: 014000b4 movhi r5,2 + 2f394: 29400804 addi r5,r5,32 + 2f398: 010000b4 movhi r4,2 + 2f39c: 21000804 addi r4,r4,32 + 2f3a0: 002f2f40 call 2f2f4 + + /* + * Copy the .rodata section. + */ + + alt_load_section (&__flash_rodata_start, + 2f3a4: 018000f4 movhi r6,3 + 2f3a8: 3188b904 addi r6,r6,8932 + 2f3ac: 014000f4 movhi r5,3 + 2f3b0: 29468704 addi r5,r5,6684 + 2f3b4: 010000f4 movhi r4,3 + 2f3b8: 21068704 addi r4,r4,6684 + 2f3bc: 002f2f40 call 2f2f4 + + /* + * Now ensure that the caches are in synch. + */ + + alt_dcache_flush_all(); + 2f3c0: 0030a2c0 call 30a2c + alt_icache_flush_all(); + 2f3c4: 0030c280 call 30c28 +} + 2f3c8: 0001883a nop + 2f3cc: e037883a mov sp,fp + 2f3d0: dfc00117 ldw ra,4(sp) + 2f3d4: df000017 ldw fp,0(sp) + 2f3d8: dec00204 addi sp,sp,8 + 2f3dc: f800283a ret + +0002f3e0 : +#undef errno + +extern int errno; + +static ALT_INLINE int* alt_get_errno(void) +{ + 2f3e0: defffe04 addi sp,sp,-8 + 2f3e4: dfc00115 stw ra,4(sp) + 2f3e8: df000015 stw fp,0(sp) + 2f3ec: d839883a mov fp,sp + return ((alt_errno) ? alt_errno() : &errno); + 2f3f0: 008000f4 movhi r2,3 + 2f3f4: 10915c04 addi r2,r2,17776 + 2f3f8: 10800017 ldw r2,0(r2) + 2f3fc: 10000526 beq r2,zero,2f414 + 2f400: 008000f4 movhi r2,3 + 2f404: 10915c04 addi r2,r2,17776 + 2f408: 10800017 ldw r2,0(r2) + 2f40c: 103ee83a callr r2 + 2f410: 00000206 br 2f41c + 2f414: 008000f4 movhi r2,3 + 2f418: 109a0c04 addi r2,r2,26672 +} + 2f41c: e037883a mov sp,fp + 2f420: dfc00117 ldw ra,4(sp) + 2f424: df000017 ldw fp,0(sp) + 2f428: dec00204 addi sp,sp,8 + 2f42c: f800283a ret + +0002f430 : + * ALT_LSEEK is mapped onto the lseek() system call in alt_syscall.h + * + */ + +off_t ALT_LSEEK (int file, off_t ptr, int dir) +{ + 2f430: defff904 addi sp,sp,-28 + 2f434: dfc00615 stw ra,24(sp) + 2f438: df000515 stw fp,20(sp) + 2f43c: df000504 addi fp,sp,20 + 2f440: e13ffd15 stw r4,-12(fp) + 2f444: e17ffe15 stw r5,-8(fp) + 2f448: e1bfff15 stw r6,-4(fp) + alt_fd* fd; + off_t rc = 0; + 2f44c: e03ffb15 stw zero,-20(fp) + * A common error case is that when the file descriptor was created, the call + * to open() failed resulting in a negative file descriptor. This is trapped + * below so that we don't try and process an invalid file descriptor. + */ + + fd = (file < 0) ? NULL : &alt_fd_list[file]; + 2f450: e0bffd17 ldw r2,-12(fp) + 2f454: 10000616 blt r2,zero,2f470 + 2f458: e0bffd17 ldw r2,-12(fp) + 2f45c: 10c00324 muli r3,r2,12 + 2f460: 008000f4 movhi r2,3 + 2f464: 108cd604 addi r2,r2,13144 + 2f468: 1885883a add r2,r3,r2 + 2f46c: 00000106 br 2f474 + 2f470: 0005883a mov r2,zero + 2f474: e0bffc15 stw r2,-16(fp) + + if (fd) + 2f478: e0bffc17 ldw r2,-16(fp) + 2f47c: 10001026 beq r2,zero,2f4c0 + /* + * If the device driver provides an implementation of the lseek() function, + * then call that to process the request. + */ + + if (fd->dev->lseek) + 2f480: e0bffc17 ldw r2,-16(fp) + 2f484: 10800017 ldw r2,0(r2) + 2f488: 10800717 ldw r2,28(r2) + 2f48c: 10000926 beq r2,zero,2f4b4 + { + rc = fd->dev->lseek(fd, ptr, dir); + 2f490: e0bffc17 ldw r2,-16(fp) + 2f494: 10800017 ldw r2,0(r2) + 2f498: 10800717 ldw r2,28(r2) + 2f49c: e1bfff17 ldw r6,-4(fp) + 2f4a0: e17ffe17 ldw r5,-8(fp) + 2f4a4: e13ffc17 ldw r4,-16(fp) + 2f4a8: 103ee83a callr r2 + 2f4ac: e0bffb15 stw r2,-20(fp) + 2f4b0: 00000506 br 2f4c8 + * Otherwise return an error. + */ + + else + { + rc = -ENOTSUP; + 2f4b4: 00bfde84 movi r2,-134 + 2f4b8: e0bffb15 stw r2,-20(fp) + 2f4bc: 00000206 br 2f4c8 + } + } + else + { + rc = -EBADFD; + 2f4c0: 00bfebc4 movi r2,-81 + 2f4c4: e0bffb15 stw r2,-20(fp) + } + + if (rc < 0) + 2f4c8: e0bffb17 ldw r2,-20(fp) + 2f4cc: 1000070e bge r2,zero,2f4ec + { + ALT_ERRNO = -rc; + 2f4d0: 002f3e00 call 2f3e0 + 2f4d4: 1007883a mov r3,r2 + 2f4d8: e0bffb17 ldw r2,-20(fp) + 2f4dc: 0085c83a sub r2,zero,r2 + 2f4e0: 18800015 stw r2,0(r3) + rc = -1; + 2f4e4: 00bfffc4 movi r2,-1 + 2f4e8: e0bffb15 stw r2,-20(fp) + } + + return rc; + 2f4ec: e0bffb17 ldw r2,-20(fp) +} + 2f4f0: e037883a mov sp,fp + 2f4f4: dfc00117 ldw ra,4(sp) + 2f4f8: df000017 ldw fp,0(sp) + 2f4fc: dec00204 addi sp,sp,8 + 2f500: f800283a ret + +0002f504 : + * devices/filesystems/components in the system; and call the entry point for + * the users application, i.e. main(). + */ + +void alt_main (void) +{ + 2f504: defffd04 addi sp,sp,-12 + 2f508: dfc00215 stw ra,8(sp) + 2f50c: df000115 stw fp,4(sp) + 2f510: df000104 addi fp,sp,4 +#endif + + /* ALT LOG - please see HAL/sys/alt_log_printf.h for details */ + ALT_LOG_PRINT_BOOT("[alt_main.c] Entering alt_main, calling alt_irq_init.\r\n"); + /* Initialize the interrupt controller. */ + alt_irq_init (NULL); + 2f514: 0009883a mov r4,zero + 2f518: 002fb7c0 call 2fb7c + + /* Initialize the operating system */ + ALT_LOG_PRINT_BOOT("[alt_main.c] Done alt_irq_init, calling alt_os_init.\r\n"); + ALT_OS_INIT(); + 2f51c: 0001883a nop + ALT_LOG_PRINT_BOOT("[alt_main.c] Done OS Init, calling alt_sem_create.\r\n"); + ALT_SEM_CREATE (&alt_fd_list_lock, 1); + + /* Initialize the device drivers/software components. */ + ALT_LOG_PRINT_BOOT("[alt_main.c] Calling alt_sys_init.\r\n"); + alt_sys_init(); + 2f520: 002fbb40 call 2fbb4 + * devices be present (not equal to /dev/null) and if direct drivers + * aren't being used. + */ + + ALT_LOG_PRINT_BOOT("[alt_main.c] Redirecting IO.\r\n"); + alt_io_redirect(ALT_STDOUT, ALT_STDIN, ALT_STDERR); + 2f524: 018000f4 movhi r6,3 + 2f528: 3188b104 addi r6,r6,8900 + 2f52c: 014000f4 movhi r5,3 + 2f530: 2948b104 addi r5,r5,8900 + 2f534: 010000f4 movhi r4,3 + 2f538: 2108b104 addi r4,r4,8900 + 2f53c: 0030ff00 call 30ff0 + /* + * Call the C++ constructors + */ + + ALT_LOG_PRINT_BOOT("[alt_main.c] Calling C++ constructors.\r\n"); + _do_ctors (); + 2f540: 0030b680 call 30b68 <_do_ctors> + * redefined as _exit()). This is in the interest of reducing code footprint, + * in that the atexit() overhead is removed when it's not needed. + */ + + ALT_LOG_PRINT_BOOT("[alt_main.c] Calling atexit.\r\n"); + atexit (_do_dtors); + 2f544: 010000f4 movhi r4,3 + 2f548: 2102f204 addi r4,r4,3016 + 2f54c: 00316880 call 31688 + ALT_LOG_PRINT_BOOT("[alt_main.c] Calling main.\r\n"); + +#ifdef ALT_NO_EXIT + main (alt_argc, alt_argv, alt_envp); +#else + result = main (alt_argc, alt_argv, alt_envp); + 2f550: d0a8c217 ldw r2,-23800(gp) + 2f554: d0e8c317 ldw r3,-23796(gp) + 2f558: d128c417 ldw r4,-23792(gp) + 2f55c: 200d883a mov r6,r4 + 2f560: 180b883a mov r5,r3 + 2f564: 1009883a mov r4,r2 + 2f568: 00217440 call 21744
+ 2f56c: e0bfff15 stw r2,-4(fp) + close(STDOUT_FILENO); + 2f570: 01000044 movi r4,1 + 2f574: 002f0040 call 2f004 + exit (result); + 2f578: e13fff17 ldw r4,-4(fp) + 2f57c: 003169c0 call 3169c + +0002f580 <__malloc_lock>: + * configuration is single threaded, so there is nothing to do here. Note that + * this requires that malloc is never called by an interrupt service routine. + */ + +void __malloc_lock ( struct _reent *_r ) +{ + 2f580: defffe04 addi sp,sp,-8 + 2f584: df000115 stw fp,4(sp) + 2f588: df000104 addi fp,sp,4 + 2f58c: e13fff15 stw r4,-4(fp) +} + 2f590: 0001883a nop + 2f594: e037883a mov sp,fp + 2f598: df000017 ldw fp,0(sp) + 2f59c: dec00104 addi sp,sp,4 + 2f5a0: f800283a ret + +0002f5a4 <__malloc_unlock>: +/* + * + */ + +void __malloc_unlock ( struct _reent *_r ) +{ + 2f5a4: defffe04 addi sp,sp,-8 + 2f5a8: df000115 stw fp,4(sp) + 2f5ac: df000104 addi fp,sp,4 + 2f5b0: e13fff15 stw r4,-4(fp) +} + 2f5b4: 0001883a nop + 2f5b8: e037883a mov sp,fp + 2f5bc: df000017 ldw fp,0(sp) + 2f5c0: dec00104 addi sp,sp,4 + 2f5c4: f800283a ret + +0002f5c8 : +#undef errno + +extern int errno; + +static ALT_INLINE int* alt_get_errno(void) +{ + 2f5c8: defffe04 addi sp,sp,-8 + 2f5cc: dfc00115 stw ra,4(sp) + 2f5d0: df000015 stw fp,0(sp) + 2f5d4: d839883a mov fp,sp + return ((alt_errno) ? alt_errno() : &errno); + 2f5d8: 008000f4 movhi r2,3 + 2f5dc: 10915c04 addi r2,r2,17776 + 2f5e0: 10800017 ldw r2,0(r2) + 2f5e4: 10000526 beq r2,zero,2f5fc + 2f5e8: 008000f4 movhi r2,3 + 2f5ec: 10915c04 addi r2,r2,17776 + 2f5f0: 10800017 ldw r2,0(r2) + 2f5f4: 103ee83a callr r2 + 2f5f8: 00000206 br 2f604 + 2f5fc: 008000f4 movhi r2,3 + 2f600: 109a0c04 addi r2,r2,26672 +} + 2f604: e037883a mov sp,fp + 2f608: dfc00117 ldw ra,4(sp) + 2f60c: df000017 ldw fp,0(sp) + 2f610: dec00204 addi sp,sp,8 + 2f614: f800283a ret + +0002f618 : +} + +#else /* !ALT_USE_DIRECT_DRIVERS */ + +int ALT_READ (int file, void *ptr, size_t len) +{ + 2f618: defff904 addi sp,sp,-28 + 2f61c: dfc00615 stw ra,24(sp) + 2f620: df000515 stw fp,20(sp) + 2f624: df000504 addi fp,sp,20 + 2f628: e13ffd15 stw r4,-12(fp) + 2f62c: e17ffe15 stw r5,-8(fp) + 2f630: e1bfff15 stw r6,-4(fp) + * A common error case is that when the file descriptor was created, the call + * to open() failed resulting in a negative file descriptor. This is trapped + * below so that we don't try and process an invalid file descriptor. + */ + + fd = (file < 0) ? NULL : &alt_fd_list[file]; + 2f634: e0bffd17 ldw r2,-12(fp) + 2f638: 10000616 blt r2,zero,2f654 + 2f63c: e0bffd17 ldw r2,-12(fp) + 2f640: 10c00324 muli r3,r2,12 + 2f644: 008000f4 movhi r2,3 + 2f648: 108cd604 addi r2,r2,13144 + 2f64c: 1885883a add r2,r3,r2 + 2f650: 00000106 br 2f658 + 2f654: 0005883a mov r2,zero + 2f658: e0bffb15 stw r2,-20(fp) + + if (fd) + 2f65c: e0bffb17 ldw r2,-20(fp) + 2f660: 10002226 beq r2,zero,2f6ec + * If the file has not been opened with read access, or if the driver does + * not provide an implementation of read(), generate an error. Otherwise + * call the drivers read() function to process the request. + */ + + if (((fd->fd_flags & O_ACCMODE) != O_WRONLY) && + 2f664: e0bffb17 ldw r2,-20(fp) + 2f668: 10800217 ldw r2,8(r2) + 2f66c: 108000cc andi r2,r2,3 + 2f670: 10800060 cmpeqi r2,r2,1 + 2f674: 1000181e bne r2,zero,2f6d8 + (fd->dev->read)) + 2f678: e0bffb17 ldw r2,-20(fp) + 2f67c: 10800017 ldw r2,0(r2) + 2f680: 10800517 ldw r2,20(r2) + * If the file has not been opened with read access, or if the driver does + * not provide an implementation of read(), generate an error. Otherwise + * call the drivers read() function to process the request. + */ + + if (((fd->fd_flags & O_ACCMODE) != O_WRONLY) && + 2f684: 10001426 beq r2,zero,2f6d8 + (fd->dev->read)) + { + if ((rval = fd->dev->read(fd, ptr, len)) < 0) + 2f688: e0bffb17 ldw r2,-20(fp) + 2f68c: 10800017 ldw r2,0(r2) + 2f690: 10800517 ldw r2,20(r2) + 2f694: e0ffff17 ldw r3,-4(fp) + 2f698: 180d883a mov r6,r3 + 2f69c: e17ffe17 ldw r5,-8(fp) + 2f6a0: e13ffb17 ldw r4,-20(fp) + 2f6a4: 103ee83a callr r2 + 2f6a8: e0bffc15 stw r2,-16(fp) + 2f6ac: e0bffc17 ldw r2,-16(fp) + 2f6b0: 1000070e bge r2,zero,2f6d0 + { + ALT_ERRNO = -rval; + 2f6b4: 002f5c80 call 2f5c8 + 2f6b8: 1007883a mov r3,r2 + 2f6bc: e0bffc17 ldw r2,-16(fp) + 2f6c0: 0085c83a sub r2,zero,r2 + 2f6c4: 18800015 stw r2,0(r3) + return -1; + 2f6c8: 00bfffc4 movi r2,-1 + 2f6cc: 00000c06 br 2f700 + } + return rval; + 2f6d0: e0bffc17 ldw r2,-16(fp) + 2f6d4: 00000a06 br 2f700 + } + else + { + ALT_ERRNO = EACCES; + 2f6d8: 002f5c80 call 2f5c8 + 2f6dc: 1007883a mov r3,r2 + 2f6e0: 00800344 movi r2,13 + 2f6e4: 18800015 stw r2,0(r3) + 2f6e8: 00000406 br 2f6fc + } + } + else + { + ALT_ERRNO = EBADFD; + 2f6ec: 002f5c80 call 2f5c8 + 2f6f0: 1007883a mov r3,r2 + 2f6f4: 00801444 movi r2,81 + 2f6f8: 18800015 stw r2,0(r3) + } + return -1; + 2f6fc: 00bfffc4 movi r2,-1 +} + 2f700: e037883a mov sp,fp + 2f704: dfc00117 ldw ra,4(sp) + 2f708: df000017 ldw fp,0(sp) + 2f70c: dec00204 addi sp,sp,8 + 2f710: f800283a ret + +0002f714 : + * File descriptors correcponding to standard in, standard out and standard + * error cannont be released backed to the pool. They are always reserved. + */ + +void alt_release_fd (int fd) +{ + 2f714: defffe04 addi sp,sp,-8 + 2f718: df000115 stw fp,4(sp) + 2f71c: df000104 addi fp,sp,4 + 2f720: e13fff15 stw r4,-4(fp) + if (fd > 2) + 2f724: e0bfff17 ldw r2,-4(fp) + 2f728: 108000d0 cmplti r2,r2,3 + 2f72c: 10000d1e bne r2,zero,2f764 + { + alt_fd_list[fd].fd_flags = 0; + 2f730: 008000f4 movhi r2,3 + 2f734: 108cd604 addi r2,r2,13144 + 2f738: e0ffff17 ldw r3,-4(fp) + 2f73c: 18c00324 muli r3,r3,12 + 2f740: 10c5883a add r2,r2,r3 + 2f744: 10800204 addi r2,r2,8 + 2f748: 10000015 stw zero,0(r2) + alt_fd_list[fd].dev = 0; + 2f74c: 008000f4 movhi r2,3 + 2f750: 108cd604 addi r2,r2,13144 + 2f754: e0ffff17 ldw r3,-4(fp) + 2f758: 18c00324 muli r3,r3,12 + 2f75c: 10c5883a add r2,r2,r3 + 2f760: 10000015 stw zero,0(r2) + } +} + 2f764: 0001883a nop + 2f768: e037883a mov sp,fp + 2f76c: df000017 ldw fp,0(sp) + 2f770: dec00104 addi sp,sp,4 + 2f774: f800283a ret + +0002f778 : +#endif + +caddr_t ALT_SBRK (int incr) __attribute__ ((no_instrument_function )); + +caddr_t ALT_SBRK (int incr) +{ + 2f778: defff904 addi sp,sp,-28 + 2f77c: df000615 stw fp,24(sp) + 2f780: df000604 addi fp,sp,24 + 2f784: e13fff15 stw r4,-4(fp) +static ALT_INLINE alt_irq_context ALT_ALWAYS_INLINE + alt_irq_disable_all (void) +{ + alt_irq_context context; + + NIOS2_READ_STATUS (context); + 2f788: 0005303a rdctl r2,status + 2f78c: e0bffe15 stw r2,-8(fp) + + NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK); + 2f790: e0fffe17 ldw r3,-8(fp) + 2f794: 00bfff84 movi r2,-2 + 2f798: 1884703a and r2,r3,r2 + 2f79c: 1001703a wrctl status,r2 + + return context; + 2f7a0: e0bffe17 ldw r2,-8(fp) + alt_irq_context context; + char *prev_heap_end; + + context = alt_irq_disable_all(); + 2f7a4: e0bffb15 stw r2,-20(fp) + + /* Always return data aligned on a word boundary */ + heap_end = (char *)(((unsigned int)heap_end + 3) & ~3); + 2f7a8: d0a00f17 ldw r2,-32708(gp) + 2f7ac: 10c000c4 addi r3,r2,3 + 2f7b0: 00bfff04 movi r2,-4 + 2f7b4: 1884703a and r2,r3,r2 + 2f7b8: d0a00f15 stw r2,-32708(gp) + if (((heap_end + incr) - __alt_heap_start) > ALT_MAX_HEAP_BYTES) { + alt_irq_enable_all(context); + return (caddr_t)-1; + } +#else + if ((heap_end + incr) > __alt_heap_limit) { + 2f7bc: d0e00f17 ldw r3,-32708(gp) + 2f7c0: e0bfff17 ldw r2,-4(fp) + 2f7c4: 1887883a add r3,r3,r2 + 2f7c8: 00800134 movhi r2,4 + 2f7cc: 10a1a804 addi r2,r2,-31072 + 2f7d0: 10c0062e bgeu r2,r3,2f7ec + 2f7d4: e0bffb17 ldw r2,-20(fp) + 2f7d8: e0bffa15 stw r2,-24(fp) + status &= ~NIOS2_STATUS_PIE_MSK; + status |= (context & NIOS2_STATUS_PIE_MSK); + + NIOS2_WRITE_STATUS (status); +#else + NIOS2_WRITE_STATUS (context); + 2f7dc: e0bffa17 ldw r2,-24(fp) + 2f7e0: 1001703a wrctl status,r2 + alt_irq_enable_all(context); + return (caddr_t)-1; + 2f7e4: 00bfffc4 movi r2,-1 + 2f7e8: 00000b06 br 2f818 + } +#endif + + prev_heap_end = heap_end; + 2f7ec: d0a00f17 ldw r2,-32708(gp) + 2f7f0: e0bffd15 stw r2,-12(fp) + heap_end += incr; + 2f7f4: d0e00f17 ldw r3,-32708(gp) + 2f7f8: e0bfff17 ldw r2,-4(fp) + 2f7fc: 1885883a add r2,r3,r2 + 2f800: d0a00f15 stw r2,-32708(gp) + 2f804: e0bffb17 ldw r2,-20(fp) + 2f808: e0bffc15 stw r2,-16(fp) + 2f80c: e0bffc17 ldw r2,-16(fp) + 2f810: 1001703a wrctl status,r2 + +#endif + + alt_irq_enable_all(context); + + return (caddr_t) prev_heap_end; + 2f814: e0bffd17 ldw r2,-12(fp) +} + 2f818: e037883a mov sp,fp + 2f81c: df000017 ldw fp,0(sp) + 2f820: dec00104 addi sp,sp,4 + 2f824: f800283a ret + +0002f828 : + * alarms. Alternatively an alarm can unregister itself by returning zero when + * the alarm executes. + */ + +void alt_alarm_stop (alt_alarm* alarm) +{ + 2f828: defffa04 addi sp,sp,-24 + 2f82c: df000515 stw fp,20(sp) + 2f830: df000504 addi fp,sp,20 + 2f834: e13fff15 stw r4,-4(fp) +static ALT_INLINE alt_irq_context ALT_ALWAYS_INLINE + alt_irq_disable_all (void) +{ + alt_irq_context context; + + NIOS2_READ_STATUS (context); + 2f838: 0005303a rdctl r2,status + 2f83c: e0bffc15 stw r2,-16(fp) + + NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK); + 2f840: e0fffc17 ldw r3,-16(fp) + 2f844: 00bfff84 movi r2,-2 + 2f848: 1884703a and r2,r3,r2 + 2f84c: 1001703a wrctl status,r2 + + return context; + 2f850: e0bffc17 ldw r2,-16(fp) + alt_irq_context irq_context; + + irq_context = alt_irq_disable_all(); + 2f854: e0bffb15 stw r2,-20(fp) + alt_llist_remove (&alarm->llist); + 2f858: e0bfff17 ldw r2,-4(fp) + 2f85c: e0bffd15 stw r2,-12(fp) + * input argument is the element to remove. + */ + +static ALT_INLINE void ALT_ALWAYS_INLINE alt_llist_remove(alt_llist* entry) +{ + entry->next->previous = entry->previous; + 2f860: e0bffd17 ldw r2,-12(fp) + 2f864: 10800017 ldw r2,0(r2) + 2f868: e0fffd17 ldw r3,-12(fp) + 2f86c: 18c00117 ldw r3,4(r3) + 2f870: 10c00115 stw r3,4(r2) + entry->previous->next = entry->next; + 2f874: e0bffd17 ldw r2,-12(fp) + 2f878: 10800117 ldw r2,4(r2) + 2f87c: e0fffd17 ldw r3,-12(fp) + 2f880: 18c00017 ldw r3,0(r3) + 2f884: 10c00015 stw r3,0(r2) + /* + * Set the entry to point to itself, so that any further calls to + * alt_llist_remove() are harmless. + */ + + entry->previous = entry; + 2f888: e0bffd17 ldw r2,-12(fp) + 2f88c: e0fffd17 ldw r3,-12(fp) + 2f890: 10c00115 stw r3,4(r2) + entry->next = entry; + 2f894: e0bffd17 ldw r2,-12(fp) + 2f898: e0fffd17 ldw r3,-12(fp) + 2f89c: 10c00015 stw r3,0(r2) + 2f8a0: e0bffb17 ldw r2,-20(fp) + 2f8a4: e0bffe15 stw r2,-8(fp) + status &= ~NIOS2_STATUS_PIE_MSK; + status |= (context & NIOS2_STATUS_PIE_MSK); + + NIOS2_WRITE_STATUS (status); +#else + NIOS2_WRITE_STATUS (context); + 2f8a8: e0bffe17 ldw r2,-8(fp) + 2f8ac: 1001703a wrctl status,r2 + alt_irq_enable_all (irq_context); +} + 2f8b0: 0001883a nop + 2f8b4: e037883a mov sp,fp + 2f8b8: df000017 ldw fp,0(sp) + 2f8bc: dec00104 addi sp,sp,4 + 2f8c0: f800283a ret + +0002f8c4 : + * + * alt_tick() is expected to run at interrupt level. + */ + +void alt_tick (void) +{ + 2f8c4: defffb04 addi sp,sp,-20 + 2f8c8: dfc00415 stw ra,16(sp) + 2f8cc: df000315 stw fp,12(sp) + 2f8d0: df000304 addi fp,sp,12 + alt_alarm* next; + alt_alarm* alarm = (alt_alarm*) alt_alarm_list.next; + 2f8d4: d0a01017 ldw r2,-32704(gp) + 2f8d8: e0bffd15 stw r2,-12(fp) + + alt_u32 next_callback; + + /* update the tick counter */ + + _alt_nticks++; + 2f8dc: d0a8c617 ldw r2,-23784(gp) + 2f8e0: 10800044 addi r2,r2,1 + 2f8e4: d0a8c615 stw r2,-23784(gp) + + /* process the registered callbacks */ + + while (alarm != (alt_alarm*) &alt_alarm_list) + 2f8e8: 00002e06 br 2f9a4 + { + next = (alt_alarm*) alarm->llist.next; + 2f8ec: e0bffd17 ldw r2,-12(fp) + 2f8f0: 10800017 ldw r2,0(r2) + 2f8f4: e0bffe15 stw r2,-8(fp) + /* + * Upon the tick-counter rolling over it is safe to clear the + * roll-over flag; once the flag is cleared this (or subsequnt) + * tick events are enabled to generate an alarm event. + */ + if ((alarm->rollover) && (_alt_nticks == 0)) + 2f8f8: e0bffd17 ldw r2,-12(fp) + 2f8fc: 10800403 ldbu r2,16(r2) + 2f900: 10803fcc andi r2,r2,255 + 2f904: 10000426 beq r2,zero,2f918 + 2f908: d0a8c617 ldw r2,-23784(gp) + 2f90c: 1000021e bne r2,zero,2f918 + { + alarm->rollover = 0; + 2f910: e0bffd17 ldw r2,-12(fp) + 2f914: 10000405 stb zero,16(r2) + } + + /* if the alarm period has expired, make the callback */ + if ((alarm->time <= _alt_nticks) && (alarm->rollover == 0)) + 2f918: e0bffd17 ldw r2,-12(fp) + 2f91c: 10800217 ldw r2,8(r2) + 2f920: d0e8c617 ldw r3,-23784(gp) + 2f924: 18801d36 bltu r3,r2,2f99c + 2f928: e0bffd17 ldw r2,-12(fp) + 2f92c: 10800403 ldbu r2,16(r2) + 2f930: 10803fcc andi r2,r2,255 + 2f934: 1000191e bne r2,zero,2f99c + { + next_callback = alarm->callback (alarm->context); + 2f938: e0bffd17 ldw r2,-12(fp) + 2f93c: 10800317 ldw r2,12(r2) + 2f940: e0fffd17 ldw r3,-12(fp) + 2f944: 18c00517 ldw r3,20(r3) + 2f948: 1809883a mov r4,r3 + 2f94c: 103ee83a callr r2 + 2f950: e0bfff15 stw r2,-4(fp) + + /* deactivate the alarm if the return value is zero */ + + if (next_callback == 0) + 2f954: e0bfff17 ldw r2,-4(fp) + 2f958: 1000031e bne r2,zero,2f968 + { + alt_alarm_stop (alarm); + 2f95c: e13ffd17 ldw r4,-12(fp) + 2f960: 002f8280 call 2f828 + 2f964: 00000d06 br 2f99c + } + else + { + alarm->time += next_callback; + 2f968: e0bffd17 ldw r2,-12(fp) + 2f96c: 10c00217 ldw r3,8(r2) + 2f970: e0bfff17 ldw r2,-4(fp) + 2f974: 1887883a add r3,r3,r2 + 2f978: e0bffd17 ldw r2,-12(fp) + 2f97c: 10c00215 stw r3,8(r2) + /* + * If the desired alarm time causes a roll-over, set the rollover + * flag. This will prevent the subsequent tick event from causing + * an alarm too early. + */ + if(alarm->time < _alt_nticks) + 2f980: e0bffd17 ldw r2,-12(fp) + 2f984: 10c00217 ldw r3,8(r2) + 2f988: d0a8c617 ldw r2,-23784(gp) + 2f98c: 1880032e bgeu r3,r2,2f99c + { + alarm->rollover = 1; + 2f990: e0bffd17 ldw r2,-12(fp) + 2f994: 00c00044 movi r3,1 + 2f998: 10c00405 stb r3,16(r2) + } + } + } + alarm = next; + 2f99c: e0bffe17 ldw r2,-8(fp) + 2f9a0: e0bffd15 stw r2,-12(fp) + + _alt_nticks++; + + /* process the registered callbacks */ + + while (alarm != (alt_alarm*) &alt_alarm_list) + 2f9a4: e0fffd17 ldw r3,-12(fp) + 2f9a8: d0a01004 addi r2,gp,-32704 + 2f9ac: 18bfcf1e bne r3,r2,2f8ec <_gp+0xffff33b4> + + /* + * Update the operating system specific timer facilities. + */ + + ALT_OS_TIME_TICK(); + 2f9b0: 0001883a nop +} + 2f9b4: 0001883a nop + 2f9b8: e037883a mov sp,fp + 2f9bc: dfc00117 ldw ra,4(sp) + 2f9c0: df000017 ldw fp,0(sp) + 2f9c4: dec00204 addi sp,sp,8 + 2f9c8: f800283a ret + +0002f9cc : +#if defined (__GNUC__) && __GNUC__ >= 4 +int ALT_USLEEP (useconds_t us) +#else +unsigned int ALT_USLEEP (unsigned int us) +#endif +{ + 2f9cc: defffd04 addi sp,sp,-12 + 2f9d0: dfc00215 stw ra,8(sp) + 2f9d4: df000115 stw fp,4(sp) + 2f9d8: df000104 addi fp,sp,4 + 2f9dc: e13fff15 stw r4,-4(fp) + return alt_busy_sleep(us); + 2f9e0: e13fff17 ldw r4,-4(fp) + 2f9e4: 00308d40 call 308d4 +} + 2f9e8: e037883a mov sp,fp + 2f9ec: dfc00117 ldw ra,4(sp) + 2f9f0: df000017 ldw fp,0(sp) + 2f9f4: dec00204 addi sp,sp,8 + 2f9f8: f800283a ret + +0002f9fc : +#undef errno + +extern int errno; + +static ALT_INLINE int* alt_get_errno(void) +{ + 2f9fc: defffe04 addi sp,sp,-8 + 2fa00: dfc00115 stw ra,4(sp) + 2fa04: df000015 stw fp,0(sp) + 2fa08: d839883a mov fp,sp + return ((alt_errno) ? alt_errno() : &errno); + 2fa0c: 008000f4 movhi r2,3 + 2fa10: 10915c04 addi r2,r2,17776 + 2fa14: 10800017 ldw r2,0(r2) + 2fa18: 10000526 beq r2,zero,2fa30 + 2fa1c: 008000f4 movhi r2,3 + 2fa20: 10915c04 addi r2,r2,17776 + 2fa24: 10800017 ldw r2,0(r2) + 2fa28: 103ee83a callr r2 + 2fa2c: 00000206 br 2fa38 + 2fa30: 008000f4 movhi r2,3 + 2fa34: 109a0c04 addi r2,r2,26672 +} + 2fa38: e037883a mov sp,fp + 2fa3c: dfc00117 ldw ra,4(sp) + 2fa40: df000017 ldw fp,0(sp) + 2fa44: dec00204 addi sp,sp,8 + 2fa48: f800283a ret + +0002fa4c : +} + +#else /* !ALT_USE_DIRECT_DRIVERS */ + +int ALT_WRITE (int file, const void *ptr, size_t len) +{ + 2fa4c: defff904 addi sp,sp,-28 + 2fa50: dfc00615 stw ra,24(sp) + 2fa54: df000515 stw fp,20(sp) + 2fa58: df000504 addi fp,sp,20 + 2fa5c: e13ffd15 stw r4,-12(fp) + 2fa60: e17ffe15 stw r5,-8(fp) + 2fa64: e1bfff15 stw r6,-4(fp) + * A common error case is that when the file descriptor was created, the call + * to open() failed resulting in a negative file descriptor. This is trapped + * below so that we don't try and process an invalid file descriptor. + */ + + fd = (file < 0) ? NULL : &alt_fd_list[file]; + 2fa68: e0bffd17 ldw r2,-12(fp) + 2fa6c: 10000616 blt r2,zero,2fa88 + 2fa70: e0bffd17 ldw r2,-12(fp) + 2fa74: 10c00324 muli r3,r2,12 + 2fa78: 008000f4 movhi r2,3 + 2fa7c: 108cd604 addi r2,r2,13144 + 2fa80: 1885883a add r2,r3,r2 + 2fa84: 00000106 br 2fa8c + 2fa88: 0005883a mov r2,zero + 2fa8c: e0bffb15 stw r2,-20(fp) + + if (fd) + 2fa90: e0bffb17 ldw r2,-20(fp) + 2fa94: 10002126 beq r2,zero,2fb1c + * If the file has not been opened with write access, or if the driver does + * not provide an implementation of write(), generate an error. Otherwise + * call the drivers write() function to process the request. + */ + + if (((fd->fd_flags & O_ACCMODE) != O_RDONLY) && fd->dev->write) + 2fa98: e0bffb17 ldw r2,-20(fp) + 2fa9c: 10800217 ldw r2,8(r2) + 2faa0: 108000cc andi r2,r2,3 + 2faa4: 10001826 beq r2,zero,2fb08 + 2faa8: e0bffb17 ldw r2,-20(fp) + 2faac: 10800017 ldw r2,0(r2) + 2fab0: 10800617 ldw r2,24(r2) + 2fab4: 10001426 beq r2,zero,2fb08 + { + + /* ALT_LOG - see altera_hal/HAL/inc/sys/alt_log_printf.h */ + ALT_LOG_WRITE_FUNCTION(ptr,len); + + if ((rval = fd->dev->write(fd, ptr, len)) < 0) + 2fab8: e0bffb17 ldw r2,-20(fp) + 2fabc: 10800017 ldw r2,0(r2) + 2fac0: 10800617 ldw r2,24(r2) + 2fac4: e0ffff17 ldw r3,-4(fp) + 2fac8: 180d883a mov r6,r3 + 2facc: e17ffe17 ldw r5,-8(fp) + 2fad0: e13ffb17 ldw r4,-20(fp) + 2fad4: 103ee83a callr r2 + 2fad8: e0bffc15 stw r2,-16(fp) + 2fadc: e0bffc17 ldw r2,-16(fp) + 2fae0: 1000070e bge r2,zero,2fb00 + { + ALT_ERRNO = -rval; + 2fae4: 002f9fc0 call 2f9fc + 2fae8: 1007883a mov r3,r2 + 2faec: e0bffc17 ldw r2,-16(fp) + 2faf0: 0085c83a sub r2,zero,r2 + 2faf4: 18800015 stw r2,0(r3) + return -1; + 2faf8: 00bfffc4 movi r2,-1 + 2fafc: 00000c06 br 2fb30 + } + return rval; + 2fb00: e0bffc17 ldw r2,-16(fp) + 2fb04: 00000a06 br 2fb30 + } + else + { + ALT_ERRNO = EACCES; + 2fb08: 002f9fc0 call 2f9fc + 2fb0c: 1007883a mov r3,r2 + 2fb10: 00800344 movi r2,13 + 2fb14: 18800015 stw r2,0(r3) + 2fb18: 00000406 br 2fb2c + } + } + else + { + ALT_ERRNO = EBADFD; + 2fb1c: 002f9fc0 call 2f9fc + 2fb20: 1007883a mov r3,r2 + 2fb24: 00801444 movi r2,81 + 2fb28: 18800015 stw r2,0(r3) + } + return -1; + 2fb2c: 00bfffc4 movi r2,-1 +} + 2fb30: e037883a mov sp,fp + 2fb34: dfc00117 ldw ra,4(sp) + 2fb38: df000017 ldw fp,0(sp) + 2fb3c: dec00204 addi sp,sp,8 + 2fb40: f800283a ret + +0002fb44 : + */ + +extern int alt_fs_reg (alt_dev* dev); + +static ALT_INLINE int alt_dev_reg (alt_dev* dev) +{ + 2fb44: defffd04 addi sp,sp,-12 + 2fb48: dfc00215 stw ra,8(sp) + 2fb4c: df000115 stw fp,4(sp) + 2fb50: df000104 addi fp,sp,4 + 2fb54: e13fff15 stw r4,-4(fp) + extern alt_llist alt_dev_list; + + return alt_dev_llist_insert ((alt_dev_llist*) dev, &alt_dev_list); + 2fb58: 014000f4 movhi r5,3 + 2fb5c: 29515904 addi r5,r5,17764 + 2fb60: e13fff17 ldw r4,-4(fp) + 2fb64: 0030ac40 call 30ac4 +} + 2fb68: e037883a mov sp,fp + 2fb6c: dfc00117 ldw ra,4(sp) + 2fb70: df000017 ldw fp,0(sp) + 2fb74: dec00204 addi sp,sp,8 + 2fb78: f800283a ret + +0002fb7c : + * The "base" parameter is ignored and only + * present for backwards-compatibility. + */ + +void alt_irq_init ( const void* base ) +{ + 2fb7c: defffd04 addi sp,sp,-12 + 2fb80: dfc00215 stw ra,8(sp) + 2fb84: df000115 stw fp,4(sp) + 2fb88: df000104 addi fp,sp,4 + 2fb8c: e13fff15 stw r4,-4(fp) + ALTERA_NIOS2_GEN2_IRQ_INIT ( NIOS2_GEN2, nios2_gen2); + 2fb90: 00312e00 call 312e0 + * alt_irq_cpu_enable_interrupts() enables the CPU to start taking interrupts. + */ +static ALT_INLINE void ALT_ALWAYS_INLINE + alt_irq_cpu_enable_interrupts (void) +{ + NIOS2_WRITE_STATUS(NIOS2_STATUS_PIE_MSK + 2fb94: 00800044 movi r2,1 + 2fb98: 1001703a wrctl status,r2 + alt_irq_cpu_enable_interrupts(); +} + 2fb9c: 0001883a nop + 2fba0: e037883a mov sp,fp + 2fba4: dfc00117 ldw ra,4(sp) + 2fba8: df000017 ldw fp,0(sp) + 2fbac: dec00204 addi sp,sp,8 + 2fbb0: f800283a ret + +0002fbb4 : + * Initialize the non-interrupt controller devices. + * Called after alt_irq_init(). + */ + +void alt_sys_init( void ) +{ + 2fbb4: defffe04 addi sp,sp,-8 + 2fbb8: dfc00115 stw ra,4(sp) + 2fbbc: df000015 stw fp,0(sp) + 2fbc0: d839883a mov fp,sp + ALTERA_AVALON_TIMER_INIT ( TIMER, timer); + 2fbc4: 01c0fa04 movi r7,1000 + 2fbc8: 018000c4 movi r6,3 + 2fbcc: 000b883a mov r5,zero + 2fbd0: 01000134 movhi r4,4 + 2fbd4: 21040004 addi r4,r4,4096 + 2fbd8: 00307080 call 30708 + ALTERA_AVALON_JTAG_UART_INIT ( JTAG_UART, jtag_uart); + 2fbdc: 01800084 movi r6,2 + 2fbe0: 000b883a mov r5,zero + 2fbe4: 010000f4 movhi r4,3 + 2fbe8: 210d4004 addi r4,r4,13568 + 2fbec: 002fd7c0 call 2fd7c + 2fbf0: 010000f4 movhi r4,3 + 2fbf4: 210d3604 addi r4,r4,13528 + 2fbf8: 002fb440 call 2fb44 + ALTERA_AVALON_SYSID_QSYS_INIT ( SYSID_QSYS, sysid_qsys); + 2fbfc: 0001883a nop +} + 2fc00: 0001883a nop + 2fc04: e037883a mov sp,fp + 2fc08: dfc00117 ldw ra,4(sp) + 2fc0c: df000017 ldw fp,0(sp) + 2fc10: dec00204 addi sp,sp,8 + 2fc14: f800283a ret + +0002fc18 : + * + */ + +int +altera_avalon_jtag_uart_read_fd(alt_fd* fd, char* buffer, int space) +{ + 2fc18: defffa04 addi sp,sp,-24 + 2fc1c: dfc00515 stw ra,20(sp) + 2fc20: df000415 stw fp,16(sp) + 2fc24: df000404 addi fp,sp,16 + 2fc28: e13ffd15 stw r4,-12(fp) + 2fc2c: e17ffe15 stw r5,-8(fp) + 2fc30: e1bfff15 stw r6,-4(fp) + altera_avalon_jtag_uart_dev* dev = (altera_avalon_jtag_uart_dev*) fd->dev; + 2fc34: e0bffd17 ldw r2,-12(fp) + 2fc38: 10800017 ldw r2,0(r2) + 2fc3c: e0bffc15 stw r2,-16(fp) + + return altera_avalon_jtag_uart_read(&dev->state, buffer, space, + 2fc40: e0bffc17 ldw r2,-16(fp) + 2fc44: 10c00a04 addi r3,r2,40 + 2fc48: e0bffd17 ldw r2,-12(fp) + 2fc4c: 10800217 ldw r2,8(r2) + 2fc50: 100f883a mov r7,r2 + 2fc54: e1bfff17 ldw r6,-4(fp) + 2fc58: e17ffe17 ldw r5,-8(fp) + 2fc5c: 1809883a mov r4,r3 + 2fc60: 00302500 call 30250 + fd->fd_flags); +} + 2fc64: e037883a mov sp,fp + 2fc68: dfc00117 ldw ra,4(sp) + 2fc6c: df000017 ldw fp,0(sp) + 2fc70: dec00204 addi sp,sp,8 + 2fc74: f800283a ret + +0002fc78 : + +int +altera_avalon_jtag_uart_write_fd(alt_fd* fd, const char* buffer, int space) +{ + 2fc78: defffa04 addi sp,sp,-24 + 2fc7c: dfc00515 stw ra,20(sp) + 2fc80: df000415 stw fp,16(sp) + 2fc84: df000404 addi fp,sp,16 + 2fc88: e13ffd15 stw r4,-12(fp) + 2fc8c: e17ffe15 stw r5,-8(fp) + 2fc90: e1bfff15 stw r6,-4(fp) + altera_avalon_jtag_uart_dev* dev = (altera_avalon_jtag_uart_dev*) fd->dev; + 2fc94: e0bffd17 ldw r2,-12(fp) + 2fc98: 10800017 ldw r2,0(r2) + 2fc9c: e0bffc15 stw r2,-16(fp) + + return altera_avalon_jtag_uart_write(&dev->state, buffer, space, + 2fca0: e0bffc17 ldw r2,-16(fp) + 2fca4: 10c00a04 addi r3,r2,40 + 2fca8: e0bffd17 ldw r2,-12(fp) + 2fcac: 10800217 ldw r2,8(r2) + 2fcb0: 100f883a mov r7,r2 + 2fcb4: e1bfff17 ldw r6,-4(fp) + 2fcb8: e17ffe17 ldw r5,-8(fp) + 2fcbc: 1809883a mov r4,r3 + 2fcc0: 003046c0 call 3046c + fd->fd_flags); +} + 2fcc4: e037883a mov sp,fp + 2fcc8: dfc00117 ldw ra,4(sp) + 2fccc: df000017 ldw fp,0(sp) + 2fcd0: dec00204 addi sp,sp,8 + 2fcd4: f800283a ret + +0002fcd8 : + +#ifndef ALTERA_AVALON_JTAG_UART_SMALL + +int +altera_avalon_jtag_uart_close_fd(alt_fd* fd) +{ + 2fcd8: defffc04 addi sp,sp,-16 + 2fcdc: dfc00315 stw ra,12(sp) + 2fce0: df000215 stw fp,8(sp) + 2fce4: df000204 addi fp,sp,8 + 2fce8: e13fff15 stw r4,-4(fp) + altera_avalon_jtag_uart_dev* dev = (altera_avalon_jtag_uart_dev*) fd->dev; + 2fcec: e0bfff17 ldw r2,-4(fp) + 2fcf0: 10800017 ldw r2,0(r2) + 2fcf4: e0bffe15 stw r2,-8(fp) + + return altera_avalon_jtag_uart_close(&dev->state, fd->fd_flags); + 2fcf8: e0bffe17 ldw r2,-8(fp) + 2fcfc: 10c00a04 addi r3,r2,40 + 2fd00: e0bfff17 ldw r2,-4(fp) + 2fd04: 10800217 ldw r2,8(r2) + 2fd08: 100b883a mov r5,r2 + 2fd0c: 1809883a mov r4,r3 + 2fd10: 00300f80 call 300f8 +} + 2fd14: e037883a mov sp,fp + 2fd18: dfc00117 ldw ra,4(sp) + 2fd1c: df000017 ldw fp,0(sp) + 2fd20: dec00204 addi sp,sp,8 + 2fd24: f800283a ret + +0002fd28 : + +int +altera_avalon_jtag_uart_ioctl_fd(alt_fd* fd, int req, void* arg) +{ + 2fd28: defffa04 addi sp,sp,-24 + 2fd2c: dfc00515 stw ra,20(sp) + 2fd30: df000415 stw fp,16(sp) + 2fd34: df000404 addi fp,sp,16 + 2fd38: e13ffd15 stw r4,-12(fp) + 2fd3c: e17ffe15 stw r5,-8(fp) + 2fd40: e1bfff15 stw r6,-4(fp) + altera_avalon_jtag_uart_dev* dev = (altera_avalon_jtag_uart_dev*) fd->dev; + 2fd44: e0bffd17 ldw r2,-12(fp) + 2fd48: 10800017 ldw r2,0(r2) + 2fd4c: e0bffc15 stw r2,-16(fp) + + return altera_avalon_jtag_uart_ioctl(&dev->state, req, arg); + 2fd50: e0bffc17 ldw r2,-16(fp) + 2fd54: 10800a04 addi r2,r2,40 + 2fd58: e1bfff17 ldw r6,-4(fp) + 2fd5c: e17ffe17 ldw r5,-8(fp) + 2fd60: 1009883a mov r4,r2 + 2fd64: 00301600 call 30160 +} + 2fd68: e037883a mov sp,fp + 2fd6c: dfc00117 ldw ra,4(sp) + 2fd70: df000017 ldw fp,0(sp) + 2fd74: dec00204 addi sp,sp,8 + 2fd78: f800283a ret + +0002fd7c : + * Return 1 on sucessful IRQ register and 0 on failure. + */ + +void altera_avalon_jtag_uart_init(altera_avalon_jtag_uart_state* sp, + int irq_controller_id, int irq) +{ + 2fd7c: defffa04 addi sp,sp,-24 + 2fd80: dfc00515 stw ra,20(sp) + 2fd84: df000415 stw fp,16(sp) + 2fd88: df000404 addi fp,sp,16 + 2fd8c: e13ffd15 stw r4,-12(fp) + 2fd90: e17ffe15 stw r5,-8(fp) + 2fd94: e1bfff15 stw r6,-4(fp) + ALT_FLAG_CREATE(&sp->events, 0); + ALT_SEM_CREATE(&sp->read_lock, 1); + ALT_SEM_CREATE(&sp->write_lock, 1); + + /* enable read interrupts at the device */ + sp->irq_enable = ALTERA_AVALON_JTAG_UART_CONTROL_RE_MSK; + 2fd98: e0bffd17 ldw r2,-12(fp) + 2fd9c: 00c00044 movi r3,1 + 2fda0: 10c00815 stw r3,32(r2) + + IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base, sp->irq_enable); + 2fda4: e0bffd17 ldw r2,-12(fp) + 2fda8: 10800017 ldw r2,0(r2) + 2fdac: 10800104 addi r2,r2,4 + 2fdb0: 1007883a mov r3,r2 + 2fdb4: e0bffd17 ldw r2,-12(fp) + 2fdb8: 10800817 ldw r2,32(r2) + 2fdbc: 18800035 stwio r2,0(r3) + + /* register the interrupt handler */ +#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT + alt_ic_isr_register(irq_controller_id, irq, altera_avalon_jtag_uart_irq, + 2fdc0: e0bffe17 ldw r2,-8(fp) + 2fdc4: e0ffff17 ldw r3,-4(fp) + 2fdc8: d8000015 stw zero,0(sp) + 2fdcc: e1fffd17 ldw r7,-12(fp) + 2fdd0: 018000f4 movhi r6,3 + 2fdd4: 31bf9104 addi r6,r6,-444 + 2fdd8: 180b883a mov r5,r3 + 2fddc: 1009883a mov r4,r2 + 2fde0: 0030c5c0 call 30c5c +#else + alt_irq_register(irq, sp, altera_avalon_jtag_uart_irq); +#endif + + /* Register an alarm to go off every second to check for presence of host */ + sp->host_inactive = 0; + 2fde4: e0bffd17 ldw r2,-12(fp) + 2fde8: 10000915 stw zero,36(r2) + + if (alt_alarm_start(&sp->alarm, alt_ticks_per_second(), + 2fdec: e0bffd17 ldw r2,-12(fp) + 2fdf0: 10c00204 addi r3,r2,8 + * Obtain the system clock rate in ticks/s. + */ + +static ALT_INLINE alt_u32 ALT_ALWAYS_INLINE alt_ticks_per_second (void) +{ + return _alt_tick_rate; + 2fdf4: 008000f4 movhi r2,3 + 2fdf8: 109a1304 addi r2,r2,26700 + 2fdfc: 10800017 ldw r2,0(r2) + 2fe00: e1fffd17 ldw r7,-12(fp) + 2fe04: 018000f4 movhi r6,3 + 2fe08: 31801404 addi r6,r6,80 + 2fe0c: 100b883a mov r5,r2 + 2fe10: 1809883a mov r4,r3 + 2fe14: 00307940 call 30794 + 2fe18: 1000040e bge r2,zero,2fe2c + &altera_avalon_jtag_uart_timeout, sp) < 0) + { + /* If we can't set the alarm then record "don't know if host present" + * and behave as though the host is present. + */ + sp->timeout = INT_MAX; + 2fe1c: e0fffd17 ldw r3,-12(fp) + 2fe20: 00a00034 movhi r2,32768 + 2fe24: 10bfffc4 addi r2,r2,-1 + 2fe28: 18800115 stw r2,4(r3) + } + + /* ALT_LOG - see altera_hal/HAL/inc/sys/alt_log_printf.h */ + ALT_LOG_JTAG_UART_ALARM_REGISTER(sp, sp->base); +} + 2fe2c: 0001883a nop + 2fe30: e037883a mov sp,fp + 2fe34: dfc00117 ldw ra,4(sp) + 2fe38: df000017 ldw fp,0(sp) + 2fe3c: dec00204 addi sp,sp,8 + 2fe40: f800283a ret + +0002fe44 : +#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT +static void altera_avalon_jtag_uart_irq(void* context) +#else +static void altera_avalon_jtag_uart_irq(void* context, alt_u32 id) +#endif +{ + 2fe44: defff804 addi sp,sp,-32 + 2fe48: df000715 stw fp,28(sp) + 2fe4c: df000704 addi fp,sp,28 + 2fe50: e13fff15 stw r4,-4(fp) + altera_avalon_jtag_uart_state* sp = (altera_avalon_jtag_uart_state*) context; + 2fe54: e0bfff17 ldw r2,-4(fp) + 2fe58: e0bffb15 stw r2,-20(fp) + unsigned int base = sp->base; + 2fe5c: e0bffb17 ldw r2,-20(fp) + 2fe60: 10800017 ldw r2,0(r2) + 2fe64: e0bffc15 stw r2,-16(fp) + /* ALT_LOG - see altera_hal/HAL/inc/sys/alt_log_printf.h */ + ALT_LOG_JTAG_UART_ISR_FUNCTION(base, sp); + + for ( ; ; ) + { + unsigned int control = IORD_ALTERA_AVALON_JTAG_UART_CONTROL(base); + 2fe68: e0bffc17 ldw r2,-16(fp) + 2fe6c: 10800104 addi r2,r2,4 + 2fe70: 10800037 ldwio r2,0(r2) + 2fe74: e0bffd15 stw r2,-12(fp) + + /* Return once nothing more to do */ + if ((control & (ALTERA_AVALON_JTAG_UART_CONTROL_RI_MSK | ALTERA_AVALON_JTAG_UART_CONTROL_WI_MSK)) == 0) + 2fe78: e0bffd17 ldw r2,-12(fp) + 2fe7c: 1080c00c andi r2,r2,768 + 2fe80: 10006d26 beq r2,zero,30038 + break; + + if (control & ALTERA_AVALON_JTAG_UART_CONTROL_RI_MSK) + 2fe84: e0bffd17 ldw r2,-12(fp) + 2fe88: 1080400c andi r2,r2,256 + 2fe8c: 10003526 beq r2,zero,2ff64 + { + /* process a read irq. Start by assuming that there is data in the + * receive FIFO (otherwise why would we have been interrupted?) + */ + unsigned int data = 1 << ALTERA_AVALON_JTAG_UART_DATA_RAVAIL_OFST; + 2fe90: 00800074 movhi r2,1 + 2fe94: e0bff915 stw r2,-28(fp) + for ( ; ; ) + { + /* Check whether there is space in the buffer. If not then we must not + * read any characters from the buffer as they will be lost. + */ + unsigned int next = (sp->rx_in + 1) % ALTERA_AVALON_JTAG_UART_BUF_LEN; + 2fe98: e0bffb17 ldw r2,-20(fp) + 2fe9c: 10800a17 ldw r2,40(r2) + 2fea0: 10800044 addi r2,r2,1 + 2fea4: 1081ffcc andi r2,r2,2047 + 2fea8: e0bffe15 stw r2,-8(fp) + if (next == sp->rx_out) + 2feac: e0bffb17 ldw r2,-20(fp) + 2feb0: 10c00b17 ldw r3,44(r2) + 2feb4: e0bffe17 ldw r2,-8(fp) + 2feb8: 18801526 beq r3,r2,2ff10 + break; + + /* Try to remove a character from the FIFO and find out whether there + * are any more characters remaining. + */ + data = IORD_ALTERA_AVALON_JTAG_UART_DATA(base); + 2febc: e0bffc17 ldw r2,-16(fp) + 2fec0: 10800037 ldwio r2,0(r2) + 2fec4: e0bff915 stw r2,-28(fp) + + if ((data & ALTERA_AVALON_JTAG_UART_DATA_RVALID_MSK) == 0) + 2fec8: e0bff917 ldw r2,-28(fp) + 2fecc: 10a0000c andi r2,r2,32768 + 2fed0: 10001126 beq r2,zero,2ff18 + break; + + sp->rx_buf[sp->rx_in] = (data & ALTERA_AVALON_JTAG_UART_DATA_DATA_MSK) >> ALTERA_AVALON_JTAG_UART_DATA_DATA_OFST; + 2fed4: e0bffb17 ldw r2,-20(fp) + 2fed8: 10800a17 ldw r2,40(r2) + 2fedc: e0fff917 ldw r3,-28(fp) + 2fee0: 1809883a mov r4,r3 + 2fee4: e0fffb17 ldw r3,-20(fp) + 2fee8: 1885883a add r2,r3,r2 + 2feec: 10800e04 addi r2,r2,56 + 2fef0: 11000005 stb r4,0(r2) + sp->rx_in = (sp->rx_in + 1) % ALTERA_AVALON_JTAG_UART_BUF_LEN; + 2fef4: e0bffb17 ldw r2,-20(fp) + 2fef8: 10800a17 ldw r2,40(r2) + 2fefc: 10800044 addi r2,r2,1 + 2ff00: 10c1ffcc andi r3,r2,2047 + 2ff04: e0bffb17 ldw r2,-20(fp) + 2ff08: 10c00a15 stw r3,40(r2) + + /* Post an event to notify jtag_uart_read that a character has been read */ + ALT_FLAG_POST (sp->events, ALT_JTAG_UART_READ_RDY, OS_FLAG_SET); + } + 2ff0c: 003fe206 br 2fe98 <_gp+0xffff3960> + /* Check whether there is space in the buffer. If not then we must not + * read any characters from the buffer as they will be lost. + */ + unsigned int next = (sp->rx_in + 1) % ALTERA_AVALON_JTAG_UART_BUF_LEN; + if (next == sp->rx_out) + break; + 2ff10: 0001883a nop + 2ff14: 00000106 br 2ff1c + * are any more characters remaining. + */ + data = IORD_ALTERA_AVALON_JTAG_UART_DATA(base); + + if ((data & ALTERA_AVALON_JTAG_UART_DATA_RVALID_MSK) == 0) + break; + 2ff18: 0001883a nop + + /* Post an event to notify jtag_uart_read that a character has been read */ + ALT_FLAG_POST (sp->events, ALT_JTAG_UART_READ_RDY, OS_FLAG_SET); + } + + if (data & ALTERA_AVALON_JTAG_UART_DATA_RAVAIL_MSK) + 2ff1c: e0bff917 ldw r2,-28(fp) + 2ff20: 10bfffec andhi r2,r2,65535 + 2ff24: 10000f26 beq r2,zero,2ff64 + { + /* If there is still data available here then the buffer is full + * so turn off receive interrupts until some space becomes available. + */ + sp->irq_enable &= ~ALTERA_AVALON_JTAG_UART_CONTROL_RE_MSK; + 2ff28: e0bffb17 ldw r2,-20(fp) + 2ff2c: 10c00817 ldw r3,32(r2) + 2ff30: 00bfff84 movi r2,-2 + 2ff34: 1886703a and r3,r3,r2 + 2ff38: e0bffb17 ldw r2,-20(fp) + 2ff3c: 10c00815 stw r3,32(r2) + IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(base, sp->irq_enable); + 2ff40: e0bffc17 ldw r2,-16(fp) + 2ff44: 10800104 addi r2,r2,4 + 2ff48: 1007883a mov r3,r2 + 2ff4c: e0bffb17 ldw r2,-20(fp) + 2ff50: 10800817 ldw r2,32(r2) + 2ff54: 18800035 stwio r2,0(r3) + + /* Dummy read to ensure IRQ is cleared prior to ISR completion */ + IORD_ALTERA_AVALON_JTAG_UART_CONTROL(base); + 2ff58: e0bffc17 ldw r2,-16(fp) + 2ff5c: 10800104 addi r2,r2,4 + 2ff60: 10800037 ldwio r2,0(r2) + } + } + + if (control & ALTERA_AVALON_JTAG_UART_CONTROL_WI_MSK) + 2ff64: e0bffd17 ldw r2,-12(fp) + 2ff68: 1080800c andi r2,r2,512 + 2ff6c: 103fbe26 beq r2,zero,2fe68 <_gp+0xffff3930> + { + /* process a write irq */ + unsigned int space = (control & ALTERA_AVALON_JTAG_UART_CONTROL_WSPACE_MSK) >> ALTERA_AVALON_JTAG_UART_CONTROL_WSPACE_OFST; + 2ff70: e0bffd17 ldw r2,-12(fp) + 2ff74: 1004d43a srli r2,r2,16 + 2ff78: e0bffa15 stw r2,-24(fp) + + while (space > 0 && sp->tx_out != sp->tx_in) + 2ff7c: 00001406 br 2ffd0 + { + IOWR_ALTERA_AVALON_JTAG_UART_DATA(base, sp->tx_buf[sp->tx_out]); + 2ff80: e0bffc17 ldw r2,-16(fp) + 2ff84: e0fffb17 ldw r3,-20(fp) + 2ff88: 18c00d17 ldw r3,52(r3) + 2ff8c: e13ffb17 ldw r4,-20(fp) + 2ff90: 20c7883a add r3,r4,r3 + 2ff94: 18c20e04 addi r3,r3,2104 + 2ff98: 18c00003 ldbu r3,0(r3) + 2ff9c: 18c03fcc andi r3,r3,255 + 2ffa0: 18c0201c xori r3,r3,128 + 2ffa4: 18ffe004 addi r3,r3,-128 + 2ffa8: 10c00035 stwio r3,0(r2) + + sp->tx_out = (sp->tx_out + 1) % ALTERA_AVALON_JTAG_UART_BUF_LEN; + 2ffac: e0bffb17 ldw r2,-20(fp) + 2ffb0: 10800d17 ldw r2,52(r2) + 2ffb4: 10800044 addi r2,r2,1 + 2ffb8: 10c1ffcc andi r3,r2,2047 + 2ffbc: e0bffb17 ldw r2,-20(fp) + 2ffc0: 10c00d15 stw r3,52(r2) + + /* Post an event to notify jtag_uart_write that a character has been written */ + ALT_FLAG_POST (sp->events, ALT_JTAG_UART_WRITE_RDY, OS_FLAG_SET); + + space--; + 2ffc4: e0bffa17 ldw r2,-24(fp) + 2ffc8: 10bfffc4 addi r2,r2,-1 + 2ffcc: e0bffa15 stw r2,-24(fp) + if (control & ALTERA_AVALON_JTAG_UART_CONTROL_WI_MSK) + { + /* process a write irq */ + unsigned int space = (control & ALTERA_AVALON_JTAG_UART_CONTROL_WSPACE_MSK) >> ALTERA_AVALON_JTAG_UART_CONTROL_WSPACE_OFST; + + while (space > 0 && sp->tx_out != sp->tx_in) + 2ffd0: e0bffa17 ldw r2,-24(fp) + 2ffd4: 10000526 beq r2,zero,2ffec + 2ffd8: e0bffb17 ldw r2,-20(fp) + 2ffdc: 10c00d17 ldw r3,52(r2) + 2ffe0: e0bffb17 ldw r2,-20(fp) + 2ffe4: 10800c17 ldw r2,48(r2) + 2ffe8: 18bfe51e bne r3,r2,2ff80 <_gp+0xffff3a48> + ALT_FLAG_POST (sp->events, ALT_JTAG_UART_WRITE_RDY, OS_FLAG_SET); + + space--; + } + + if (space > 0) + 2ffec: e0bffa17 ldw r2,-24(fp) + 2fff0: 103f9d26 beq r2,zero,2fe68 <_gp+0xffff3930> + { + /* If we don't have any more data available then turn off the TX interrupt */ + sp->irq_enable &= ~ALTERA_AVALON_JTAG_UART_CONTROL_WE_MSK; + 2fff4: e0bffb17 ldw r2,-20(fp) + 2fff8: 10c00817 ldw r3,32(r2) + 2fffc: 00bfff44 movi r2,-3 + 30000: 1886703a and r3,r3,r2 + 30004: e0bffb17 ldw r2,-20(fp) + 30008: 10c00815 stw r3,32(r2) + IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base, sp->irq_enable); + 3000c: e0bffb17 ldw r2,-20(fp) + 30010: 10800017 ldw r2,0(r2) + 30014: 10800104 addi r2,r2,4 + 30018: 1007883a mov r3,r2 + 3001c: e0bffb17 ldw r2,-20(fp) + 30020: 10800817 ldw r2,32(r2) + 30024: 18800035 stwio r2,0(r3) + + /* Dummy read to ensure IRQ is cleared prior to ISR completion */ + IORD_ALTERA_AVALON_JTAG_UART_CONTROL(base); + 30028: e0bffc17 ldw r2,-16(fp) + 3002c: 10800104 addi r2,r2,4 + 30030: 10800037 ldwio r2,0(r2) + } + } + } + 30034: 003f8c06 br 2fe68 <_gp+0xffff3930> + { + unsigned int control = IORD_ALTERA_AVALON_JTAG_UART_CONTROL(base); + + /* Return once nothing more to do */ + if ((control & (ALTERA_AVALON_JTAG_UART_CONTROL_RI_MSK | ALTERA_AVALON_JTAG_UART_CONTROL_WI_MSK)) == 0) + break; + 30038: 0001883a nop + /* Dummy read to ensure IRQ is cleared prior to ISR completion */ + IORD_ALTERA_AVALON_JTAG_UART_CONTROL(base); + } + } + } +} + 3003c: 0001883a nop + 30040: e037883a mov sp,fp + 30044: df000017 ldw fp,0(sp) + 30048: dec00104 addi sp,sp,4 + 3004c: f800283a ret + +00030050 : + * Timeout routine is called every second + */ + +static alt_u32 +altera_avalon_jtag_uart_timeout(void* context) +{ + 30050: defff804 addi sp,sp,-32 + 30054: df000715 stw fp,28(sp) + 30058: df000704 addi fp,sp,28 + 3005c: e13ffb15 stw r4,-20(fp) + altera_avalon_jtag_uart_state* sp = (altera_avalon_jtag_uart_state *) context; + 30060: e0bffb17 ldw r2,-20(fp) + 30064: e0bff915 stw r2,-28(fp) + + unsigned int control = IORD_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base); + 30068: e0bff917 ldw r2,-28(fp) + 3006c: 10800017 ldw r2,0(r2) + 30070: 10800104 addi r2,r2,4 + 30074: 10800037 ldwio r2,0(r2) + 30078: e0bffa15 stw r2,-24(fp) + + if (control & ALTERA_AVALON_JTAG_UART_CONTROL_AC_MSK) + 3007c: e0bffa17 ldw r2,-24(fp) + 30080: 1081000c andi r2,r2,1024 + 30084: 10000b26 beq r2,zero,300b4 + { + IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base, sp->irq_enable | ALTERA_AVALON_JTAG_UART_CONTROL_AC_MSK); + 30088: e0bff917 ldw r2,-28(fp) + 3008c: 10800017 ldw r2,0(r2) + 30090: 10800104 addi r2,r2,4 + 30094: 1007883a mov r3,r2 + 30098: e0bff917 ldw r2,-28(fp) + 3009c: 10800817 ldw r2,32(r2) + 300a0: 10810014 ori r2,r2,1024 + 300a4: 18800035 stwio r2,0(r3) + sp->host_inactive = 0; + 300a8: e0bff917 ldw r2,-28(fp) + 300ac: 10000915 stw zero,36(r2) + 300b0: 00000a06 br 300dc + } + else if (sp->host_inactive < INT_MAX - 2) { + 300b4: e0bff917 ldw r2,-28(fp) + 300b8: 10c00917 ldw r3,36(r2) + 300bc: 00a00034 movhi r2,32768 + 300c0: 10bfff04 addi r2,r2,-4 + 300c4: 10c00536 bltu r2,r3,300dc + sp->host_inactive++; + 300c8: e0bff917 ldw r2,-28(fp) + 300cc: 10800917 ldw r2,36(r2) + 300d0: 10c00044 addi r3,r2,1 + 300d4: e0bff917 ldw r2,-28(fp) + 300d8: 10c00915 stw r3,36(r2) + 300dc: 008000f4 movhi r2,3 + 300e0: 109a1304 addi r2,r2,26700 + 300e4: 10800017 ldw r2,0(r2) + ALT_FLAG_POST (sp->events, ALT_JTAG_UART_TIMEOUT, OS_FLAG_SET); + } + } + + return alt_ticks_per_second(); +} + 300e8: e037883a mov sp,fp + 300ec: df000017 ldw fp,0(sp) + 300f0: dec00104 addi sp,sp,4 + 300f4: f800283a ret + +000300f8 : + * The close routine is not implemented for the small driver; instead it will + * map to null. This is because the small driver simply waits while characters + * are transmitted; there is no interrupt-serviced buffer to empty + */ +int altera_avalon_jtag_uart_close(altera_avalon_jtag_uart_state* sp, int flags) +{ + 300f8: defffd04 addi sp,sp,-12 + 300fc: df000215 stw fp,8(sp) + 30100: df000204 addi fp,sp,8 + 30104: e13ffe15 stw r4,-8(fp) + 30108: e17fff15 stw r5,-4(fp) + /* + * Wait for all transmit data to be emptied by the JTAG UART ISR, or + * for a host-inactivity timeout, in which case transmit data will be lost + */ + while ( (sp->tx_out != sp->tx_in) && (sp->host_inactive < sp->timeout) ) { + 3010c: 00000506 br 30124 + if (flags & O_NONBLOCK) { + 30110: e0bfff17 ldw r2,-4(fp) + 30114: 1090000c andi r2,r2,16384 + 30118: 10000226 beq r2,zero,30124 + return -EWOULDBLOCK; + 3011c: 00bffd44 movi r2,-11 + 30120: 00000b06 br 30150 +{ + /* + * Wait for all transmit data to be emptied by the JTAG UART ISR, or + * for a host-inactivity timeout, in which case transmit data will be lost + */ + while ( (sp->tx_out != sp->tx_in) && (sp->host_inactive < sp->timeout) ) { + 30124: e0bffe17 ldw r2,-8(fp) + 30128: 10c00d17 ldw r3,52(r2) + 3012c: e0bffe17 ldw r2,-8(fp) + 30130: 10800c17 ldw r2,48(r2) + 30134: 18800526 beq r3,r2,3014c + 30138: e0bffe17 ldw r2,-8(fp) + 3013c: 10c00917 ldw r3,36(r2) + 30140: e0bffe17 ldw r2,-8(fp) + 30144: 10800117 ldw r2,4(r2) + 30148: 18bff136 bltu r3,r2,30110 <_gp+0xffff3bd8> + if (flags & O_NONBLOCK) { + return -EWOULDBLOCK; + } + } + + return 0; + 3014c: 0005883a mov r2,zero +} + 30150: e037883a mov sp,fp + 30154: df000017 ldw fp,0(sp) + 30158: dec00104 addi sp,sp,4 + 3015c: f800283a ret + +00030160 : +/* ----------------------------------------------------------- */ + +int +altera_avalon_jtag_uart_ioctl(altera_avalon_jtag_uart_state* sp, int req, + void* arg) +{ + 30160: defffa04 addi sp,sp,-24 + 30164: df000515 stw fp,20(sp) + 30168: df000504 addi fp,sp,20 + 3016c: e13ffd15 stw r4,-12(fp) + 30170: e17ffe15 stw r5,-8(fp) + 30174: e1bfff15 stw r6,-4(fp) + int rc = -ENOTTY; + 30178: 00bff9c4 movi r2,-25 + 3017c: e0bffb15 stw r2,-20(fp) + + switch (req) + 30180: e0bffe17 ldw r2,-8(fp) + 30184: 10da8060 cmpeqi r3,r2,27137 + 30188: 1800031e bne r3,zero,30198 + 3018c: 109a80a0 cmpeqi r2,r2,27138 + 30190: 1000181e bne r2,zero,301f4 + rc = 0; + } + break; + + default: + break; + 30194: 00002906 br 3023c + + switch (req) + { + case TIOCSTIMEOUT: + /* Set the time to wait until assuming host is not connected */ + if (sp->timeout != INT_MAX) + 30198: e0bffd17 ldw r2,-12(fp) + 3019c: 10c00117 ldw r3,4(r2) + 301a0: 00a00034 movhi r2,32768 + 301a4: 10bfffc4 addi r2,r2,-1 + 301a8: 18802126 beq r3,r2,30230 + { + int timeout = *((int *)arg); + 301ac: e0bfff17 ldw r2,-4(fp) + 301b0: 10800017 ldw r2,0(r2) + 301b4: e0bffc15 stw r2,-16(fp) + sp->timeout = (timeout >= 2 && timeout < INT_MAX) ? timeout : INT_MAX - 1; + 301b8: e0bffc17 ldw r2,-16(fp) + 301bc: 10800090 cmplti r2,r2,2 + 301c0: 1000061e bne r2,zero,301dc + 301c4: e0fffc17 ldw r3,-16(fp) + 301c8: 00a00034 movhi r2,32768 + 301cc: 10bfffc4 addi r2,r2,-1 + 301d0: 18800226 beq r3,r2,301dc + 301d4: e0bffc17 ldw r2,-16(fp) + 301d8: 00000206 br 301e4 + 301dc: 00a00034 movhi r2,32768 + 301e0: 10bfff84 addi r2,r2,-2 + 301e4: e0fffd17 ldw r3,-12(fp) + 301e8: 18800115 stw r2,4(r3) + rc = 0; + 301ec: e03ffb15 stw zero,-20(fp) + } + break; + 301f0: 00000f06 br 30230 + + case TIOCGCONNECTED: + /* Find out whether host is connected */ + if (sp->timeout != INT_MAX) + 301f4: e0bffd17 ldw r2,-12(fp) + 301f8: 10c00117 ldw r3,4(r2) + 301fc: 00a00034 movhi r2,32768 + 30200: 10bfffc4 addi r2,r2,-1 + 30204: 18800c26 beq r3,r2,30238 + { + *((int *)arg) = (sp->host_inactive < sp->timeout) ? 1 : 0; + 30208: e0bffd17 ldw r2,-12(fp) + 3020c: 10c00917 ldw r3,36(r2) + 30210: e0bffd17 ldw r2,-12(fp) + 30214: 10800117 ldw r2,4(r2) + 30218: 1885803a cmpltu r2,r3,r2 + 3021c: 10c03fcc andi r3,r2,255 + 30220: e0bfff17 ldw r2,-4(fp) + 30224: 10c00015 stw r3,0(r2) + rc = 0; + 30228: e03ffb15 stw zero,-20(fp) + } + break; + 3022c: 00000206 br 30238 + { + int timeout = *((int *)arg); + sp->timeout = (timeout >= 2 && timeout < INT_MAX) ? timeout : INT_MAX - 1; + rc = 0; + } + break; + 30230: 0001883a nop + 30234: 00000106 br 3023c + if (sp->timeout != INT_MAX) + { + *((int *)arg) = (sp->host_inactive < sp->timeout) ? 1 : 0; + rc = 0; + } + break; + 30238: 0001883a nop + + default: + break; + } + + return rc; + 3023c: e0bffb17 ldw r2,-20(fp) +} + 30240: e037883a mov sp,fp + 30244: df000017 ldw fp,0(sp) + 30248: dec00104 addi sp,sp,4 + 3024c: f800283a ret + +00030250 : +/* ----------------------------------------------------------- */ + +int +altera_avalon_jtag_uart_read(altera_avalon_jtag_uart_state* sp, + char * buffer, int space, int flags) +{ + 30250: defff304 addi sp,sp,-52 + 30254: dfc00c15 stw ra,48(sp) + 30258: df000b15 stw fp,44(sp) + 3025c: df000b04 addi fp,sp,44 + 30260: e13ffc15 stw r4,-16(fp) + 30264: e17ffd15 stw r5,-12(fp) + 30268: e1bffe15 stw r6,-8(fp) + 3026c: e1ffff15 stw r7,-4(fp) + char * ptr = buffer; + 30270: e0bffd17 ldw r2,-12(fp) + 30274: e0bff515 stw r2,-44(fp) + * When running in a multi threaded environment, obtain the "read_lock" + * semaphore. This ensures that reading from the device is thread-safe. + */ + ALT_SEM_PEND (sp->read_lock, 0); + + while (space > 0) + 30278: 00004706 br 30398 + unsigned int in, out; + + /* Read as much data as possible */ + do + { + in = sp->rx_in; + 3027c: e0bffc17 ldw r2,-16(fp) + 30280: 10800a17 ldw r2,40(r2) + 30284: e0bff715 stw r2,-36(fp) + out = sp->rx_out; + 30288: e0bffc17 ldw r2,-16(fp) + 3028c: 10800b17 ldw r2,44(r2) + 30290: e0bff815 stw r2,-32(fp) + + if (in >= out) + 30294: e0fff717 ldw r3,-36(fp) + 30298: e0bff817 ldw r2,-32(fp) + 3029c: 18800536 bltu r3,r2,302b4 + n = in - out; + 302a0: e0fff717 ldw r3,-36(fp) + 302a4: e0bff817 ldw r2,-32(fp) + 302a8: 1885c83a sub r2,r3,r2 + 302ac: e0bff615 stw r2,-40(fp) + 302b0: 00000406 br 302c4 + else + n = ALTERA_AVALON_JTAG_UART_BUF_LEN - out; + 302b4: 00c20004 movi r3,2048 + 302b8: e0bff817 ldw r2,-32(fp) + 302bc: 1885c83a sub r2,r3,r2 + 302c0: e0bff615 stw r2,-40(fp) + + if (n == 0) + 302c4: e0bff617 ldw r2,-40(fp) + 302c8: 10001e26 beq r2,zero,30344 + break; /* No more data available */ + + if (n > space) + 302cc: e0fffe17 ldw r3,-8(fp) + 302d0: e0bff617 ldw r2,-40(fp) + 302d4: 1880022e bgeu r3,r2,302e0 + n = space; + 302d8: e0bffe17 ldw r2,-8(fp) + 302dc: e0bff615 stw r2,-40(fp) + + memcpy(ptr, sp->rx_buf + out, n); + 302e0: e0bffc17 ldw r2,-16(fp) + 302e4: 10c00e04 addi r3,r2,56 + 302e8: e0bff817 ldw r2,-32(fp) + 302ec: 1885883a add r2,r3,r2 + 302f0: e1bff617 ldw r6,-40(fp) + 302f4: 100b883a mov r5,r2 + 302f8: e13ff517 ldw r4,-44(fp) + 302fc: 00283280 call 28328 + ptr += n; + 30300: e0fff517 ldw r3,-44(fp) + 30304: e0bff617 ldw r2,-40(fp) + 30308: 1885883a add r2,r3,r2 + 3030c: e0bff515 stw r2,-44(fp) + space -= n; + 30310: e0fffe17 ldw r3,-8(fp) + 30314: e0bff617 ldw r2,-40(fp) + 30318: 1885c83a sub r2,r3,r2 + 3031c: e0bffe15 stw r2,-8(fp) + + sp->rx_out = (out + n) % ALTERA_AVALON_JTAG_UART_BUF_LEN; + 30320: e0fff817 ldw r3,-32(fp) + 30324: e0bff617 ldw r2,-40(fp) + 30328: 1885883a add r2,r3,r2 + 3032c: 10c1ffcc andi r3,r2,2047 + 30330: e0bffc17 ldw r2,-16(fp) + 30334: 10c00b15 stw r3,44(r2) + } + while (space > 0); + 30338: e0bffe17 ldw r2,-8(fp) + 3033c: 00bfcf16 blt zero,r2,3027c <_gp+0xffff3d44> + 30340: 00000106 br 30348 + n = in - out; + else + n = ALTERA_AVALON_JTAG_UART_BUF_LEN - out; + + if (n == 0) + break; /* No more data available */ + 30344: 0001883a nop + sp->rx_out = (out + n) % ALTERA_AVALON_JTAG_UART_BUF_LEN; + } + while (space > 0); + + /* If we read any data then return it */ + if (ptr != buffer) + 30348: e0fff517 ldw r3,-44(fp) + 3034c: e0bffd17 ldw r2,-12(fp) + 30350: 1880141e bne r3,r2,303a4 + break; + + /* If in non-blocking mode then return error */ + if (flags & O_NONBLOCK) + 30354: e0bfff17 ldw r2,-4(fp) + 30358: 1090000c andi r2,r2,16384 + 3035c: 1000131e bne r2,zero,303ac + while (in == sp->rx_in && sp->host_inactive < sp->timeout) + ; + } +#else + /* No OS: Always spin */ + while (in == sp->rx_in && sp->host_inactive < sp->timeout) + 30360: 0001883a nop + 30364: e0bffc17 ldw r2,-16(fp) + 30368: 10c00a17 ldw r3,40(r2) + 3036c: e0bff717 ldw r2,-36(fp) + 30370: 1880051e bne r3,r2,30388 + 30374: e0bffc17 ldw r2,-16(fp) + 30378: 10c00917 ldw r3,36(r2) + 3037c: e0bffc17 ldw r2,-16(fp) + 30380: 10800117 ldw r2,4(r2) + 30384: 18bff736 bltu r3,r2,30364 <_gp+0xffff3e2c> + ; +#endif /* __ucosii__ */ + + if (in == sp->rx_in) + 30388: e0bffc17 ldw r2,-16(fp) + 3038c: 10c00a17 ldw r3,40(r2) + 30390: e0bff717 ldw r2,-36(fp) + 30394: 18800726 beq r3,r2,303b4 + * When running in a multi threaded environment, obtain the "read_lock" + * semaphore. This ensures that reading from the device is thread-safe. + */ + ALT_SEM_PEND (sp->read_lock, 0); + + while (space > 0) + 30398: e0bffe17 ldw r2,-8(fp) + 3039c: 00bfb716 blt zero,r2,3027c <_gp+0xffff3d44> + 303a0: 00000506 br 303b8 + } + while (space > 0); + + /* If we read any data then return it */ + if (ptr != buffer) + break; + 303a4: 0001883a nop + 303a8: 00000306 br 303b8 + + /* If in non-blocking mode then return error */ + if (flags & O_NONBLOCK) + break; + 303ac: 0001883a nop + 303b0: 00000106 br 303b8 + while (in == sp->rx_in && sp->host_inactive < sp->timeout) + ; +#endif /* __ucosii__ */ + + if (in == sp->rx_in) + break; + 303b4: 0001883a nop + * semaphore so that other threads can access the buffer. + */ + + ALT_SEM_POST (sp->read_lock); + + if (ptr != buffer) + 303b8: e0fff517 ldw r3,-44(fp) + 303bc: e0bffd17 ldw r2,-12(fp) + 303c0: 18801826 beq r3,r2,30424 +static ALT_INLINE alt_irq_context ALT_ALWAYS_INLINE + alt_irq_disable_all (void) +{ + alt_irq_context context; + + NIOS2_READ_STATUS (context); + 303c4: 0005303a rdctl r2,status + 303c8: e0bffb15 stw r2,-20(fp) + + NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK); + 303cc: e0fffb17 ldw r3,-20(fp) + 303d0: 00bfff84 movi r2,-2 + 303d4: 1884703a and r2,r3,r2 + 303d8: 1001703a wrctl status,r2 + + return context; + 303dc: e0bffb17 ldw r2,-20(fp) + { + /* If we read any data then there is space in the buffer so enable interrupts */ + context = alt_irq_disable_all(); + 303e0: e0bffa15 stw r2,-24(fp) + sp->irq_enable |= ALTERA_AVALON_JTAG_UART_CONTROL_RE_MSK; + 303e4: e0bffc17 ldw r2,-16(fp) + 303e8: 10800817 ldw r2,32(r2) + 303ec: 10c00054 ori r3,r2,1 + 303f0: e0bffc17 ldw r2,-16(fp) + 303f4: 10c00815 stw r3,32(r2) + IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base, sp->irq_enable); + 303f8: e0bffc17 ldw r2,-16(fp) + 303fc: 10800017 ldw r2,0(r2) + 30400: 10800104 addi r2,r2,4 + 30404: 1007883a mov r3,r2 + 30408: e0bffc17 ldw r2,-16(fp) + 3040c: 10800817 ldw r2,32(r2) + 30410: 18800035 stwio r2,0(r3) + 30414: e0bffa17 ldw r2,-24(fp) + 30418: e0bff915 stw r2,-28(fp) + status &= ~NIOS2_STATUS_PIE_MSK; + status |= (context & NIOS2_STATUS_PIE_MSK); + + NIOS2_WRITE_STATUS (status); +#else + NIOS2_WRITE_STATUS (context); + 3041c: e0bff917 ldw r2,-28(fp) + 30420: 1001703a wrctl status,r2 + alt_irq_enable_all(context); + } + + if (ptr != buffer) + 30424: e0fff517 ldw r3,-44(fp) + 30428: e0bffd17 ldw r2,-12(fp) + 3042c: 18800426 beq r3,r2,30440 + return ptr - buffer; + 30430: e0fff517 ldw r3,-44(fp) + 30434: e0bffd17 ldw r2,-12(fp) + 30438: 1885c83a sub r2,r3,r2 + 3043c: 00000606 br 30458 + else if (flags & O_NONBLOCK) + 30440: e0bfff17 ldw r2,-4(fp) + 30444: 1090000c andi r2,r2,16384 + 30448: 10000226 beq r2,zero,30454 + return -EWOULDBLOCK; + 3044c: 00bffd44 movi r2,-11 + 30450: 00000106 br 30458 + else + return -EIO; + 30454: 00bffec4 movi r2,-5 +} + 30458: e037883a mov sp,fp + 3045c: dfc00117 ldw ra,4(sp) + 30460: df000017 ldw fp,0(sp) + 30464: dec00204 addi sp,sp,8 + 30468: f800283a ret + +0003046c : +/* ----------------------------------------------------------- */ + +int +altera_avalon_jtag_uart_write(altera_avalon_jtag_uart_state* sp, + const char * ptr, int count, int flags) +{ + 3046c: defff304 addi sp,sp,-52 + 30470: dfc00c15 stw ra,48(sp) + 30474: df000b15 stw fp,44(sp) + 30478: df000b04 addi fp,sp,44 + 3047c: e13ffc15 stw r4,-16(fp) + 30480: e17ffd15 stw r5,-12(fp) + 30484: e1bffe15 stw r6,-8(fp) + 30488: e1ffff15 stw r7,-4(fp) + /* Remove warning at optimisation level 03 by seting out to 0 */ + unsigned int in, out=0; + 3048c: e03ff515 stw zero,-44(fp) + unsigned int n; + alt_irq_context context; + + const char * start = ptr; + 30490: e0bffd17 ldw r2,-12(fp) + 30494: e0bff715 stw r2,-36(fp) + ALT_SEM_PEND (sp->write_lock, 0); + + do + { + /* Copy as much as we can into the transmit buffer */ + while (count > 0) + 30498: 00003706 br 30578 + { + /* We need a stable value of the out pointer to calculate the space available */ + in = sp->tx_in; + 3049c: e0bffc17 ldw r2,-16(fp) + 304a0: 10800c17 ldw r2,48(r2) + 304a4: e0bff915 stw r2,-28(fp) + out = sp->tx_out; + 304a8: e0bffc17 ldw r2,-16(fp) + 304ac: 10800d17 ldw r2,52(r2) + 304b0: e0bff515 stw r2,-44(fp) + + if (in < out) + 304b4: e0fff917 ldw r3,-28(fp) + 304b8: e0bff517 ldw r2,-44(fp) + 304bc: 1880062e bgeu r3,r2,304d8 + n = out - 1 - in; + 304c0: e0fff517 ldw r3,-44(fp) + 304c4: e0bff917 ldw r2,-28(fp) + 304c8: 1885c83a sub r2,r3,r2 + 304cc: 10bfffc4 addi r2,r2,-1 + 304d0: e0bff615 stw r2,-40(fp) + 304d4: 00000b06 br 30504 + else if (out > 0) + 304d8: e0bff517 ldw r2,-44(fp) + 304dc: 10000526 beq r2,zero,304f4 + n = ALTERA_AVALON_JTAG_UART_BUF_LEN - in; + 304e0: 00c20004 movi r3,2048 + 304e4: e0bff917 ldw r2,-28(fp) + 304e8: 1885c83a sub r2,r3,r2 + 304ec: e0bff615 stw r2,-40(fp) + 304f0: 00000406 br 30504 + else + n = ALTERA_AVALON_JTAG_UART_BUF_LEN - 1 - in; + 304f4: 00c1ffc4 movi r3,2047 + 304f8: e0bff917 ldw r2,-28(fp) + 304fc: 1885c83a sub r2,r3,r2 + 30500: e0bff615 stw r2,-40(fp) + + if (n == 0) + 30504: e0bff617 ldw r2,-40(fp) + 30508: 10001e26 beq r2,zero,30584 + break; + + if (n > count) + 3050c: e0fffe17 ldw r3,-8(fp) + 30510: e0bff617 ldw r2,-40(fp) + 30514: 1880022e bgeu r3,r2,30520 + n = count; + 30518: e0bffe17 ldw r2,-8(fp) + 3051c: e0bff615 stw r2,-40(fp) + + memcpy(sp->tx_buf + in, ptr, n); + 30520: e0bffc17 ldw r2,-16(fp) + 30524: 10c20e04 addi r3,r2,2104 + 30528: e0bff917 ldw r2,-28(fp) + 3052c: 1885883a add r2,r3,r2 + 30530: e1bff617 ldw r6,-40(fp) + 30534: e17ffd17 ldw r5,-12(fp) + 30538: 1009883a mov r4,r2 + 3053c: 00283280 call 28328 + ptr += n; + 30540: e0fffd17 ldw r3,-12(fp) + 30544: e0bff617 ldw r2,-40(fp) + 30548: 1885883a add r2,r3,r2 + 3054c: e0bffd15 stw r2,-12(fp) + count -= n; + 30550: e0fffe17 ldw r3,-8(fp) + 30554: e0bff617 ldw r2,-40(fp) + 30558: 1885c83a sub r2,r3,r2 + 3055c: e0bffe15 stw r2,-8(fp) + + sp->tx_in = (in + n) % ALTERA_AVALON_JTAG_UART_BUF_LEN; + 30560: e0fff917 ldw r3,-28(fp) + 30564: e0bff617 ldw r2,-40(fp) + 30568: 1885883a add r2,r3,r2 + 3056c: 10c1ffcc andi r3,r2,2047 + 30570: e0bffc17 ldw r2,-16(fp) + 30574: 10c00c15 stw r3,48(r2) + ALT_SEM_PEND (sp->write_lock, 0); + + do + { + /* Copy as much as we can into the transmit buffer */ + while (count > 0) + 30578: e0bffe17 ldw r2,-8(fp) + 3057c: 00bfc716 blt zero,r2,3049c <_gp+0xffff3f64> + 30580: 00000106 br 30588 + n = ALTERA_AVALON_JTAG_UART_BUF_LEN - in; + else + n = ALTERA_AVALON_JTAG_UART_BUF_LEN - 1 - in; + + if (n == 0) + break; + 30584: 0001883a nop +static ALT_INLINE alt_irq_context ALT_ALWAYS_INLINE + alt_irq_disable_all (void) +{ + alt_irq_context context; + + NIOS2_READ_STATUS (context); + 30588: 0005303a rdctl r2,status + 3058c: e0bffb15 stw r2,-20(fp) + + NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK); + 30590: e0fffb17 ldw r3,-20(fp) + 30594: 00bfff84 movi r2,-2 + 30598: 1884703a and r2,r3,r2 + 3059c: 1001703a wrctl status,r2 + + return context; + 305a0: e0bffb17 ldw r2,-20(fp) + * to enable interrupts if there is no space left in the FIFO + * + * For now kick the interrupt routine every time to make it transmit + * the data + */ + context = alt_irq_disable_all(); + 305a4: e0bffa15 stw r2,-24(fp) + sp->irq_enable |= ALTERA_AVALON_JTAG_UART_CONTROL_WE_MSK; + 305a8: e0bffc17 ldw r2,-16(fp) + 305ac: 10800817 ldw r2,32(r2) + 305b0: 10c00094 ori r3,r2,2 + 305b4: e0bffc17 ldw r2,-16(fp) + 305b8: 10c00815 stw r3,32(r2) + IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base, sp->irq_enable); + 305bc: e0bffc17 ldw r2,-16(fp) + 305c0: 10800017 ldw r2,0(r2) + 305c4: 10800104 addi r2,r2,4 + 305c8: 1007883a mov r3,r2 + 305cc: e0bffc17 ldw r2,-16(fp) + 305d0: 10800817 ldw r2,32(r2) + 305d4: 18800035 stwio r2,0(r3) + 305d8: e0bffa17 ldw r2,-24(fp) + 305dc: e0bff815 stw r2,-32(fp) + status &= ~NIOS2_STATUS_PIE_MSK; + status |= (context & NIOS2_STATUS_PIE_MSK); + + NIOS2_WRITE_STATUS (status); +#else + NIOS2_WRITE_STATUS (context); + 305e0: e0bff817 ldw r2,-32(fp) + 305e4: 1001703a wrctl status,r2 + /* + * If there is any data left then either return now or block until + * some has been sent + */ + /* consider: test whether there is anything there while doing this and delay for at most 2s. */ + if (count > 0) + 305e8: e0bffe17 ldw r2,-8(fp) + 305ec: 0080100e bge zero,r2,30630 + { + if (flags & O_NONBLOCK) + 305f0: e0bfff17 ldw r2,-4(fp) + 305f4: 1090000c andi r2,r2,16384 + 305f8: 1000101e bne r2,zero,3063c + /* + * No OS present: Always wait for data to be removed from buffer. Once + * the interrupt routine has removed some data then we will be able to + * insert some more. + */ + while (out == sp->tx_out && sp->host_inactive < sp->timeout) + 305fc: 0001883a nop + 30600: e0bffc17 ldw r2,-16(fp) + 30604: 10c00d17 ldw r3,52(r2) + 30608: e0bff517 ldw r2,-44(fp) + 3060c: 1880051e bne r3,r2,30624 + 30610: e0bffc17 ldw r2,-16(fp) + 30614: 10c00917 ldw r3,36(r2) + 30618: e0bffc17 ldw r2,-16(fp) + 3061c: 10800117 ldw r2,4(r2) + 30620: 18bff736 bltu r3,r2,30600 <_gp+0xffff40c8> + ; +#endif /* __ucosii__ */ + + if (sp->host_inactive) + 30624: e0bffc17 ldw r2,-16(fp) + 30628: 10800917 ldw r2,36(r2) + 3062c: 1000051e bne r2,zero,30644 + break; + } + } + while (count > 0); + 30630: e0bffe17 ldw r2,-8(fp) + 30634: 00bfd016 blt zero,r2,30578 <_gp+0xffff4040> + 30638: 00000306 br 30648 + */ + /* consider: test whether there is anything there while doing this and delay for at most 2s. */ + if (count > 0) + { + if (flags & O_NONBLOCK) + break; + 3063c: 0001883a nop + 30640: 00000106 br 30648 + while (out == sp->tx_out && sp->host_inactive < sp->timeout) + ; +#endif /* __ucosii__ */ + + if (sp->host_inactive) + break; + 30644: 0001883a nop + * Now that access to the circular buffer is complete, release the write + * semaphore so that other threads can access the buffer. + */ + ALT_SEM_POST (sp->write_lock); + + if (ptr != start) + 30648: e0fffd17 ldw r3,-12(fp) + 3064c: e0bff717 ldw r2,-36(fp) + 30650: 18800426 beq r3,r2,30664 + return ptr - start; + 30654: e0fffd17 ldw r3,-12(fp) + 30658: e0bff717 ldw r2,-36(fp) + 3065c: 1885c83a sub r2,r3,r2 + 30660: 00000606 br 3067c + else if (flags & O_NONBLOCK) + 30664: e0bfff17 ldw r2,-4(fp) + 30668: 1090000c andi r2,r2,16384 + 3066c: 10000226 beq r2,zero,30678 + return -EWOULDBLOCK; + 30670: 00bffd44 movi r2,-11 + 30674: 00000106 br 3067c + sp->tx_out = sp->tx_in = 0; + return ptr - start + count; + } +#endif + else + return -EIO; /* Host not connected */ + 30678: 00bffec4 movi r2,-5 +} + 3067c: e037883a mov sp,fp + 30680: dfc00117 ldw ra,4(sp) + 30684: df000017 ldw fp,0(sp) + 30688: dec00204 addi sp,sp,8 + 3068c: f800283a ret + +00030690 : +#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT +static void alt_avalon_timer_sc_irq (void* base) +#else +static void alt_avalon_timer_sc_irq (void* base, alt_u32 id) +#endif +{ + 30690: defffa04 addi sp,sp,-24 + 30694: dfc00515 stw ra,20(sp) + 30698: df000415 stw fp,16(sp) + 3069c: df000404 addi fp,sp,16 + 306a0: e13fff15 stw r4,-4(fp) + alt_irq_context cpu_sr; + + /* clear the interrupt */ + IOWR_ALTERA_AVALON_TIMER_STATUS (base, 0); + 306a4: 0007883a mov r3,zero + 306a8: e0bfff17 ldw r2,-4(fp) + 306ac: 10c00035 stwio r3,0(r2) + /* + * Dummy read to ensure IRQ is negated before the ISR returns. + * The control register is read because reading the status + * register has side-effects per the register map documentation. + */ + IORD_ALTERA_AVALON_TIMER_CONTROL (base); + 306b0: e0bfff17 ldw r2,-4(fp) + 306b4: 10800104 addi r2,r2,4 + 306b8: 10800037 ldwio r2,0(r2) +static ALT_INLINE alt_irq_context ALT_ALWAYS_INLINE + alt_irq_disable_all (void) +{ + alt_irq_context context; + + NIOS2_READ_STATUS (context); + 306bc: 0005303a rdctl r2,status + 306c0: e0bffd15 stw r2,-12(fp) + + NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK); + 306c4: e0fffd17 ldw r3,-12(fp) + 306c8: 00bfff84 movi r2,-2 + 306cc: 1884703a and r2,r3,r2 + 306d0: 1001703a wrctl status,r2 + + return context; + 306d4: e0bffd17 ldw r2,-12(fp) + + /* + * Notify the system of a clock tick. disable interrupts + * during this time to safely support ISR preemption + */ + cpu_sr = alt_irq_disable_all(); + 306d8: e0bffc15 stw r2,-16(fp) + alt_tick (); + 306dc: 002f8c40 call 2f8c4 + 306e0: e0bffc17 ldw r2,-16(fp) + 306e4: e0bffe15 stw r2,-8(fp) + status &= ~NIOS2_STATUS_PIE_MSK; + status |= (context & NIOS2_STATUS_PIE_MSK); + + NIOS2_WRITE_STATUS (status); +#else + NIOS2_WRITE_STATUS (context); + 306e8: e0bffe17 ldw r2,-8(fp) + 306ec: 1001703a wrctl status,r2 + alt_irq_enable_all(cpu_sr); +} + 306f0: 0001883a nop + 306f4: e037883a mov sp,fp + 306f8: dfc00117 ldw ra,4(sp) + 306fc: df000017 ldw fp,0(sp) + 30700: dec00204 addi sp,sp,8 + 30704: f800283a ret + +00030708 : + * auto-generated alt_sys_init() function. + */ + +void alt_avalon_timer_sc_init (void* base, alt_u32 irq_controller_id, + alt_u32 irq, alt_u32 freq) +{ + 30708: defff804 addi sp,sp,-32 + 3070c: dfc00715 stw ra,28(sp) + 30710: df000615 stw fp,24(sp) + 30714: df000604 addi fp,sp,24 + 30718: e13ffc15 stw r4,-16(fp) + 3071c: e17ffd15 stw r5,-12(fp) + 30720: e1bffe15 stw r6,-8(fp) + 30724: e1ffff15 stw r7,-4(fp) + 30728: e0bfff17 ldw r2,-4(fp) + 3072c: e0bffb15 stw r2,-20(fp) + * in order to initialise the value of the clock frequency. + */ + +static ALT_INLINE int ALT_ALWAYS_INLINE alt_sysclk_init (alt_u32 nticks) +{ + if (! _alt_tick_rate) + 30730: 008000f4 movhi r2,3 + 30734: 109a1304 addi r2,r2,26700 + 30738: 10800017 ldw r2,0(r2) + 3073c: 1000041e bne r2,zero,30750 + { + _alt_tick_rate = nticks; + 30740: 008000f4 movhi r2,3 + 30744: 109a1304 addi r2,r2,26700 + 30748: e0fffb17 ldw r3,-20(fp) + 3074c: 10c00015 stw r3,0(r2) + + alt_sysclk_init (freq); + + /* set to free running mode */ + + IOWR_ALTERA_AVALON_TIMER_CONTROL (base, + 30750: e0bffc17 ldw r2,-16(fp) + 30754: 10800104 addi r2,r2,4 + 30758: 00c001c4 movi r3,7 + 3075c: 10c00035 stwio r3,0(r2) + ALTERA_AVALON_TIMER_CONTROL_CONT_MSK | + ALTERA_AVALON_TIMER_CONTROL_START_MSK); + + /* register the interrupt handler, and enable the interrupt */ +#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT + alt_ic_isr_register(irq_controller_id, irq, alt_avalon_timer_sc_irq, + 30760: d8000015 stw zero,0(sp) + 30764: e1fffc17 ldw r7,-16(fp) + 30768: 018000f4 movhi r6,3 + 3076c: 3181a404 addi r6,r6,1680 + 30770: e17ffe17 ldw r5,-8(fp) + 30774: e13ffd17 ldw r4,-12(fp) + 30778: 0030c5c0 call 30c5c + base, NULL); +#else + alt_irq_register (irq, base, alt_avalon_timer_sc_irq); +#endif +} + 3077c: 0001883a nop + 30780: e037883a mov sp,fp + 30784: dfc00117 ldw ra,4(sp) + 30788: df000017 ldw fp,0(sp) + 3078c: dec00204 addi sp,sp,8 + 30790: f800283a ret + +00030794 : + */ + +int alt_alarm_start (alt_alarm* alarm, alt_u32 nticks, + alt_u32 (*callback) (void* context), + void* context) +{ + 30794: defff504 addi sp,sp,-44 + 30798: df000a15 stw fp,40(sp) + 3079c: df000a04 addi fp,sp,40 + 307a0: e13ffc15 stw r4,-16(fp) + 307a4: e17ffd15 stw r5,-12(fp) + 307a8: e1bffe15 stw r6,-8(fp) + 307ac: e1ffff15 stw r7,-4(fp) + alt_irq_context irq_context; + alt_u32 current_nticks = 0; + 307b0: e03ff615 stw zero,-40(fp) + * Obtain the system clock rate in ticks/s. + */ + +static ALT_INLINE alt_u32 ALT_ALWAYS_INLINE alt_ticks_per_second (void) +{ + return _alt_tick_rate; + 307b4: 008000f4 movhi r2,3 + 307b8: 109a1304 addi r2,r2,26700 + 307bc: 10800017 ldw r2,0(r2) + + if (alt_ticks_per_second ()) + 307c0: 10003f26 beq r2,zero,308c0 + { + if (alarm) + 307c4: e0bffc17 ldw r2,-16(fp) + 307c8: 10003b26 beq r2,zero,308b8 + { + alarm->callback = callback; + 307cc: e0bffc17 ldw r2,-16(fp) + 307d0: e0fffe17 ldw r3,-8(fp) + 307d4: 10c00315 stw r3,12(r2) + alarm->context = context; + 307d8: e0bffc17 ldw r2,-16(fp) + 307dc: e0ffff17 ldw r3,-4(fp) + 307e0: 10c00515 stw r3,20(r2) +static ALT_INLINE alt_irq_context ALT_ALWAYS_INLINE + alt_irq_disable_all (void) +{ + alt_irq_context context; + + NIOS2_READ_STATUS (context); + 307e4: 0005303a rdctl r2,status + 307e8: e0bff915 stw r2,-28(fp) + + NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK); + 307ec: e0fff917 ldw r3,-28(fp) + 307f0: 00bfff84 movi r2,-2 + 307f4: 1884703a and r2,r3,r2 + 307f8: 1001703a wrctl status,r2 + + return context; + 307fc: e0bff917 ldw r2,-28(fp) + + irq_context = alt_irq_disable_all (); + 30800: e0bff815 stw r2,-32(fp) + * alt_nticks() returns the elapsed number of system clock ticks since reset. + */ + +static ALT_INLINE alt_u32 ALT_ALWAYS_INLINE alt_nticks (void) +{ + return _alt_nticks; + 30804: 008000f4 movhi r2,3 + 30808: 109a1404 addi r2,r2,26704 + 3080c: 10800017 ldw r2,0(r2) + + current_nticks = alt_nticks(); + 30810: e0bff615 stw r2,-40(fp) + + alarm->time = nticks + current_nticks + 1; + 30814: e0fffd17 ldw r3,-12(fp) + 30818: e0bff617 ldw r2,-40(fp) + 3081c: 1885883a add r2,r3,r2 + 30820: 10c00044 addi r3,r2,1 + 30824: e0bffc17 ldw r2,-16(fp) + 30828: 10c00215 stw r3,8(r2) + /* + * If the desired alarm time causes a roll-over, set the rollover + * flag. This will prevent the subsequent tick event from causing + * an alarm too early. + */ + if(alarm->time < current_nticks) + 3082c: e0bffc17 ldw r2,-16(fp) + 30830: 10c00217 ldw r3,8(r2) + 30834: e0bff617 ldw r2,-40(fp) + 30838: 1880042e bgeu r3,r2,3084c + { + alarm->rollover = 1; + 3083c: e0bffc17 ldw r2,-16(fp) + 30840: 00c00044 movi r3,1 + 30844: 10c00405 stb r3,16(r2) + 30848: 00000206 br 30854 + } + else + { + alarm->rollover = 0; + 3084c: e0bffc17 ldw r2,-16(fp) + 30850: 10000405 stb zero,16(r2) + } + + alt_llist_insert (&alt_alarm_list, &alarm->llist); + 30854: e0fffc17 ldw r3,-16(fp) + 30858: 008000f4 movhi r2,3 + 3085c: 10915e04 addi r2,r2,17784 + 30860: e0bffa15 stw r2,-24(fp) + 30864: e0fffb15 stw r3,-20(fp) + */ + +static ALT_INLINE void ALT_ALWAYS_INLINE alt_llist_insert(alt_llist* list, + alt_llist* entry) +{ + entry->previous = list; + 30868: e0bffb17 ldw r2,-20(fp) + 3086c: e0fffa17 ldw r3,-24(fp) + 30870: 10c00115 stw r3,4(r2) + entry->next = list->next; + 30874: e0bffa17 ldw r2,-24(fp) + 30878: 10c00017 ldw r3,0(r2) + 3087c: e0bffb17 ldw r2,-20(fp) + 30880: 10c00015 stw r3,0(r2) + + list->next->previous = entry; + 30884: e0bffa17 ldw r2,-24(fp) + 30888: 10800017 ldw r2,0(r2) + 3088c: e0fffb17 ldw r3,-20(fp) + 30890: 10c00115 stw r3,4(r2) + list->next = entry; + 30894: e0bffa17 ldw r2,-24(fp) + 30898: e0fffb17 ldw r3,-20(fp) + 3089c: 10c00015 stw r3,0(r2) + 308a0: e0bff817 ldw r2,-32(fp) + 308a4: e0bff715 stw r2,-36(fp) + status &= ~NIOS2_STATUS_PIE_MSK; + status |= (context & NIOS2_STATUS_PIE_MSK); + + NIOS2_WRITE_STATUS (status); +#else + NIOS2_WRITE_STATUS (context); + 308a8: e0bff717 ldw r2,-36(fp) + 308ac: 1001703a wrctl status,r2 + alt_irq_enable_all (irq_context); + + return 0; + 308b0: 0005883a mov r2,zero + 308b4: 00000306 br 308c4 + } + else + { + return -EINVAL; + 308b8: 00bffa84 movi r2,-22 + 308bc: 00000106 br 308c4 + } + } + else + { + return -ENOTSUP; + 308c0: 00bfde84 movi r2,-134 + } +} + 308c4: e037883a mov sp,fp + 308c8: df000017 ldw fp,0(sp) + 308cc: dec00104 addi sp,sp,4 + 308d0: f800283a ret + +000308d4 : +#include "alt_types.h" + +#include "priv/alt_busy_sleep.h" + +unsigned int alt_busy_sleep (unsigned int us) +{ + 308d4: defffa04 addi sp,sp,-24 + 308d8: dfc00515 stw ra,20(sp) + 308dc: df000415 stw fp,16(sp) + 308e0: df000404 addi fp,sp,16 + 308e4: e13fff15 stw r4,-4(fp) + { + cycles_per_loop = 9; + } + else + { + cycles_per_loop = 3; + 308e8: 008000c4 movi r2,3 + 308ec: e0bffd15 stw r2,-12(fp) + } + + + big_loops = us / (INT_MAX/ + (ALT_CPU_FREQ/(cycles_per_loop * 1000000))); + 308f0: e0fffd17 ldw r3,-12(fp) + 308f4: 008003f4 movhi r2,15 + 308f8: 10909004 addi r2,r2,16960 + 308fc: 1885383a mul r2,r3,r2 + 30900: 100b883a mov r5,r2 + 30904: 0100bef4 movhi r4,763 + 30908: 213c2004 addi r4,r4,-3968 + 3090c: 00225dc0 call 225dc <__udivsi3> + { + cycles_per_loop = 3; + } + + + big_loops = us / (INT_MAX/ + 30910: 100b883a mov r5,r2 + 30914: 01200034 movhi r4,32768 + 30918: 213fffc4 addi r4,r4,-1 + 3091c: 00225dc0 call 225dc <__udivsi3> + 30920: 100b883a mov r5,r2 + 30924: e13fff17 ldw r4,-4(fp) + 30928: 00225dc0 call 225dc <__udivsi3> + 3092c: e0bffe15 stw r2,-8(fp) + (ALT_CPU_FREQ/(cycles_per_loop * 1000000))); + + if (big_loops) + 30930: e0bffe17 ldw r2,-8(fp) + 30934: 10002a26 beq r2,zero,309e0 + { + for(i=0;i + /* + * Do NOT Try to single step the asm statement below + * (single step will never return) + * Step out of this function or set a breakpoint after the asm statements + */ + __asm__ volatile ( + 30940: 00a00034 movhi r2,32768 + 30944: 10bfffc4 addi r2,r2,-1 + 30948: 10bfffc4 addi r2,r2,-1 + 3094c: 103ffe1e bne r2,zero,30948 <_gp+0xffff4410> + "\n\t.pushsection .debug_alt_sim_info" + "\n\t.int 4, 0, 0b, 1b" + "\n\t.popsection" + :: "r" (INT_MAX)); + us -= (INT_MAX/(ALT_CPU_FREQ/ + (cycles_per_loop * 1000000))); + 30950: e0fffd17 ldw r3,-12(fp) + 30954: 008003f4 movhi r2,15 + 30958: 10909004 addi r2,r2,16960 + 3095c: 1885383a mul r2,r3,r2 + "\n1:" + "\n\t.pushsection .debug_alt_sim_info" + "\n\t.int 4, 0, 0b, 1b" + "\n\t.popsection" + :: "r" (INT_MAX)); + us -= (INT_MAX/(ALT_CPU_FREQ/ + 30960: 100b883a mov r5,r2 + 30964: 0100bef4 movhi r4,763 + 30968: 213c2004 addi r4,r4,-3968 + 3096c: 00225dc0 call 225dc <__udivsi3> + 30970: 100b883a mov r5,r2 + 30974: 01200034 movhi r4,32768 + 30978: 213fffc4 addi r4,r4,-1 + 3097c: 00225dc0 call 225dc <__udivsi3> + 30980: 1007883a mov r3,r2 + 30984: e0bfff17 ldw r2,-4(fp) + 30988: 10c5c83a sub r2,r2,r3 + 3098c: e0bfff15 stw r2,-4(fp) + big_loops = us / (INT_MAX/ + (ALT_CPU_FREQ/(cycles_per_loop * 1000000))); + + if (big_loops) + { + for(i=0;i + "\n\tbne %0,zero,0b" + "\n1:" + "\n\t.pushsection .debug_alt_sim_info" + "\n\t.int 4, 0, 0b, 1b" + "\n\t.popsection" + :: "r" (us*(ALT_CPU_FREQ/(cycles_per_loop * 1000000)))); + 309a8: e0fffd17 ldw r3,-12(fp) + 309ac: 008003f4 movhi r2,15 + 309b0: 10909004 addi r2,r2,16960 + 309b4: 1885383a mul r2,r3,r2 + 309b8: 100b883a mov r5,r2 + 309bc: 0100bef4 movhi r4,763 + 309c0: 213c2004 addi r4,r4,-3968 + 309c4: 00225dc0 call 225dc <__udivsi3> + 309c8: 1007883a mov r3,r2 + 309cc: e0bfff17 ldw r2,-4(fp) + 309d0: 1885383a mul r2,r3,r2 + /* + * Do NOT Try to single step the asm statement below + * (single step will never return) + * Step out of this function or set a breakpoint after the asm statements + */ + __asm__ volatile ( + 309d4: 10bfffc4 addi r2,r2,-1 + 309d8: 103ffe1e bne r2,zero,309d4 <_gp+0xffff449c> + 309dc: 00000d06 br 30a14 + "\n\tbgt %0,zero,0b" + "\n1:" + "\n\t.pushsection .debug_alt_sim_info" + "\n\t.int 4, 0, 0b, 1b" + "\n\t.popsection" + :: "r" (us*(ALT_CPU_FREQ/(cycles_per_loop * 1000000)))); + 309e0: e0fffd17 ldw r3,-12(fp) + 309e4: 008003f4 movhi r2,15 + 309e8: 10909004 addi r2,r2,16960 + 309ec: 1885383a mul r2,r3,r2 + 309f0: 100b883a mov r5,r2 + 309f4: 0100bef4 movhi r4,763 + 309f8: 213c2004 addi r4,r4,-3968 + 309fc: 00225dc0 call 225dc <__udivsi3> + 30a00: 1007883a mov r3,r2 + 30a04: e0bfff17 ldw r2,-4(fp) + 30a08: 1885383a mul r2,r3,r2 + /* + * Do NOT Try to single step the asm statement below + * (single step will never return) + * Step out of this function or set a breakpoint after the asm statements + */ + __asm__ volatile ( + 30a0c: 10bfffc4 addi r2,r2,-1 + 30a10: 00bffe16 blt zero,r2,30a0c <_gp+0xffff44d4> + "\n\t.int 4, 0, 0b, 1b" + "\n\t.popsection" + :: "r" (us*(ALT_CPU_FREQ/(cycles_per_loop * 1000000)))); + } +#endif /* #ifndef ALT_SIM_OPTIMIZE */ + return 0; + 30a14: 0005883a mov r2,zero +} + 30a18: e037883a mov sp,fp + 30a1c: dfc00117 ldw ra,4(sp) + 30a20: df000017 ldw fp,0(sp) + 30a24: dec00204 addi sp,sp,8 + 30a28: f800283a ret + +00030a2c : +/* + * alt_dcache_flush_all() is called to flush the entire data cache. + */ + +void alt_dcache_flush_all (void) +{ + 30a2c: defffe04 addi sp,sp,-8 + 30a30: df000115 stw fp,4(sp) + 30a34: df000104 addi fp,sp,4 +#if NIOS2_DCACHE_SIZE > 0 + char* i; + + for (i = (char*) 0; i < (char*) NIOS2_DCACHE_SIZE; i+= NIOS2_DCACHE_LINE_SIZE) + 30a38: e03fff15 stw zero,-4(fp) + 30a3c: 00000506 br 30a54 + { + __asm__ volatile ("flushd (%0)" :: "r" (i)); + 30a40: e0bfff17 ldw r2,-4(fp) + 30a44: 1000003b flushd 0(r2) +void alt_dcache_flush_all (void) +{ +#if NIOS2_DCACHE_SIZE > 0 + char* i; + + for (i = (char*) 0; i < (char*) NIOS2_DCACHE_SIZE; i+= NIOS2_DCACHE_LINE_SIZE) + 30a48: e0bfff17 ldw r2,-4(fp) + 30a4c: 10800804 addi r2,r2,32 + 30a50: e0bfff15 stw r2,-4(fp) + 30a54: e0bfff17 ldw r2,-4(fp) + 30a58: 10820030 cmpltui r2,r2,2048 + 30a5c: 103ff81e bne r2,zero,30a40 <_gp+0xffff4508> + { + __asm__ volatile ("flushd (%0)" :: "r" (i)); + } +#endif /* NIOS2_DCACHE_SIZE > 0 */ +} + 30a60: 0001883a nop + 30a64: e037883a mov sp,fp + 30a68: df000017 ldw fp,0(sp) + 30a6c: dec00104 addi sp,sp,4 + 30a70: f800283a ret + +00030a74 : +#undef errno + +extern int errno; + +static ALT_INLINE int* alt_get_errno(void) +{ + 30a74: defffe04 addi sp,sp,-8 + 30a78: dfc00115 stw ra,4(sp) + 30a7c: df000015 stw fp,0(sp) + 30a80: d839883a mov fp,sp + return ((alt_errno) ? alt_errno() : &errno); + 30a84: 008000f4 movhi r2,3 + 30a88: 10915c04 addi r2,r2,17776 + 30a8c: 10800017 ldw r2,0(r2) + 30a90: 10000526 beq r2,zero,30aa8 + 30a94: 008000f4 movhi r2,3 + 30a98: 10915c04 addi r2,r2,17776 + 30a9c: 10800017 ldw r2,0(r2) + 30aa0: 103ee83a callr r2 + 30aa4: 00000206 br 30ab0 + 30aa8: 008000f4 movhi r2,3 + 30aac: 109a0c04 addi r2,r2,26672 +} + 30ab0: e037883a mov sp,fp + 30ab4: dfc00117 ldw ra,4(sp) + 30ab8: df000017 ldw fp,0(sp) + 30abc: dec00204 addi sp,sp,8 + 30ac0: f800283a ret + +00030ac4 : +/* + * + */ + +int alt_dev_llist_insert (alt_dev_llist* dev, alt_llist* list) +{ + 30ac4: defffa04 addi sp,sp,-24 + 30ac8: dfc00515 stw ra,20(sp) + 30acc: df000415 stw fp,16(sp) + 30ad0: df000404 addi fp,sp,16 + 30ad4: e13ffe15 stw r4,-8(fp) + 30ad8: e17fff15 stw r5,-4(fp) + /* + * check that the device exists, and that it has a valid name. + */ + + if (!dev || !dev->name) + 30adc: e0bffe17 ldw r2,-8(fp) + 30ae0: 10000326 beq r2,zero,30af0 + 30ae4: e0bffe17 ldw r2,-8(fp) + 30ae8: 10800217 ldw r2,8(r2) + 30aec: 1000061e bne r2,zero,30b08 + { + ALT_ERRNO = EINVAL; + 30af0: 0030a740 call 30a74 + 30af4: 1007883a mov r3,r2 + 30af8: 00800584 movi r2,22 + 30afc: 18800015 stw r2,0(r3) + return -EINVAL; + 30b00: 00bffa84 movi r2,-22 + 30b04: 00001306 br 30b54 + + /* + * register the device. + */ + + alt_llist_insert(list, &dev->llist); + 30b08: e0bffe17 ldw r2,-8(fp) + 30b0c: e0ffff17 ldw r3,-4(fp) + 30b10: e0fffc15 stw r3,-16(fp) + 30b14: e0bffd15 stw r2,-12(fp) + */ + +static ALT_INLINE void ALT_ALWAYS_INLINE alt_llist_insert(alt_llist* list, + alt_llist* entry) +{ + entry->previous = list; + 30b18: e0bffd17 ldw r2,-12(fp) + 30b1c: e0fffc17 ldw r3,-16(fp) + 30b20: 10c00115 stw r3,4(r2) + entry->next = list->next; + 30b24: e0bffc17 ldw r2,-16(fp) + 30b28: 10c00017 ldw r3,0(r2) + 30b2c: e0bffd17 ldw r2,-12(fp) + 30b30: 10c00015 stw r3,0(r2) + + list->next->previous = entry; + 30b34: e0bffc17 ldw r2,-16(fp) + 30b38: 10800017 ldw r2,0(r2) + 30b3c: e0fffd17 ldw r3,-12(fp) + 30b40: 10c00115 stw r3,4(r2) + list->next = entry; + 30b44: e0bffc17 ldw r2,-16(fp) + 30b48: e0fffd17 ldw r3,-12(fp) + 30b4c: 10c00015 stw r3,0(r2) + + return 0; + 30b50: 0005883a mov r2,zero +} + 30b54: e037883a mov sp,fp + 30b58: dfc00117 ldw ra,4(sp) + 30b5c: df000017 ldw fp,0(sp) + 30b60: dec00204 addi sp,sp,8 + 30b64: f800283a ret + +00030b68 <_do_ctors>: +/* + * Run the C++ static constructors. + */ + +void _do_ctors(void) +{ + 30b68: defffd04 addi sp,sp,-12 + 30b6c: dfc00215 stw ra,8(sp) + 30b70: df000115 stw fp,4(sp) + 30b74: df000104 addi fp,sp,4 + constructor* ctor; + + for (ctor = &__CTOR_END__[-1]; ctor >= __CTOR_LIST__; ctor--) + 30b78: 008000f4 movhi r2,3 + 30b7c: 10868604 addi r2,r2,6680 + 30b80: e0bfff15 stw r2,-4(fp) + 30b84: 00000606 br 30ba0 <_do_ctors+0x38> + (*ctor) (); + 30b88: e0bfff17 ldw r2,-4(fp) + 30b8c: 10800017 ldw r2,0(r2) + 30b90: 103ee83a callr r2 + +void _do_ctors(void) +{ + constructor* ctor; + + for (ctor = &__CTOR_END__[-1]; ctor >= __CTOR_LIST__; ctor--) + 30b94: e0bfff17 ldw r2,-4(fp) + 30b98: 10bfff04 addi r2,r2,-4 + 30b9c: e0bfff15 stw r2,-4(fp) + 30ba0: e0ffff17 ldw r3,-4(fp) + 30ba4: 008000f4 movhi r2,3 + 30ba8: 10868704 addi r2,r2,6684 + 30bac: 18bff62e bgeu r3,r2,30b88 <_gp+0xffff4650> + (*ctor) (); +} + 30bb0: 0001883a nop + 30bb4: e037883a mov sp,fp + 30bb8: dfc00117 ldw ra,4(sp) + 30bbc: df000017 ldw fp,0(sp) + 30bc0: dec00204 addi sp,sp,8 + 30bc4: f800283a ret + +00030bc8 <_do_dtors>: +/* + * Run the C++ static destructors. + */ + +void _do_dtors(void) +{ + 30bc8: defffd04 addi sp,sp,-12 + 30bcc: dfc00215 stw ra,8(sp) + 30bd0: df000115 stw fp,4(sp) + 30bd4: df000104 addi fp,sp,4 + destructor* dtor; + + for (dtor = &__DTOR_END__[-1]; dtor >= __DTOR_LIST__; dtor--) + 30bd8: 008000f4 movhi r2,3 + 30bdc: 10868604 addi r2,r2,6680 + 30be0: e0bfff15 stw r2,-4(fp) + 30be4: 00000606 br 30c00 <_do_dtors+0x38> + (*dtor) (); + 30be8: e0bfff17 ldw r2,-4(fp) + 30bec: 10800017 ldw r2,0(r2) + 30bf0: 103ee83a callr r2 + +void _do_dtors(void) +{ + destructor* dtor; + + for (dtor = &__DTOR_END__[-1]; dtor >= __DTOR_LIST__; dtor--) + 30bf4: e0bfff17 ldw r2,-4(fp) + 30bf8: 10bfff04 addi r2,r2,-4 + 30bfc: e0bfff15 stw r2,-4(fp) + 30c00: e0ffff17 ldw r3,-4(fp) + 30c04: 008000f4 movhi r2,3 + 30c08: 10868704 addi r2,r2,6684 + 30c0c: 18bff62e bgeu r3,r2,30be8 <_gp+0xffff46b0> + (*dtor) (); +} + 30c10: 0001883a nop + 30c14: e037883a mov sp,fp + 30c18: dfc00117 ldw ra,4(sp) + 30c1c: df000017 ldw fp,0(sp) + 30c20: dec00204 addi sp,sp,8 + 30c24: f800283a ret + +00030c28 : +/* + * alt_icache_flush_all() is called to flush the entire instruction cache. + */ + +void alt_icache_flush_all (void) +{ + 30c28: defffe04 addi sp,sp,-8 + 30c2c: dfc00115 stw ra,4(sp) + 30c30: df000015 stw fp,0(sp) + 30c34: d839883a mov fp,sp +#if NIOS2_ICACHE_SIZE > 0 + alt_icache_flush (0, NIOS2_ICACHE_SIZE); + 30c38: 01440004 movi r5,4096 + 30c3c: 0009883a mov r4,zero + 30c40: 003155c0 call 3155c +#endif +} + 30c44: 0001883a nop + 30c48: e037883a mov sp,fp + 30c4c: dfc00117 ldw ra,4(sp) + 30c50: df000017 ldw fp,0(sp) + 30c54: dec00204 addi sp,sp,8 + 30c58: f800283a ret + +00030c5c : + * @param irq IRQ number + * @return 0 if successful, else error (-1) + */ +int alt_ic_isr_register(alt_u32 ic_id, alt_u32 irq, alt_isr_func isr, + void *isr_context, void *flags) +{ + 30c5c: defff904 addi sp,sp,-28 + 30c60: dfc00615 stw ra,24(sp) + 30c64: df000515 stw fp,20(sp) + 30c68: df000504 addi fp,sp,20 + 30c6c: e13ffc15 stw r4,-16(fp) + 30c70: e17ffd15 stw r5,-12(fp) + 30c74: e1bffe15 stw r6,-8(fp) + 30c78: e1ffff15 stw r7,-4(fp) + return alt_iic_isr_register(ic_id, irq, isr, isr_context, flags); + 30c7c: e0800217 ldw r2,8(fp) + 30c80: d8800015 stw r2,0(sp) + 30c84: e1ffff17 ldw r7,-4(fp) + 30c88: e1bffe17 ldw r6,-8(fp) + 30c8c: e17ffd17 ldw r5,-12(fp) + 30c90: e13ffc17 ldw r4,-16(fp) + 30c94: 0030e3c0 call 30e3c +} + 30c98: e037883a mov sp,fp + 30c9c: dfc00117 ldw ra,4(sp) + 30ca0: df000017 ldw fp,0(sp) + 30ca4: dec00204 addi sp,sp,8 + 30ca8: f800283a ret + +00030cac : + * @param ic_id Ignored. + * @param irq IRQ number + * @return 0 if successful, else error (-1) + */ +int alt_ic_irq_enable (alt_u32 ic_id, alt_u32 irq) +{ + 30cac: defff904 addi sp,sp,-28 + 30cb0: df000615 stw fp,24(sp) + 30cb4: df000604 addi fp,sp,24 + 30cb8: e13ffe15 stw r4,-8(fp) + 30cbc: e17fff15 stw r5,-4(fp) + 30cc0: e0bfff17 ldw r2,-4(fp) + 30cc4: e0bffa15 stw r2,-24(fp) +static ALT_INLINE alt_irq_context ALT_ALWAYS_INLINE + alt_irq_disable_all (void) +{ + alt_irq_context context; + + NIOS2_READ_STATUS (context); + 30cc8: 0005303a rdctl r2,status + 30ccc: e0bffb15 stw r2,-20(fp) + + NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK); + 30cd0: e0fffb17 ldw r3,-20(fp) + 30cd4: 00bfff84 movi r2,-2 + 30cd8: 1884703a and r2,r3,r2 + 30cdc: 1001703a wrctl status,r2 + + return context; + 30ce0: e0bffb17 ldw r2,-20(fp) +static ALT_INLINE int ALT_ALWAYS_INLINE alt_irq_enable (alt_u32 id) +{ + alt_irq_context status; + extern volatile alt_u32 alt_irq_active; + + status = alt_irq_disable_all (); + 30ce4: e0bffc15 stw r2,-16(fp) + + alt_irq_active |= (1 << id); + 30ce8: 00c00044 movi r3,1 + 30cec: e0bffa17 ldw r2,-24(fp) + 30cf0: 1884983a sll r2,r3,r2 + 30cf4: 1007883a mov r3,r2 + 30cf8: 008000f4 movhi r2,3 + 30cfc: 109a1504 addi r2,r2,26708 + 30d00: 10800017 ldw r2,0(r2) + 30d04: 1886b03a or r3,r3,r2 + 30d08: 008000f4 movhi r2,3 + 30d0c: 109a1504 addi r2,r2,26708 + 30d10: 10c00015 stw r3,0(r2) + NIOS2_WRITE_IENABLE (alt_irq_active); + 30d14: 008000f4 movhi r2,3 + 30d18: 109a1504 addi r2,r2,26708 + 30d1c: 10800017 ldw r2,0(r2) + 30d20: 100170fa wrctl ienable,r2 + 30d24: e0bffc17 ldw r2,-16(fp) + 30d28: e0bffd15 stw r2,-12(fp) + status &= ~NIOS2_STATUS_PIE_MSK; + status |= (context & NIOS2_STATUS_PIE_MSK); + + NIOS2_WRITE_STATUS (status); +#else + NIOS2_WRITE_STATUS (context); + 30d2c: e0bffd17 ldw r2,-12(fp) + 30d30: 1001703a wrctl status,r2 + + alt_irq_enable_all(status); + + return 0; + 30d34: 0005883a mov r2,zero + return alt_irq_enable(irq); + 30d38: 0001883a nop +} + 30d3c: e037883a mov sp,fp + 30d40: df000017 ldw fp,0(sp) + 30d44: dec00104 addi sp,sp,4 + 30d48: f800283a ret + +00030d4c : + * @param ic_id Ignored. + * @param irq IRQ number + * @return 0 if successful, else error (-1) + */ +int alt_ic_irq_disable(alt_u32 ic_id, alt_u32 irq) +{ + 30d4c: defff904 addi sp,sp,-28 + 30d50: df000615 stw fp,24(sp) + 30d54: df000604 addi fp,sp,24 + 30d58: e13ffe15 stw r4,-8(fp) + 30d5c: e17fff15 stw r5,-4(fp) + 30d60: e0bfff17 ldw r2,-4(fp) + 30d64: e0bffa15 stw r2,-24(fp) +static ALT_INLINE alt_irq_context ALT_ALWAYS_INLINE + alt_irq_disable_all (void) +{ + alt_irq_context context; + + NIOS2_READ_STATUS (context); + 30d68: 0005303a rdctl r2,status + 30d6c: e0bffb15 stw r2,-20(fp) + + NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK); + 30d70: e0fffb17 ldw r3,-20(fp) + 30d74: 00bfff84 movi r2,-2 + 30d78: 1884703a and r2,r3,r2 + 30d7c: 1001703a wrctl status,r2 + + return context; + 30d80: e0bffb17 ldw r2,-20(fp) +static ALT_INLINE int ALT_ALWAYS_INLINE alt_irq_disable (alt_u32 id) +{ + alt_irq_context status; + extern volatile alt_u32 alt_irq_active; + + status = alt_irq_disable_all (); + 30d84: e0bffc15 stw r2,-16(fp) + + alt_irq_active &= ~(1 << id); + 30d88: 00c00044 movi r3,1 + 30d8c: e0bffa17 ldw r2,-24(fp) + 30d90: 1884983a sll r2,r3,r2 + 30d94: 0084303a nor r2,zero,r2 + 30d98: 1007883a mov r3,r2 + 30d9c: 008000f4 movhi r2,3 + 30da0: 109a1504 addi r2,r2,26708 + 30da4: 10800017 ldw r2,0(r2) + 30da8: 1886703a and r3,r3,r2 + 30dac: 008000f4 movhi r2,3 + 30db0: 109a1504 addi r2,r2,26708 + 30db4: 10c00015 stw r3,0(r2) + NIOS2_WRITE_IENABLE (alt_irq_active); + 30db8: 008000f4 movhi r2,3 + 30dbc: 109a1504 addi r2,r2,26708 + 30dc0: 10800017 ldw r2,0(r2) + 30dc4: 100170fa wrctl ienable,r2 + 30dc8: e0bffc17 ldw r2,-16(fp) + 30dcc: e0bffd15 stw r2,-12(fp) + status &= ~NIOS2_STATUS_PIE_MSK; + status |= (context & NIOS2_STATUS_PIE_MSK); + + NIOS2_WRITE_STATUS (status); +#else + NIOS2_WRITE_STATUS (context); + 30dd0: e0bffd17 ldw r2,-12(fp) + 30dd4: 1001703a wrctl status,r2 + + alt_irq_enable_all(status); + + return 0; + 30dd8: 0005883a mov r2,zero + return alt_irq_disable(irq); + 30ddc: 0001883a nop +} + 30de0: e037883a mov sp,fp + 30de4: df000017 ldw fp,0(sp) + 30de8: dec00104 addi sp,sp,4 + 30dec: f800283a ret + +00030df0 : + * @param irq IRQ number + * @return Zero if corresponding interrupt is disabled and + * non-zero otherwise. + */ +alt_u32 alt_ic_irq_enabled(alt_u32 ic_id, alt_u32 irq) +{ + 30df0: defffc04 addi sp,sp,-16 + 30df4: df000315 stw fp,12(sp) + 30df8: df000304 addi fp,sp,12 + 30dfc: e13ffe15 stw r4,-8(fp) + 30e00: e17fff15 stw r5,-4(fp) + alt_u32 irq_enabled; + + NIOS2_READ_IENABLE(irq_enabled); + 30e04: 000530fa rdctl r2,ienable + 30e08: e0bffd15 stw r2,-12(fp) + + return (irq_enabled & (1 << irq)) ? 1: 0; + 30e0c: 00c00044 movi r3,1 + 30e10: e0bfff17 ldw r2,-4(fp) + 30e14: 1884983a sll r2,r3,r2 + 30e18: 1007883a mov r3,r2 + 30e1c: e0bffd17 ldw r2,-12(fp) + 30e20: 1884703a and r2,r3,r2 + 30e24: 1004c03a cmpne r2,r2,zero + 30e28: 10803fcc andi r2,r2,255 +} + 30e2c: e037883a mov sp,fp + 30e30: df000017 ldw fp,0(sp) + 30e34: dec00104 addi sp,sp,4 + 30e38: f800283a ret + +00030e3c : + * @param flags + * @return 0 if successful, else error (-1) + */ +int alt_iic_isr_register(alt_u32 ic_id, alt_u32 irq, alt_isr_func isr, + void *isr_context, void *flags) +{ + 30e3c: defff504 addi sp,sp,-44 + 30e40: dfc00a15 stw ra,40(sp) + 30e44: df000915 stw fp,36(sp) + 30e48: df000904 addi fp,sp,36 + 30e4c: e13ffc15 stw r4,-16(fp) + 30e50: e17ffd15 stw r5,-12(fp) + 30e54: e1bffe15 stw r6,-8(fp) + 30e58: e1ffff15 stw r7,-4(fp) + int rc = -EINVAL; + 30e5c: 00bffa84 movi r2,-22 + 30e60: e0bff715 stw r2,-36(fp) + int id = irq; /* IRQ interpreted as the interrupt ID. */ + 30e64: e0bffd17 ldw r2,-12(fp) + 30e68: e0bff815 stw r2,-32(fp) + alt_irq_context status; + + if (id < ALT_NIRQ) + 30e6c: e0bff817 ldw r2,-32(fp) + 30e70: 10800808 cmpgei r2,r2,32 + 30e74: 1000271e bne r2,zero,30f14 +static ALT_INLINE alt_irq_context ALT_ALWAYS_INLINE + alt_irq_disable_all (void) +{ + alt_irq_context context; + + NIOS2_READ_STATUS (context); + 30e78: 0005303a rdctl r2,status + 30e7c: e0bffb15 stw r2,-20(fp) + + NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK); + 30e80: e0fffb17 ldw r3,-20(fp) + 30e84: 00bfff84 movi r2,-2 + 30e88: 1884703a and r2,r3,r2 + 30e8c: 1001703a wrctl status,r2 + + return context; + 30e90: e0bffb17 ldw r2,-20(fp) + * interrupts are disabled while the handler tables are updated to ensure + * that an interrupt doesn't occur while the tables are in an inconsistant + * state. + */ + + status = alt_irq_disable_all(); + 30e94: e0bffa15 stw r2,-24(fp) + + alt_irq[id].handler = isr; + 30e98: 008000f4 movhi r2,3 + 30e9c: 109a2104 addi r2,r2,26756 + 30ea0: e0fff817 ldw r3,-32(fp) + 30ea4: 180690fa slli r3,r3,3 + 30ea8: 10c5883a add r2,r2,r3 + 30eac: e0fffe17 ldw r3,-8(fp) + 30eb0: 10c00015 stw r3,0(r2) + alt_irq[id].context = isr_context; + 30eb4: 008000f4 movhi r2,3 + 30eb8: 109a2104 addi r2,r2,26756 + 30ebc: e0fff817 ldw r3,-32(fp) + 30ec0: 180690fa slli r3,r3,3 + 30ec4: 10c5883a add r2,r2,r3 + 30ec8: 10800104 addi r2,r2,4 + 30ecc: e0ffff17 ldw r3,-4(fp) + 30ed0: 10c00015 stw r3,0(r2) + + rc = (isr) ? alt_ic_irq_enable(ic_id, id) : alt_ic_irq_disable(ic_id, id); + 30ed4: e0bffe17 ldw r2,-8(fp) + 30ed8: 10000526 beq r2,zero,30ef0 + 30edc: e0bff817 ldw r2,-32(fp) + 30ee0: 100b883a mov r5,r2 + 30ee4: e13ffc17 ldw r4,-16(fp) + 30ee8: 0030cac0 call 30cac + 30eec: 00000406 br 30f00 + 30ef0: e0bff817 ldw r2,-32(fp) + 30ef4: 100b883a mov r5,r2 + 30ef8: e13ffc17 ldw r4,-16(fp) + 30efc: 0030d4c0 call 30d4c + 30f00: e0bff715 stw r2,-36(fp) + 30f04: e0bffa17 ldw r2,-24(fp) + 30f08: e0bff915 stw r2,-28(fp) + status &= ~NIOS2_STATUS_PIE_MSK; + status |= (context & NIOS2_STATUS_PIE_MSK); + + NIOS2_WRITE_STATUS (status); +#else + NIOS2_WRITE_STATUS (context); + 30f0c: e0bff917 ldw r2,-28(fp) + 30f10: 1001703a wrctl status,r2 + + alt_irq_enable_all(status); + } + + return rc; + 30f14: e0bff717 ldw r2,-36(fp) +} + 30f18: e037883a mov sp,fp + 30f1c: dfc00117 ldw ra,4(sp) + 30f20: df000017 ldw fp,0(sp) + 30f24: dec00204 addi sp,sp,8 + 30f28: f800283a ret + +00030f2c : + * If the device can not be succesfully opened, then the input file descriptor + * remains unchanged. + */ + +static void alt_open_fd(alt_fd* fd, const char* name, int flags, int mode) +{ + 30f2c: defff904 addi sp,sp,-28 + 30f30: dfc00615 stw ra,24(sp) + 30f34: df000515 stw fp,20(sp) + 30f38: df000504 addi fp,sp,20 + 30f3c: e13ffc15 stw r4,-16(fp) + 30f40: e17ffd15 stw r5,-12(fp) + 30f44: e1bffe15 stw r6,-8(fp) + 30f48: e1ffff15 stw r7,-4(fp) + int old; + + old = open (name, flags, mode); + 30f4c: e1bfff17 ldw r6,-4(fp) + 30f50: e17ffe17 ldw r5,-8(fp) + 30f54: e13ffd17 ldw r4,-12(fp) + 30f58: 00311880 call 31188 + 30f5c: e0bffb15 stw r2,-20(fp) + + if (old >= 0) + 30f60: e0bffb17 ldw r2,-20(fp) + 30f64: 10001c16 blt r2,zero,30fd8 + { + fd->dev = alt_fd_list[old].dev; + 30f68: 008000f4 movhi r2,3 + 30f6c: 108cd604 addi r2,r2,13144 + 30f70: e0fffb17 ldw r3,-20(fp) + 30f74: 18c00324 muli r3,r3,12 + 30f78: 10c5883a add r2,r2,r3 + 30f7c: 10c00017 ldw r3,0(r2) + 30f80: e0bffc17 ldw r2,-16(fp) + 30f84: 10c00015 stw r3,0(r2) + fd->priv = alt_fd_list[old].priv; + 30f88: 008000f4 movhi r2,3 + 30f8c: 108cd604 addi r2,r2,13144 + 30f90: e0fffb17 ldw r3,-20(fp) + 30f94: 18c00324 muli r3,r3,12 + 30f98: 10c5883a add r2,r2,r3 + 30f9c: 10800104 addi r2,r2,4 + 30fa0: 10c00017 ldw r3,0(r2) + 30fa4: e0bffc17 ldw r2,-16(fp) + 30fa8: 10c00115 stw r3,4(r2) + fd->fd_flags = alt_fd_list[old].fd_flags; + 30fac: 008000f4 movhi r2,3 + 30fb0: 108cd604 addi r2,r2,13144 + 30fb4: e0fffb17 ldw r3,-20(fp) + 30fb8: 18c00324 muli r3,r3,12 + 30fbc: 10c5883a add r2,r2,r3 + 30fc0: 10800204 addi r2,r2,8 + 30fc4: 10c00017 ldw r3,0(r2) + 30fc8: e0bffc17 ldw r2,-16(fp) + 30fcc: 10c00215 stw r3,8(r2) + + alt_release_fd (old); + 30fd0: e13ffb17 ldw r4,-20(fp) + 30fd4: 002f7140 call 2f714 + } +} + 30fd8: 0001883a nop + 30fdc: e037883a mov sp,fp + 30fe0: dfc00117 ldw ra,4(sp) + 30fe4: df000017 ldw fp,0(sp) + 30fe8: dec00204 addi sp,sp,8 + 30fec: f800283a ret + +00030ff0 : + */ + +void alt_io_redirect(const char* stdout_dev, + const char* stdin_dev, + const char* stderr_dev) +{ + 30ff0: defffb04 addi sp,sp,-20 + 30ff4: dfc00415 stw ra,16(sp) + 30ff8: df000315 stw fp,12(sp) + 30ffc: df000304 addi fp,sp,12 + 31000: e13ffd15 stw r4,-12(fp) + 31004: e17ffe15 stw r5,-8(fp) + 31008: e1bfff15 stw r6,-4(fp) + /* Redirect the channels */ + + alt_open_fd (&alt_fd_list[STDOUT_FILENO], stdout_dev, O_WRONLY, 0777); + 3100c: 01c07fc4 movi r7,511 + 31010: 01800044 movi r6,1 + 31014: e17ffd17 ldw r5,-12(fp) + 31018: 010000f4 movhi r4,3 + 3101c: 210cd904 addi r4,r4,13156 + 31020: 0030f2c0 call 30f2c + alt_open_fd (&alt_fd_list[STDIN_FILENO], stdin_dev, O_RDONLY, 0777); + 31024: 01c07fc4 movi r7,511 + 31028: 000d883a mov r6,zero + 3102c: e17ffe17 ldw r5,-8(fp) + 31030: 010000f4 movhi r4,3 + 31034: 210cd604 addi r4,r4,13144 + 31038: 0030f2c0 call 30f2c + alt_open_fd (&alt_fd_list[STDERR_FILENO], stderr_dev, O_WRONLY, 0777); + 3103c: 01c07fc4 movi r7,511 + 31040: 01800044 movi r6,1 + 31044: e17fff17 ldw r5,-4(fp) + 31048: 010000f4 movhi r4,3 + 3104c: 210cdc04 addi r4,r4,13168 + 31050: 0030f2c0 call 30f2c +} + 31054: 0001883a nop + 31058: e037883a mov sp,fp + 3105c: dfc00117 ldw ra,4(sp) + 31060: df000017 ldw fp,0(sp) + 31064: dec00204 addi sp,sp,8 + 31068: f800283a ret + +0003106c : +#undef errno + +extern int errno; + +static ALT_INLINE int* alt_get_errno(void) +{ + 3106c: defffe04 addi sp,sp,-8 + 31070: dfc00115 stw ra,4(sp) + 31074: df000015 stw fp,0(sp) + 31078: d839883a mov fp,sp + return ((alt_errno) ? alt_errno() : &errno); + 3107c: 008000f4 movhi r2,3 + 31080: 10915c04 addi r2,r2,17776 + 31084: 10800017 ldw r2,0(r2) + 31088: 10000526 beq r2,zero,310a0 + 3108c: 008000f4 movhi r2,3 + 31090: 10915c04 addi r2,r2,17776 + 31094: 10800017 ldw r2,0(r2) + 31098: 103ee83a callr r2 + 3109c: 00000206 br 310a8 + 310a0: 008000f4 movhi r2,3 + 310a4: 109a0c04 addi r2,r2,26672 +} + 310a8: e037883a mov sp,fp + 310ac: dfc00117 ldw ra,4(sp) + 310b0: df000017 ldw fp,0(sp) + 310b4: dec00204 addi sp,sp,8 + 310b8: f800283a ret + +000310bc : + * performed for devices. Filesystems are required to handle the ioctl() call + * themselves, and report the error from the filesystems open() function. + */ + +static int alt_file_locked (alt_fd* fd) +{ + 310bc: defffd04 addi sp,sp,-12 + 310c0: df000215 stw fp,8(sp) + 310c4: df000204 addi fp,sp,8 + 310c8: e13fff15 stw r4,-4(fp) + + /* + * Mark the file descriptor as belonging to a device. + */ + + fd->fd_flags |= ALT_FD_DEV; + 310cc: e0bfff17 ldw r2,-4(fp) + 310d0: 10800217 ldw r2,8(r2) + 310d4: 10d00034 orhi r3,r2,16384 + 310d8: e0bfff17 ldw r2,-4(fp) + 310dc: 10c00215 stw r3,8(r2) + /* + * Loop through all current file descriptors searching for one that's locked + * for exclusive access. If a match is found, generate an error. + */ + + for (i = 0; i <= alt_max_fd; i++) + 310e0: e03ffe15 stw zero,-8(fp) + 310e4: 00001d06 br 3115c + { + if ((alt_fd_list[i].dev == fd->dev) && + 310e8: 008000f4 movhi r2,3 + 310ec: 108cd604 addi r2,r2,13144 + 310f0: e0fffe17 ldw r3,-8(fp) + 310f4: 18c00324 muli r3,r3,12 + 310f8: 10c5883a add r2,r2,r3 + 310fc: 10c00017 ldw r3,0(r2) + 31100: e0bfff17 ldw r2,-4(fp) + 31104: 10800017 ldw r2,0(r2) + 31108: 1880111e bne r3,r2,31150 + (alt_fd_list[i].fd_flags & ALT_FD_EXCL) && + 3110c: 008000f4 movhi r2,3 + 31110: 108cd604 addi r2,r2,13144 + 31114: e0fffe17 ldw r3,-8(fp) + 31118: 18c00324 muli r3,r3,12 + 3111c: 10c5883a add r2,r2,r3 + 31120: 10800204 addi r2,r2,8 + 31124: 10800017 ldw r2,0(r2) + * for exclusive access. If a match is found, generate an error. + */ + + for (i = 0; i <= alt_max_fd; i++) + { + if ((alt_fd_list[i].dev == fd->dev) && + 31128: 1000090e bge r2,zero,31150 + (alt_fd_list[i].fd_flags & ALT_FD_EXCL) && + (&alt_fd_list[i] != fd)) + 3112c: e0bffe17 ldw r2,-8(fp) + 31130: 10c00324 muli r3,r2,12 + 31134: 008000f4 movhi r2,3 + 31138: 108cd604 addi r2,r2,13144 + 3113c: 1887883a add r3,r3,r2 + */ + + for (i = 0; i <= alt_max_fd; i++) + { + if ((alt_fd_list[i].dev == fd->dev) && + (alt_fd_list[i].fd_flags & ALT_FD_EXCL) && + 31140: e0bfff17 ldw r2,-4(fp) + 31144: 18800226 beq r3,r2,31150 + (&alt_fd_list[i] != fd)) + { + return -EACCES; + 31148: 00bffcc4 movi r2,-13 + 3114c: 00000a06 br 31178 + /* + * Loop through all current file descriptors searching for one that's locked + * for exclusive access. If a match is found, generate an error. + */ + + for (i = 0; i <= alt_max_fd; i++) + 31150: e0bffe17 ldw r2,-8(fp) + 31154: 10800044 addi r2,r2,1 + 31158: e0bffe15 stw r2,-8(fp) + 3115c: 008000f4 movhi r2,3 + 31160: 10915b04 addi r2,r2,17772 + 31164: 10800017 ldw r2,0(r2) + 31168: 1007883a mov r3,r2 + 3116c: e0bffe17 ldw r2,-8(fp) + 31170: 18bfdd2e bgeu r3,r2,310e8 <_gp+0xffff4bb0> + } + } + + /* The device is not locked */ + + return 0; + 31174: 0005883a mov r2,zero +} + 31178: e037883a mov sp,fp + 3117c: df000017 ldw fp,0(sp) + 31180: dec00104 addi sp,sp,4 + 31184: f800283a ret + +00031188 : + * + * ALT_OPEN is mapped onto the open() system call in alt_syscall.h + */ + +int ALT_OPEN (const char* file, int flags, int mode) +{ + 31188: defff604 addi sp,sp,-40 + 3118c: dfc00915 stw ra,36(sp) + 31190: df000815 stw fp,32(sp) + 31194: df000804 addi fp,sp,32 + 31198: e13ffd15 stw r4,-12(fp) + 3119c: e17ffe15 stw r5,-8(fp) + 311a0: e1bfff15 stw r6,-4(fp) + alt_dev* dev; + alt_fd* fd; + int index = -1; + 311a4: 00bfffc4 movi r2,-1 + 311a8: e0bff915 stw r2,-28(fp) + int status = -ENODEV; + 311ac: 00bffb44 movi r2,-19 + 311b0: e0bffa15 stw r2,-24(fp) + int isafs = 0; + 311b4: e03ffb15 stw zero,-20(fp) + /* + * Check the device list, to see if a device with a matching name is + * registered. + */ + + if (!(dev = alt_find_dev (file, &alt_dev_list))) + 311b8: 014000f4 movhi r5,3 + 311bc: 29515904 addi r5,r5,17764 + 311c0: e13ffd17 ldw r4,-12(fp) + 311c4: 00313040 call 31304 + 311c8: e0bff815 stw r2,-32(fp) + 311cc: e0bff817 ldw r2,-32(fp) + 311d0: 1000051e bne r2,zero,311e8 + { + /* No matching device, so try the filesystem list */ + + dev = alt_find_file (file); + 311d4: e13ffd17 ldw r4,-12(fp) + 311d8: 00313940 call 31394 + 311dc: e0bff815 stw r2,-32(fp) + isafs = 1; + 311e0: 00800044 movi r2,1 + 311e4: e0bffb15 stw r2,-20(fp) + + /* + * If a matching device or filesystem is found, allocate a file descriptor. + */ + + if (dev) + 311e8: e0bff817 ldw r2,-32(fp) + 311ec: 10002926 beq r2,zero,31294 + { + if ((index = alt_get_fd (dev)) < 0) + 311f0: e13ff817 ldw r4,-32(fp) + 311f4: 00314a80 call 314a8 + 311f8: e0bff915 stw r2,-28(fp) + 311fc: e0bff917 ldw r2,-28(fp) + 31200: 1000030e bge r2,zero,31210 + { + status = index; + 31204: e0bff917 ldw r2,-28(fp) + 31208: e0bffa15 stw r2,-24(fp) + 3120c: 00002306 br 3129c + } + else + { + fd = &alt_fd_list[index]; + 31210: e0bff917 ldw r2,-28(fp) + 31214: 10c00324 muli r3,r2,12 + 31218: 008000f4 movhi r2,3 + 3121c: 108cd604 addi r2,r2,13144 + 31220: 1885883a add r2,r3,r2 + 31224: e0bffc15 stw r2,-16(fp) + fd->fd_flags = (flags & ~ALT_FD_FLAGS_MASK); + 31228: e0fffe17 ldw r3,-8(fp) + 3122c: 00900034 movhi r2,16384 + 31230: 10bfffc4 addi r2,r2,-1 + 31234: 1886703a and r3,r3,r2 + 31238: e0bffc17 ldw r2,-16(fp) + 3123c: 10c00215 stw r3,8(r2) + + /* If this is a device, ensure it isn't already locked */ + + if (isafs || ((status = alt_file_locked (fd)) >= 0)) + 31240: e0bffb17 ldw r2,-20(fp) + 31244: 1000051e bne r2,zero,3125c + 31248: e13ffc17 ldw r4,-16(fp) + 3124c: 00310bc0 call 310bc + 31250: e0bffa15 stw r2,-24(fp) + 31254: e0bffa17 ldw r2,-24(fp) + 31258: 10001016 blt r2,zero,3129c + /* + * If the device or filesystem provides an open() callback function, + * call it now to perform any device/filesystem specific operations. + */ + + status = (dev->open) ? dev->open(fd, file, flags, mode): 0; + 3125c: e0bff817 ldw r2,-32(fp) + 31260: 10800317 ldw r2,12(r2) + 31264: 10000826 beq r2,zero,31288 + 31268: e0bff817 ldw r2,-32(fp) + 3126c: 10800317 ldw r2,12(r2) + 31270: e1ffff17 ldw r7,-4(fp) + 31274: e1bffe17 ldw r6,-8(fp) + 31278: e17ffd17 ldw r5,-12(fp) + 3127c: e13ffc17 ldw r4,-16(fp) + 31280: 103ee83a callr r2 + 31284: 00000106 br 3128c + 31288: 0005883a mov r2,zero + 3128c: e0bffa15 stw r2,-24(fp) + 31290: 00000206 br 3129c + } + } + } + else + { + status = -ENODEV; + 31294: 00bffb44 movi r2,-19 + 31298: e0bffa15 stw r2,-24(fp) + } + + /* Allocation failed, so clean up and return an error */ + + if (status < 0) + 3129c: e0bffa17 ldw r2,-24(fp) + 312a0: 1000090e bge r2,zero,312c8 + { + alt_release_fd (index); + 312a4: e13ff917 ldw r4,-28(fp) + 312a8: 002f7140 call 2f714 + ALT_ERRNO = -status; + 312ac: 003106c0 call 3106c + 312b0: 1007883a mov r3,r2 + 312b4: e0bffa17 ldw r2,-24(fp) + 312b8: 0085c83a sub r2,zero,r2 + 312bc: 18800015 stw r2,0(r3) + return -1; + 312c0: 00bfffc4 movi r2,-1 + 312c4: 00000106 br 312cc + } + + /* return the reference upon success */ + + return index; + 312c8: e0bff917 ldw r2,-28(fp) +} + 312cc: e037883a mov sp,fp + 312d0: dfc00117 ldw ra,4(sp) + 312d4: df000017 ldw fp,0(sp) + 312d8: dec00204 addi sp,sp,8 + 312dc: f800283a ret + +000312e0 : +/* + * To initialize the internal interrupt controller, just clear the IENABLE + * register so that all possible IRQs are disabled. + */ +void altera_nios2_gen2_irq_init(void) +{ + 312e0: deffff04 addi sp,sp,-4 + 312e4: df000015 stw fp,0(sp) + 312e8: d839883a mov fp,sp + NIOS2_WRITE_IENABLE(0); + 312ec: 000170fa wrctl ienable,zero +} + 312f0: 0001883a nop + 312f4: e037883a mov sp,fp + 312f8: df000017 ldw fp,0(sp) + 312fc: dec00104 addi sp,sp,4 + 31300: f800283a ret + +00031304 : + * "name" must be an exact match for the devices registered name for a match to + * be found. + */ + +alt_dev* alt_find_dev(const char* name, alt_llist* llist) +{ + 31304: defffa04 addi sp,sp,-24 + 31308: dfc00515 stw ra,20(sp) + 3130c: df000415 stw fp,16(sp) + 31310: df000404 addi fp,sp,16 + 31314: e13ffe15 stw r4,-8(fp) + 31318: e17fff15 stw r5,-4(fp) + alt_dev* next = (alt_dev*) llist->next; + 3131c: e0bfff17 ldw r2,-4(fp) + 31320: 10800017 ldw r2,0(r2) + 31324: e0bffc15 stw r2,-16(fp) + alt_32 len; + + len = strlen(name) + 1; + 31328: e13ffe17 ldw r4,-8(fp) + 3132c: 00231a80 call 231a8 + 31330: 10800044 addi r2,r2,1 + 31334: e0bffd15 stw r2,-12(fp) + /* + * Check each list entry in turn, until a match is found, or we reach the + * end of the list (i.e. next winds up pointing back to the list head). + */ + + while (next != (alt_dev*) llist) + 31338: 00000d06 br 31370 + /* + * memcmp() is used here rather than strcmp() in order to reduce the size + * of the executable. + */ + + if (!memcmp (next->name, name, len)) + 3133c: e0bffc17 ldw r2,-16(fp) + 31340: 10800217 ldw r2,8(r2) + 31344: e0fffd17 ldw r3,-12(fp) + 31348: 180d883a mov r6,r3 + 3134c: e17ffe17 ldw r5,-8(fp) + 31350: 1009883a mov r4,r2 + 31354: 00316d40 call 316d4 + 31358: 1000021e bne r2,zero,31364 + { + /* match found */ + + return next; + 3135c: e0bffc17 ldw r2,-16(fp) + 31360: 00000706 br 31380 + } + next = (alt_dev*) next->llist.next; + 31364: e0bffc17 ldw r2,-16(fp) + 31368: 10800017 ldw r2,0(r2) + 3136c: e0bffc15 stw r2,-16(fp) + /* + * Check each list entry in turn, until a match is found, or we reach the + * end of the list (i.e. next winds up pointing back to the list head). + */ + + while (next != (alt_dev*) llist) + 31370: e0fffc17 ldw r3,-16(fp) + 31374: e0bfff17 ldw r2,-4(fp) + 31378: 18bff01e bne r3,r2,3133c <_gp+0xffff4e04> + next = (alt_dev*) next->llist.next; + } + + /* No match found */ + + return NULL; + 3137c: 0005883a mov r2,zero +} + 31380: e037883a mov sp,fp + 31384: dfc00117 ldw ra,4(sp) + 31388: df000017 ldw fp,0(sp) + 3138c: dec00204 addi sp,sp,8 + 31390: f800283a ret + +00031394 : + * either '/' or '\0' is the prefix of the filename. For example the filename: + * "/myfilesystem/junk.txt" would match: "/myfilesystem", but not: "/myfile". + */ + +alt_dev* alt_find_file (const char* name) +{ + 31394: defffb04 addi sp,sp,-20 + 31398: dfc00415 stw ra,16(sp) + 3139c: df000315 stw fp,12(sp) + 313a0: df000304 addi fp,sp,12 + 313a4: e13fff15 stw r4,-4(fp) + alt_dev* next = (alt_dev*) alt_fs_list.next; + 313a8: 008000f4 movhi r2,3 + 313ac: 10915704 addi r2,r2,17756 + 313b0: 10800017 ldw r2,0(r2) + 313b4: e0bffd15 stw r2,-12(fp) + /* + * Check each list entry in turn, until a match is found, or we reach the + * end of the list (i.e. next winds up pointing back to the list head). + */ + + while (next != (alt_dev*) &alt_fs_list) + 313b8: 00003106 br 31480 + { + len = strlen(next->name); + 313bc: e0bffd17 ldw r2,-12(fp) + 313c0: 10800217 ldw r2,8(r2) + 313c4: 1009883a mov r4,r2 + 313c8: 00231a80 call 231a8 + 313cc: e0bffe15 stw r2,-8(fp) + + if (next->name[len-1] == '/') + 313d0: e0bffd17 ldw r2,-12(fp) + 313d4: 10c00217 ldw r3,8(r2) + 313d8: e0bffe17 ldw r2,-8(fp) + 313dc: 10bfffc4 addi r2,r2,-1 + 313e0: 1885883a add r2,r3,r2 + 313e4: 10800003 ldbu r2,0(r2) + 313e8: 10803fcc andi r2,r2,255 + 313ec: 1080201c xori r2,r2,128 + 313f0: 10bfe004 addi r2,r2,-128 + 313f4: 10800bd8 cmpnei r2,r2,47 + 313f8: 1000031e bne r2,zero,31408 + { + len -= 1; + 313fc: e0bffe17 ldw r2,-8(fp) + 31400: 10bfffc4 addi r2,r2,-1 + 31404: e0bffe15 stw r2,-8(fp) + } + + if (((name[len] == '/') || (name[len] == '\0')) && + 31408: e0bffe17 ldw r2,-8(fp) + 3140c: e0ffff17 ldw r3,-4(fp) + 31410: 1885883a add r2,r3,r2 + 31414: 10800003 ldbu r2,0(r2) + 31418: 10803fcc andi r2,r2,255 + 3141c: 1080201c xori r2,r2,128 + 31420: 10bfe004 addi r2,r2,-128 + 31424: 10800be0 cmpeqi r2,r2,47 + 31428: 1000081e bne r2,zero,3144c + 3142c: e0bffe17 ldw r2,-8(fp) + 31430: e0ffff17 ldw r3,-4(fp) + 31434: 1885883a add r2,r3,r2 + 31438: 10800003 ldbu r2,0(r2) + 3143c: 10803fcc andi r2,r2,255 + 31440: 1080201c xori r2,r2,128 + 31444: 10bfe004 addi r2,r2,-128 + 31448: 10000a1e bne r2,zero,31474 + !memcmp (next->name, name, len)) + 3144c: e0bffd17 ldw r2,-12(fp) + 31450: 10800217 ldw r2,8(r2) + 31454: e0fffe17 ldw r3,-8(fp) + 31458: 180d883a mov r6,r3 + 3145c: e17fff17 ldw r5,-4(fp) + 31460: 1009883a mov r4,r2 + 31464: 00316d40 call 316d4 + if (next->name[len-1] == '/') + { + len -= 1; + } + + if (((name[len] == '/') || (name[len] == '\0')) && + 31468: 1000021e bne r2,zero,31474 + !memcmp (next->name, name, len)) + { + /* match found */ + + return next; + 3146c: e0bffd17 ldw r2,-12(fp) + 31470: 00000806 br 31494 + } + next = (alt_dev*) next->llist.next; + 31474: e0bffd17 ldw r2,-12(fp) + 31478: 10800017 ldw r2,0(r2) + 3147c: e0bffd15 stw r2,-12(fp) + /* + * Check each list entry in turn, until a match is found, or we reach the + * end of the list (i.e. next winds up pointing back to the list head). + */ + + while (next != (alt_dev*) &alt_fs_list) + 31480: e0fffd17 ldw r3,-12(fp) + 31484: 008000f4 movhi r2,3 + 31488: 10915704 addi r2,r2,17756 + 3148c: 18bfcb1e bne r3,r2,313bc <_gp+0xffff4e84> + next = (alt_dev*) next->llist.next; + } + + /* No match found */ + + return NULL; + 31490: 0005883a mov r2,zero +} + 31494: e037883a mov sp,fp + 31498: dfc00117 ldw ra,4(sp) + 3149c: df000017 ldw fp,0(sp) + 314a0: dec00204 addi sp,sp,8 + 314a4: f800283a ret + +000314a8 : + * the offset of the file descriptor within the file descriptor array). A + * negative value indicates failure. + */ + +int alt_get_fd (alt_dev* dev) +{ + 314a8: defffc04 addi sp,sp,-16 + 314ac: df000315 stw fp,12(sp) + 314b0: df000304 addi fp,sp,12 + 314b4: e13fff15 stw r4,-4(fp) + alt_32 i; + int rc = -EMFILE; + 314b8: 00bffa04 movi r2,-24 + 314bc: e0bffe15 stw r2,-8(fp) + * indicates the highest file descriptor ever allocated. This is used to + * improve efficency when searching the file descriptor list, and + * therefore reduce contention on the alt_fd_list_lock semaphore. + */ + + for (i = 0; i < ALT_MAX_FD; i++) + 314c0: e03ffd15 stw zero,-12(fp) + 314c4: 00001d06 br 3153c + { + if (!alt_fd_list[i].dev) + 314c8: 008000f4 movhi r2,3 + 314cc: 108cd604 addi r2,r2,13144 + 314d0: e0fffd17 ldw r3,-12(fp) + 314d4: 18c00324 muli r3,r3,12 + 314d8: 10c5883a add r2,r2,r3 + 314dc: 10800017 ldw r2,0(r2) + 314e0: 1000131e bne r2,zero,31530 + { + alt_fd_list[i].dev = dev; + 314e4: 008000f4 movhi r2,3 + 314e8: 108cd604 addi r2,r2,13144 + 314ec: e0fffd17 ldw r3,-12(fp) + 314f0: 18c00324 muli r3,r3,12 + 314f4: 10c5883a add r2,r2,r3 + 314f8: e0ffff17 ldw r3,-4(fp) + 314fc: 10c00015 stw r3,0(r2) + if (i > alt_max_fd) + 31500: 008000f4 movhi r2,3 + 31504: 10915b04 addi r2,r2,17772 + 31508: 10c00017 ldw r3,0(r2) + 3150c: e0bffd17 ldw r2,-12(fp) + 31510: 1880040e bge r3,r2,31524 + { + alt_max_fd = i; + 31514: 008000f4 movhi r2,3 + 31518: 10915b04 addi r2,r2,17772 + 3151c: e0fffd17 ldw r3,-12(fp) + 31520: 10c00015 stw r3,0(r2) + } + rc = i; + 31524: e0bffd17 ldw r2,-12(fp) + 31528: e0bffe15 stw r2,-8(fp) + goto alt_get_fd_exit; + 3152c: 00000606 br 31548 + * indicates the highest file descriptor ever allocated. This is used to + * improve efficency when searching the file descriptor list, and + * therefore reduce contention on the alt_fd_list_lock semaphore. + */ + + for (i = 0; i < ALT_MAX_FD; i++) + 31530: e0bffd17 ldw r2,-12(fp) + 31534: 10800044 addi r2,r2,1 + 31538: e0bffd15 stw r2,-12(fp) + 3153c: e0bffd17 ldw r2,-12(fp) + 31540: 10800810 cmplti r2,r2,32 + 31544: 103fe01e bne r2,zero,314c8 <_gp+0xffff4f90> + * file descriptor pool. + */ + + ALT_SEM_POST(alt_fd_list_lock); + + return rc; + 31548: e0bffe17 ldw r2,-8(fp) +} + 3154c: e037883a mov sp,fp + 31550: df000017 ldw fp,0(sp) + 31554: dec00104 addi sp,sp,4 + 31558: f800283a ret + +0003155c : + * alt_icache_flush() is called to flush the instruction cache for a memory + * region of length "len" bytes, starting at address "start". + */ + +void alt_icache_flush (void* start, alt_u32 len) +{ + 3155c: defffb04 addi sp,sp,-20 + 31560: df000415 stw fp,16(sp) + 31564: df000404 addi fp,sp,16 + 31568: e13ffe15 stw r4,-8(fp) + 3156c: e17fff15 stw r5,-4(fp) + + /* + * This is the most we would ever need to flush. + */ + + if (len > NIOS2_ICACHE_SIZE) + 31570: e0bfff17 ldw r2,-4(fp) + 31574: 10840070 cmpltui r2,r2,4097 + 31578: 1000021e bne r2,zero,31584 + { + len = NIOS2_ICACHE_SIZE; + 3157c: 00840004 movi r2,4096 + 31580: e0bfff15 stw r2,-4(fp) + } + + end = ((char*) start) + len; + 31584: e0fffe17 ldw r3,-8(fp) + 31588: e0bfff17 ldw r2,-4(fp) + 3158c: 1885883a add r2,r3,r2 + 31590: e0bffd15 stw r2,-12(fp) + + for (i = start; i < end; i+= NIOS2_ICACHE_LINE_SIZE) + 31594: e0bffe17 ldw r2,-8(fp) + 31598: e0bffc15 stw r2,-16(fp) + 3159c: 00000506 br 315b4 + { + __asm__ volatile ("flushi %0" :: "r" (i)); + 315a0: e0bffc17 ldw r2,-16(fp) + 315a4: 1000603a flushi r2 + len = NIOS2_ICACHE_SIZE; + } + + end = ((char*) start) + len; + + for (i = start; i < end; i+= NIOS2_ICACHE_LINE_SIZE) + 315a8: e0bffc17 ldw r2,-16(fp) + 315ac: 10800804 addi r2,r2,32 + 315b0: e0bffc15 stw r2,-16(fp) + 315b4: e0fffc17 ldw r3,-16(fp) + 315b8: e0bffd17 ldw r2,-12(fp) + 315bc: 18bff836 bltu r3,r2,315a0 <_gp+0xffff5068> + * For an unaligned flush request, we've got one more line left. + * Note that this is dependent on NIOS2_ICACHE_LINE_SIZE to be a + * multiple of 2 (which it always is). + */ + + if (((alt_u32) start) & (NIOS2_ICACHE_LINE_SIZE - 1)) + 315c0: e0bffe17 ldw r2,-8(fp) + 315c4: 108007cc andi r2,r2,31 + 315c8: 10000226 beq r2,zero,315d4 + { + __asm__ volatile ("flushi %0" :: "r" (i)); + 315cc: e0bffc17 ldw r2,-16(fp) + 315d0: 1000603a flushi r2 + /* + * Having flushed the cache, flush any stale instructions in the + * pipeline + */ + + __asm__ volatile ("flushp"); + 315d4: 0000203a flushp + +#endif /* NIOS2_ICACHE_SIZE > 0 */ +} + 315d8: 0001883a nop + 315dc: e037883a mov sp,fp + 315e0: df000017 ldw fp,0(sp) + 315e4: dec00104 addi sp,sp,4 + 315e8: f800283a ret + +000315ec : + * Return: 1: BADADDR (bad_addr argument to handler) is valid + * 0: BADADDR is not valid + */ +int +alt_exception_cause_generated_bad_addr(alt_exception_cause cause) +{ + 315ec: defffe04 addi sp,sp,-8 + 315f0: df000115 stw fp,4(sp) + 315f4: df000104 addi fp,sp,4 + 315f8: e13fff15 stw r4,-4(fp) + switch (cause) { + 315fc: e0bfff17 ldw r2,-4(fp) + 31600: 10bffe84 addi r2,r2,-6 + 31604: 10c00428 cmpgeui r3,r2,16 + 31608: 18001a1e bne r3,zero,31674 + 3160c: 100690ba slli r3,r2,2 + 31610: 008000f4 movhi r2,3 + 31614: 10858904 addi r2,r2,5668 + 31618: 1885883a add r2,r3,r2 + 3161c: 10800017 ldw r2,0(r2) + 31620: 1000683a jmp r2 + 31624: 00031664 muli zero,zero,3161 + 31628: 00031664 muli zero,zero,3161 + 3162c: 00031674 movhi zero,3161 + 31630: 00031674 movhi zero,3161 + 31634: 00031674 movhi zero,3161 + 31638: 00031664 muli zero,zero,3161 + 3163c: 0003166c andhi zero,zero,3161 + 31640: 00031674 movhi zero,3161 + 31644: 00031664 muli zero,zero,3161 + 31648: 00031664 muli zero,zero,3161 + 3164c: 00031674 movhi zero,3161 + 31650: 00031664 muli zero,zero,3161 + 31654: 0003166c andhi zero,zero,3161 + 31658: 00031674 movhi zero,3161 + 3165c: 00031674 movhi zero,3161 + 31660: 00031664 muli zero,zero,3161 + case NIOS2_EXCEPTION_MISALIGNED_TARGET_PC: + case NIOS2_EXCEPTION_TLB_READ_PERM_VIOLATION: + case NIOS2_EXCEPTION_TLB_WRITE_PERM_VIOLATION: + case NIOS2_EXCEPTION_MPU_DATA_REGION_VIOLATION: + case NIOS2_EXCEPTION_ECC_DATA_ERR: + return 1; + 31664: 00800044 movi r2,1 + 31668: 00000306 br 31678 + + case NIOS2_EXCEPTION_TLB_MISS: + case NIOS2_EXCEPTION_ECC_TLB_ERR: + return 0; + 3166c: 0005883a mov r2,zero + 31670: 00000106 br 31678 + + default: + return 0; + 31674: 0005883a mov r2,zero + } +} + 31678: e037883a mov sp,fp + 3167c: df000017 ldw fp,0(sp) + 31680: dec00104 addi sp,sp,4 + 31684: f800283a ret + +00031688 : + 31688: 200b883a mov r5,r4 + 3168c: 000f883a mov r7,zero + 31690: 000d883a mov r6,zero + 31694: 0009883a mov r4,zero + 31698: 00317501 jmpi 31750 <__register_exitproc> + +0003169c : + 3169c: defffe04 addi sp,sp,-8 + 316a0: 000b883a mov r5,zero + 316a4: dc000015 stw r16,0(sp) + 316a8: dfc00115 stw ra,4(sp) + 316ac: 2021883a mov r16,r4 + 316b0: 00318680 call 31868 <__call_exitprocs> + 316b4: 008000f4 movhi r2,3 + 316b8: 10915304 addi r2,r2,17740 + 316bc: 11000017 ldw r4,0(r2) + 316c0: 20800f17 ldw r2,60(r4) + 316c4: 10000126 beq r2,zero,316cc + 316c8: 103ee83a callr r2 + 316cc: 8009883a mov r4,r16 + 316d0: 00319e80 call 319e8 <_exit> + +000316d4 : + 316d4: 01c000c4 movi r7,3 + 316d8: 3980192e bgeu r7,r6,31740 + 316dc: 2144b03a or r2,r4,r5 + 316e0: 11c4703a and r2,r2,r7 + 316e4: 10000f26 beq r2,zero,31724 + 316e8: 20800003 ldbu r2,0(r4) + 316ec: 28c00003 ldbu r3,0(r5) + 316f0: 10c0151e bne r2,r3,31748 + 316f4: 31bfff84 addi r6,r6,-2 + 316f8: 01ffffc4 movi r7,-1 + 316fc: 00000406 br 31710 + 31700: 20800003 ldbu r2,0(r4) + 31704: 28c00003 ldbu r3,0(r5) + 31708: 31bfffc4 addi r6,r6,-1 + 3170c: 10c00e1e bne r2,r3,31748 + 31710: 21000044 addi r4,r4,1 + 31714: 29400044 addi r5,r5,1 + 31718: 31fff91e bne r6,r7,31700 <_gp+0xffff51c8> + 3171c: 0005883a mov r2,zero + 31720: f800283a ret + 31724: 20c00017 ldw r3,0(r4) + 31728: 28800017 ldw r2,0(r5) + 3172c: 18bfee1e bne r3,r2,316e8 <_gp+0xffff51b0> + 31730: 31bfff04 addi r6,r6,-4 + 31734: 21000104 addi r4,r4,4 + 31738: 29400104 addi r5,r5,4 + 3173c: 39bff936 bltu r7,r6,31724 <_gp+0xffff51ec> + 31740: 303fe91e bne r6,zero,316e8 <_gp+0xffff51b0> + 31744: 003ff506 br 3171c <_gp+0xffff51e4> + 31748: 10c5c83a sub r2,r2,r3 + 3174c: f800283a ret + +00031750 <__register_exitproc>: + 31750: defffa04 addi sp,sp,-24 + 31754: dc000315 stw r16,12(sp) + 31758: 040000f4 movhi r16,3 + 3175c: 84115304 addi r16,r16,17740 + 31760: 80c00017 ldw r3,0(r16) + 31764: dc400415 stw r17,16(sp) + 31768: dfc00515 stw ra,20(sp) + 3176c: 18805217 ldw r2,328(r3) + 31770: 2023883a mov r17,r4 + 31774: 10003726 beq r2,zero,31854 <__register_exitproc+0x104> + 31778: 10c00117 ldw r3,4(r2) + 3177c: 010007c4 movi r4,31 + 31780: 20c00e16 blt r4,r3,317bc <__register_exitproc+0x6c> + 31784: 1a000044 addi r8,r3,1 + 31788: 8800221e bne r17,zero,31814 <__register_exitproc+0xc4> + 3178c: 18c00084 addi r3,r3,2 + 31790: 18c7883a add r3,r3,r3 + 31794: 18c7883a add r3,r3,r3 + 31798: 12000115 stw r8,4(r2) + 3179c: 10c7883a add r3,r2,r3 + 317a0: 19400015 stw r5,0(r3) + 317a4: 0005883a mov r2,zero + 317a8: dfc00517 ldw ra,20(sp) + 317ac: dc400417 ldw r17,16(sp) + 317b0: dc000317 ldw r16,12(sp) + 317b4: dec00604 addi sp,sp,24 + 317b8: f800283a ret + 317bc: 008000b4 movhi r2,2 + 317c0: 1089a604 addi r2,r2,9880 + 317c4: 10002626 beq r2,zero,31860 <__register_exitproc+0x110> + 317c8: 01006404 movi r4,400 + 317cc: d9400015 stw r5,0(sp) + 317d0: d9800115 stw r6,4(sp) + 317d4: d9c00215 stw r7,8(sp) + 317d8: 00226980 call 22698 + 317dc: d9400017 ldw r5,0(sp) + 317e0: d9800117 ldw r6,4(sp) + 317e4: d9c00217 ldw r7,8(sp) + 317e8: 10001d26 beq r2,zero,31860 <__register_exitproc+0x110> + 317ec: 81000017 ldw r4,0(r16) + 317f0: 10000115 stw zero,4(r2) + 317f4: 02000044 movi r8,1 + 317f8: 22405217 ldw r9,328(r4) + 317fc: 0007883a mov r3,zero + 31800: 12400015 stw r9,0(r2) + 31804: 20805215 stw r2,328(r4) + 31808: 10006215 stw zero,392(r2) + 3180c: 10006315 stw zero,396(r2) + 31810: 883fde26 beq r17,zero,3178c <_gp+0xffff5254> + 31814: 18c9883a add r4,r3,r3 + 31818: 2109883a add r4,r4,r4 + 3181c: 1109883a add r4,r2,r4 + 31820: 21802215 stw r6,136(r4) + 31824: 01800044 movi r6,1 + 31828: 12406217 ldw r9,392(r2) + 3182c: 30cc983a sll r6,r6,r3 + 31830: 4992b03a or r9,r9,r6 + 31834: 12406215 stw r9,392(r2) + 31838: 21c04215 stw r7,264(r4) + 3183c: 01000084 movi r4,2 + 31840: 893fd21e bne r17,r4,3178c <_gp+0xffff5254> + 31844: 11006317 ldw r4,396(r2) + 31848: 218cb03a or r6,r4,r6 + 3184c: 11806315 stw r6,396(r2) + 31850: 003fce06 br 3178c <_gp+0xffff5254> + 31854: 18805304 addi r2,r3,332 + 31858: 18805215 stw r2,328(r3) + 3185c: 003fc606 br 31778 <_gp+0xffff5240> + 31860: 00bfffc4 movi r2,-1 + 31864: 003fd006 br 317a8 <_gp+0xffff5270> + +00031868 <__call_exitprocs>: + 31868: defff504 addi sp,sp,-44 + 3186c: df000915 stw fp,36(sp) + 31870: dd400615 stw r21,24(sp) + 31874: dc800315 stw r18,12(sp) + 31878: dfc00a15 stw ra,40(sp) + 3187c: ddc00815 stw r23,32(sp) + 31880: dd800715 stw r22,28(sp) + 31884: dd000515 stw r20,20(sp) + 31888: dcc00415 stw r19,16(sp) + 3188c: dc400215 stw r17,8(sp) + 31890: dc000115 stw r16,4(sp) + 31894: d9000015 stw r4,0(sp) + 31898: 2839883a mov fp,r5 + 3189c: 04800044 movi r18,1 + 318a0: 057fffc4 movi r21,-1 + 318a4: 008000f4 movhi r2,3 + 318a8: 10915304 addi r2,r2,17740 + 318ac: 12000017 ldw r8,0(r2) + 318b0: 45005217 ldw r20,328(r8) + 318b4: 44c05204 addi r19,r8,328 + 318b8: a0001c26 beq r20,zero,3192c <__call_exitprocs+0xc4> + 318bc: a0800117 ldw r2,4(r20) + 318c0: 15ffffc4 addi r23,r2,-1 + 318c4: b8000d16 blt r23,zero,318fc <__call_exitprocs+0x94> + 318c8: 14000044 addi r16,r2,1 + 318cc: 8421883a add r16,r16,r16 + 318d0: 8421883a add r16,r16,r16 + 318d4: 84402004 addi r17,r16,128 + 318d8: a463883a add r17,r20,r17 + 318dc: a421883a add r16,r20,r16 + 318e0: e0001e26 beq fp,zero,3195c <__call_exitprocs+0xf4> + 318e4: 80804017 ldw r2,256(r16) + 318e8: e0801c26 beq fp,r2,3195c <__call_exitprocs+0xf4> + 318ec: bdffffc4 addi r23,r23,-1 + 318f0: 843fff04 addi r16,r16,-4 + 318f4: 8c7fff04 addi r17,r17,-4 + 318f8: bd7ff91e bne r23,r21,318e0 <_gp+0xffff53a8> + 318fc: 008000b4 movhi r2,2 + 31900: 1089ab04 addi r2,r2,9900 + 31904: 10000926 beq r2,zero,3192c <__call_exitprocs+0xc4> + 31908: a0800117 ldw r2,4(r20) + 3190c: 1000301e bne r2,zero,319d0 <__call_exitprocs+0x168> + 31910: a0800017 ldw r2,0(r20) + 31914: 10003226 beq r2,zero,319e0 <__call_exitprocs+0x178> + 31918: a009883a mov r4,r20 + 3191c: 98800015 stw r2,0(r19) + 31920: 00226ac0 call 226ac + 31924: 9d000017 ldw r20,0(r19) + 31928: a03fe41e bne r20,zero,318bc <_gp+0xffff5384> + 3192c: dfc00a17 ldw ra,40(sp) + 31930: df000917 ldw fp,36(sp) + 31934: ddc00817 ldw r23,32(sp) + 31938: dd800717 ldw r22,28(sp) + 3193c: dd400617 ldw r21,24(sp) + 31940: dd000517 ldw r20,20(sp) + 31944: dcc00417 ldw r19,16(sp) + 31948: dc800317 ldw r18,12(sp) + 3194c: dc400217 ldw r17,8(sp) + 31950: dc000117 ldw r16,4(sp) + 31954: dec00b04 addi sp,sp,44 + 31958: f800283a ret + 3195c: a0800117 ldw r2,4(r20) + 31960: 80c00017 ldw r3,0(r16) + 31964: 10bfffc4 addi r2,r2,-1 + 31968: 15c01426 beq r2,r23,319bc <__call_exitprocs+0x154> + 3196c: 80000015 stw zero,0(r16) + 31970: 183fde26 beq r3,zero,318ec <_gp+0xffff53b4> + 31974: 95c8983a sll r4,r18,r23 + 31978: a0806217 ldw r2,392(r20) + 3197c: a5800117 ldw r22,4(r20) + 31980: 2084703a and r2,r4,r2 + 31984: 10000b26 beq r2,zero,319b4 <__call_exitprocs+0x14c> + 31988: a0806317 ldw r2,396(r20) + 3198c: 2088703a and r4,r4,r2 + 31990: 20000c1e bne r4,zero,319c4 <__call_exitprocs+0x15c> + 31994: 89400017 ldw r5,0(r17) + 31998: d9000017 ldw r4,0(sp) + 3199c: 183ee83a callr r3 + 319a0: a0800117 ldw r2,4(r20) + 319a4: 15bfbf1e bne r2,r22,318a4 <_gp+0xffff536c> + 319a8: 98800017 ldw r2,0(r19) + 319ac: 153fcf26 beq r2,r20,318ec <_gp+0xffff53b4> + 319b0: 003fbc06 br 318a4 <_gp+0xffff536c> + 319b4: 183ee83a callr r3 + 319b8: 003ff906 br 319a0 <_gp+0xffff5468> + 319bc: a5c00115 stw r23,4(r20) + 319c0: 003feb06 br 31970 <_gp+0xffff5438> + 319c4: 89000017 ldw r4,0(r17) + 319c8: 183ee83a callr r3 + 319cc: 003ff406 br 319a0 <_gp+0xffff5468> + 319d0: a0800017 ldw r2,0(r20) + 319d4: a027883a mov r19,r20 + 319d8: 1029883a mov r20,r2 + 319dc: 003fb606 br 318b8 <_gp+0xffff5380> + 319e0: 0005883a mov r2,zero + 319e4: 003ffb06 br 319d4 <_gp+0xffff549c> + +000319e8 <_exit>: + * + * ALT_EXIT is mapped onto the _exit() system call in alt_syscall.h + */ + +void ALT_EXIT (int exit_code) +{ + 319e8: defffd04 addi sp,sp,-12 + 319ec: df000215 stw fp,8(sp) + 319f0: df000204 addi fp,sp,8 + 319f4: e13fff15 stw r4,-4(fp) + ALT_LOG_PRINT_BOOT("[alt_exit.c] Entering _exit() function.\r\n"); + ALT_LOG_PRINT_BOOT("[alt_exit.c] Exit code from main was %d.\r\n",exit_code); + /* Stop all other threads */ + + ALT_LOG_PRINT_BOOT("[alt_exit.c] Calling ALT_OS_STOP().\r\n"); + ALT_OS_STOP(); + 319f8: 0001883a nop + 319fc: e0bfff17 ldw r2,-4(fp) + 31a00: e0bffe15 stw r2,-8(fp) +/* + * Routine called on exit. + */ +static ALT_INLINE ALT_ALWAYS_INLINE void alt_sim_halt(int exit_code) +{ + register int r2 asm ("r2") = exit_code; + 31a04: e0bffe17 ldw r2,-8(fp) + __asm__ volatile ("\n0:\n\taddi %0,%0, -1\n\tbgt %0,zero,0b" : : "r" (ALT_CPU_FREQ/100) ); /* Delay for >30ms */ + + __asm__ volatile ("break 2" : : "r"(r2), "r"(r3) ALT_GMON_DATA ); + +#else /* !DEBUG_STUB */ + if (r2) { + 31a08: 10000226 beq r2,zero,31a14 <_exit+0x2c> + ALT_SIM_FAIL(); + 31a0c: 002af070 cmpltui zero,zero,43969 + 31a10: 00000106 br 31a18 <_exit+0x30> + } else { + ALT_SIM_PASS(); + 31a14: 002af0b0 cmpltui zero,zero,43970 + ALT_SIM_HALT(exit_code); + + /* spin forever, since there's no where to go back to */ + + ALT_LOG_PRINT_BOOT("[alt_exit.c] Spinning forever.\r\n"); + while (1); + 31a18: 003fff06 br 31a18 <_gp+0xffff54e0> diff --git a/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/I2C_core.c b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/I2C_core.c new file mode 100644 index 0000000..0d5fa42 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/I2C_core.c @@ -0,0 +1,732 @@ +// -------------------------------------------------------------------- +// Copyright (c) 2007 by Terasic Technologies Inc. +// -------------------------------------------------------------------- +// +// Permission: +// +// Terasic grants permission to use and modify this code for use +// in synthesis for all Terasic Development Boards and Altera Development +// Kits made by Terasic. Other use of this code, including the selling +// ,duplication, or modification of any portion is strictly prohibited. +// +// Disclaimer: +// +// This VHDL/Verilog or C/C++ source code is intended as a design reference +// which illustrates how these types of functions can be implemented. +// It is the user's responsibility to verify their design for +// consistency and functionality through the use of formal +// verification methods. Terasic provides no warranty regarding the use +// or functionality of this code. +// +// -------------------------------------------------------------------- +// +// Terasic Technologies Inc +// 356 Fu-Shin E. Rd Sec. 1. JhuBei City, +// HsinChu County, Taiwan +// 302 +// +// web: http://www.terasic.com/ +// email: support@terasic.com +// +// -------------------------------------------------------------------- +#include "terasic_includes.h" +#include "I2C_core.h" +#include "io.h" +// Note. Remember to reset device befroe acceess I2C interface +#ifdef DEBUG_I2C + #define I2C_DEBUG(x) DEBUG(x) +#else + #define I2C_DEBUG(x) +#endif + +#define SLEEP_TIME 250 //us +#define ACK_SLEEP_TIME 250 //us +#define TRUE 1 +#define FALSE 0 + +bool Write32_Data(alt_32 base_address, alt_32 offset_address, alt_32 Data){ + bool bPass; + IOWR(base_address, offset_address,Data); + bPass=TRUE; + return bPass; +} + + + +bool Read32_Data(alt_32 base_address, alt_32 offset_address, alt_32 *pData32){ + bool bPass; + *pData32 =IORD(base_address ,offset_address ); + bPass=TRUE; + return bPass; +} + +bool oc_i2c_init(alt_32 i2c_base){ + bool bSuccess; + const alt_32 ref_clk = 50*1000*1000; // 50MHz + const alt_32 i2c_clk = 400*1000; // 400KHz + + bSuccess = oc_i2c_init_ex(i2c_base, ref_clk, i2c_clk); + + return bSuccess; +} + +bool oc_i2c_init_ex(alt_32 i2c_base, alt_32 ref_clk, alt_32 i2c_clk) +{ + bool bSuccess=TRUE; + alt_32 read_data; + alt_32 prescale; + alt_u8 prescale_high; + alt_u8 prescale_low; + const alt_u8 ControlValue = 0x80; + + // I2c sysclock =50M hz + // i2c scl max 400k + //scl =sysclock/(prescale*5) + prescale = (ref_clk/(5*i2c_clk))-1; + prescale_low = prescale & 0xFF; + prescale_high = (prescale >> 8) & 0xFF; + + IOWR(i2c_base, 0, prescale_low);//write low byte of prescale (reg 0) + IOWR(i2c_base, 1, prescale_high);//write high byte of prescale (reg 1) + + //enable the I2C core, but disable the IRQ + IOWR( i2c_base, 2, ControlValue); + + + // check prescale low byte + if (bSuccess){ + read_data =IORD(i2c_base, 0); + if( (read_data & 0x00ff) != prescale_low ){ + bSuccess = FALSE; + } + } + + // check prescale high byte + if (bSuccess){ + read_data =IORD(i2c_base, 1); + if( (read_data & 0x00ff) != prescale_high ){ + bSuccess = FALSE; + } + } + + // check control + if (bSuccess){ + read_data =IORD(i2c_base, 2); + if( (read_data & 0x00ff) != ControlValue ){ + bSuccess = FALSE; + } + } + + if (bSuccess){ +// printf("\nI2C core is enabled! \r\n"); + } + else + printf("\nI2C core is not enabled successfully! \r\n"); + + return bSuccess; + +} + +bool oc_i2c_uninit(alt_32 i2c_base) +{ + bool bSuccess=TRUE; + alt_32 read_data; + const alt_u8 ControlValue = 0x00; + + IOWR( i2c_base, 2, ControlValue); + read_data =IORD(i2c_base, 2); + if( (read_data & 0x00ff) != ControlValue ){ + bSuccess = FALSE; + } + + if (bSuccess){ +// printf("\I2C core is disabled! \r\n"); + } + else + printf("\I2C core is failed to disable! \r\n"); + + return bSuccess; + +} + + + + + +bool ACK_single_check(alt_32 i2c_base) +{ + bool bSuccess=TRUE; + alt_32 read_data; + + usleep(ACK_SLEEP_TIME); + read_data =IORD(i2c_base, 4); + if(read_data & 0x02) + bSuccess = FALSE; + if (bSuccess){ + usleep(ACK_SLEEP_TIME); + read_data =IORD(i2c_base, 4); + if(read_data & 0x80) + bSuccess = FALSE; + } + return bSuccess; +} + + +bool ACK_check(alt_32 i2c_base){ + bool bSuccess = FALSE; + int i=0; + + while(!bSuccess && i++ < 10){ + bSuccess = ACK_single_check(i2c_base); + } + + return bSuccess; +} + +bool OC_I2C_Write(alt_32 i2c_base,alt_u8 device_address,alt_u8 sub_address, alt_u8 *pData, int nWriteLength) +{ + //DWORD reg_data = 0x0; + int i; + + //set the tx reg audio chip dev address with write bit + if (!Write32_Data( i2c_base, 3,device_address)){ + printf("OC_I2C_Write error[0]\r\n"); + return FALSE; + } + //set STA and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x90)){ + printf("OC_I2C_Write error[1]\r\n"); + return FALSE; + } + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2C_Write error[2]\r\n"); + return FALSE; + } + // printf("\n receive ACK-device address! \n"); + + //set the txr reg data with reg address + 1 data MSB + if (!Write32_Data( i2c_base, 3,sub_address)){ + printf("OC_I2C_Write error[3]\r\n"); + return FALSE; + } + + //set WR bits(bit4) + if (!Write32_Data( i2c_base, 4,0x10)){ + printf("OC_I2C_Write error[4]\r\n"); + return FALSE; + } + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2C_Write error[5]\r\n"); + return FALSE; + } + // printf("\n receive ACK-reg address! \n"); + +#if 1 + for( i=nWriteLength-1;i>=0;i--){ + //set the txr reg data with the data + if (!Write32_Data( i2c_base, 3,*(pData+i))){ + printf("OC_I2C_Write error[6]\r\n"); + return FALSE; + } + + //set STO and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x10)){ + printf("OC_I2C_Write error[7]\r\n"); + return FALSE; + } + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2C_Write error[8]\r\n"); + return FALSE; + } + } + +#else + //set the txr reg data with the data + if (!Write32_Data( i2c_base, 3,data&0xff)) + return false; + + //set STO and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + return false; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)) + return false; +#endif + + if (!Write32_Data( i2c_base, 4,0x40)){ + printf("OC_I2C_Write error[9]\r\n"); + return FALSE; + } + //Sleep(10); + //OS_msleep(1); + usleep(SLEEP_TIME); + + // printf("\n receive ACK-data! \n"); + + return TRUE; + +} + + +bool ACK_judge_for_read(alt_32 i2c_base) +{ + bool bSuccess; + alt_32 this_data; + + // OS_msleep( SLEEP_TIME ); + usleep(ACK_SLEEP_TIME); + // while(this_data & 0x02) +// { +// this_data = Read32_Data ( hPCIe, i2c_base, 4); +// } + bSuccess = Read32_Data ( i2c_base, 4, &this_data); + if (bSuccess){ + if(this_data & 0x02) + bSuccess = FALSE; + } + //wait the rx ACK signal 0-valid + + return bSuccess; + +} + +bool OC_I2C_Read(alt_32 i2c_base,alt_u8 device_address,alt_u8 sub_address, alt_u8 *pData8, int nReadLength){ + + //DWORD reg_data = 0x0; + //BYTE data = 0x0; + alt_32 Data32; + int i; + + //set the tx reg audio chip dev address with write bit + IOWR( i2c_base, 3,device_address); + //set STA and WR bits(bit7 and bit4) + IOWR( i2c_base, 4,0x90); + //wait TIP bit go to 0 to end Tx + if (!ACK_check( i2c_base)){ + printf("OC_I2C_Read error[2]\r\n"); + return FALSE; + } + IOWR(i2c_base, 3,sub_address); + + //set WR bits(bit4) + IOWR( i2c_base, 4,0x10); + //wait TIP bit go to 0 to end Tx + if (!ACK_check( i2c_base)){ + printf("OC_I2C_Read error[5]\r\n"); + return FALSE; + } + // printf("\n read receive ACK-reg address! \n"); + + //read + //set the tx reg audio chip dev address with read bit 1 + + IOWR(i2c_base, 3,device_address|0x01); + + //set STA and WR bits(bit7 and bit4) + IOWR( i2c_base, 4,0x90); + + //wait TIP bit go to 0 to end Tx + if (!ACK_check( i2c_base)){ + printf("OC_I2C_Read error[8]\r\n"); + return FALSE; + } + + for(i=0;i 2Kb +bool OC_I2CL_Write(alt_32 i2c_base,alt_u8 device_address,alt_u16 sub_address,alt_u8 *pData, int nWriteLength) + { + //DWORD reg_data = 0x0; + alt_u8 AddrHigh, AddrLow; + //int count= 0; + + AddrHigh = (sub_address >> 8) & 0xFF; + AddrLow = sub_address & 0xFF; + + int i; + + //set the tx reg audio chip dev address with write bit + if (!Write32_Data( i2c_base, 3,device_address)) + return FALSE; + //set STA and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x90))//0x90 + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2CL_Write error[0]\r\n"); + return FALSE; + } + // printf("\n receive ACK-device address! \n"); + + //set the txr reg data with reg address + 1 data MSB + // reg_data = (sub_address << 1) & 0xFE; + //reg_data |= ((data >> 8) & 0x01); + if (!Write32_Data( i2c_base, 3,AddrHigh))//reg_data&0xff); + return FALSE; + + //set WR bits(bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2CL_Write error[1]\r\n"); + return FALSE; + } + // printf("\n receive ACK-reg high address! \n"); + + //set the txr reg data with reg address + 1 data MSB + if (!Write32_Data( i2c_base, 3,AddrLow))//reg_data&0xff); + return FALSE; + + //set WR bits(bit4) + Write32_Data( i2c_base, 4,0x10); + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2CL_Write error[2]\r\n"); + return FALSE; + } + // printf("\n receive ACK-reg low address! \n"); + +#if 1 + for( i=nWriteLength-1;i>=0;i--){ + //set the txr reg data with the other data 8 bit LSB + if (!Write32_Data( i2c_base, 3,*(pData+i))) + return FALSE; + + //set STO and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2CL_Write error[3]\r\n"); + return FALSE; + } + } +#else + //set the txr reg data with the other data 8 bit LSB + if (!Write32_Data( i2c_base, 3,data&0xff)) + return false; + + //set STO and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)) + return FALSE; + +#endif + if (!Write32_Data( i2c_base, 4,0x40)) + return FALSE; + + //OS_msleep(1); + usleep(SLEEP_TIME); + // printf("\n receive ACK-data! \n"); + + return TRUE; +} + +/* + +bool OC_I2CL_Read(alt_32 i2c_base,alt_u8 device_address,int sub_address, alt_u8 *pData8){ + + //DWORD reg_data = 0x0; + alt_32 Data32;// = 0x0; + + alt_u8 AddrHigh, AddrLow; + + AddrHigh = (sub_address >> 8) & 0xFF; + AddrLow = sub_address & 0xFF; + + + //set the tx reg audio chip dev address with write bit + if (!Write32_Data( i2c_base, 3,device_address)) + return FALSE; + //set STA and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x90)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)) + return FALSE; + // printf("\n receive ACK-device address! \n"); + + + //set the txr reg data with reg address + 0 + + if (!Write32_Data( i2c_base, 3,AddrHigh))//reg_data&0xff); + return FALSE; + + //set WR bits(bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)) + return FALSE; +// printf("\n read receive ACK-reg High address! \n"); + + //set the txr reg data with reg address + 0 + if (!Write32_Data( i2c_base, 3,AddrLow)) //;//reg_data&0xff); + return FALSE; + + //set WR bits(bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)) + return FALSE; + + // printf("\n read receive ACK-reg Low address! \n"); + + //read + //set the tx reg audio chip dev address with read bit 1 + if (!Write32_Data( i2c_base, 3,device_address|0x01)) + return FALSE; + + //set STA and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x90)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)) + return FALSE; +// printf("\n read receive ACK-device address(read)! \n"); + + //read the rxr data + + + //set the RD and ACK bit(bit5 and bit3) + if (!Write32_Data( i2c_base, 4,0x28)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_judge_for_read( i2c_base)) + return FALSE; + +// printf("\n read receive ACK-device address(read)! \n"); + if (!Read32_Data ( i2c_base, 3, &Data32)) + return FALSE; + + *pData8 = Data32 & 0xff; + + + if (!Write32_Data( i2c_base, 4,0x40)) + return FALSE; + + //OS_msleep(1); + usleep(SLEEP_TIME); + + return TRUE; + +} */ + +bool OC_I2CL_Read(alt_32 i2c_base,alt_u8 device_address, alt_u16 sub_address, alt_u8 *pData8, int nReadLength){ + + //DWORD reg_data = 0x0; + alt_32 Data32;// = 0x0; + int i; + + alt_u8 AddrHigh, AddrLow; + alt_u8 DataHigh, DataLow; + + AddrHigh = (sub_address >> 8) & 0xFF; + AddrLow = sub_address & 0xFF; + + + //set the tx reg audio chip dev address with write bit + if (!Write32_Data( i2c_base, 3,device_address)) + return FALSE; + + //set STA and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x90)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2CL_Read error[0]\r\n"); + return FALSE; + } + // printf("\n receive ACK-device address! \n"); + + + //set the txr reg data with reg address + 0 + + if (!Write32_Data( i2c_base, 3,AddrHigh))//reg_data&0xff); + return FALSE; + + //set WR bits(bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2CL_Read error[1]\r\n"); + return FALSE; + } +// printf("\n read receive ACK-reg High address! \n"); + + //set the txr reg data with reg address + 0 + if (!Write32_Data( i2c_base, 3,AddrLow)) //;//reg_data&0xff); + return FALSE; + //set WR bits(bit4) + if (!Write32_Data( i2c_base, 4,0x10)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2CL_Read error[2]\r\n"); + return FALSE; + } + + // printf("\n read receive ACK-reg Low address! \n"); + + //read + //set the tx reg audio chip dev address with read bit 1 + if (!Write32_Data( i2c_base, 3,device_address|0x01)) + return FALSE; + + //set STA and WR bits(bit7 and bit4) + if (!Write32_Data( i2c_base, 4,0x90)) + return FALSE; + + //wait TIP bit go to 0 to end Tx + if(!ACK_check( i2c_base)){ + printf("OC_I2CL_Read error[3]\r\n"); + return FALSE; + } +// printf("\n read receive ACK-device address(read)! \n"); + + //read the rxr data + +#if 1 + for(i=0;i /c/dir). This will ensture +# paths are readable by GNU Make. +# +# If COMSPEC/ComSpec is not defined, Make is launched from linux, and no +# adjustment is necessary +# +#------------------------------------------------------------------------------ + +ifndef COMSPEC +ifdef ComSpec +COMSPEC = $(ComSpec) +endif # ComSpec +endif # COMSPEC + +ifdef COMSPEC # if Windows OS + +ifeq ($(MAKE_VERSION),3.81) +# +# adjust-path/adjust-path-mixed for Mingw Gnu Make on Windows +# +# Example Usage: +# $(call adjust-path,c:/aaa/bbb) => /c/aaa/bbb +# $(call adjust-path-mixed,/c/aaa/bbb) => c:/aaa/bbb +# $(call adjust-path-mixed,/cygdrive/c/aaa/bbb) => c:/aaa/bbb +# + +# +# adjust-path +# - converts back slash characters into forward slashes +# - if input arg ($1) is an empty string then return the empty string +# - if input arg ($1) does not contain the string ":/", then return input arg +# - using sed, convert mixed path [c:/...] into mingw path [/c/...] +define adjust-path +$(strip \ +$(if $1,\ +$(if $(findstring :/,$(subst \,/,$1)),\ +$(shell echo $(subst \,/,$1) | sed -e 's,^\([a-zA-Z]\):/,/\1/,'),\ +$(subst \,/,$1)))) +endef + +# +# adjust-path-mixed +# - converts back slash characters into forward slashes +# - if input arg ($1) is an empty string then return the empty string +# - if input arg ($1) does not begin with a forward slash '/' char, then +# return input arg +# - using sed, convert mingw path [/c/...] or cygwin path [/c/cygdrive/...] +# into a mixed path [c:/...] +define adjust-path-mixed +$(strip \ +$(if $1,\ +$(if $(findstring $(subst \,/,$1),$(patsubst /%,%,$(subst \,/,$1))),\ +$(subst \,/,$1),\ +$(shell echo $(subst \,/,$1) | sed -e 's,^/cygdrive/\([a-zA-Z]\)/,\1:/,' -e 's,^/\([a-zA-Z]\)/,\1:/,')))) +endef + +else # MAKE_VERSION != 3.81 (MAKE_VERSION == 3.80 or MAKE_VERSION == 3.79) +# +# adjust-path for Cygwin Gnu Make +# $(call adjust-path,c:/aaa/bbb) = /cygdrive/c/aaa/bbb +# $(call adjust-path-mixed,/cygdrive/c/aaa/bbb) = c:/aaa/bbb +# +adjust-path = $(if $1,$(shell cygpath -u "$1"),) +adjust-path-mixed = $(if $1,$(shell cygpath -m "$1"),) +endif + +else # !COMSPEC + +adjust-path = $1 +adjust-path-mixed = $1 + +endif # COMSPEC + + +#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +# GENERATED SETTINGS START v +#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + +#START GENERATED +ACTIVE_BUILD_CONFIG := default +BUILD_CONFIGS := default + +# The following TYPE comment allows tools to identify the 'type' of target this +# makefile is associated with. +# TYPE: APP_MAKEFILE + +# This following VERSION comment indicates the version of the tool used to +# generate this makefile. A makefile variable is provided for VERSION as well. +# ACDS_VERSION: 16.0 +ACDS_VERSION := 16.0 + +# This following BUILD_NUMBER comment indicates the build number of the tool +# used to generate this makefile. +# BUILD_NUMBER: 222 + +# Define path to the application ELF. +# It may be used by the makefile fragments so is defined before including them. +# +ELF := D8M_Camera_Test.elf + +# Paths to C, C++, and assembly source files. +C_SRCS += I2C_core.c +C_SRCS += auto_focus.c +C_SRCS += main.c +C_SRCS += mipi_bridge_config.c +C_SRCS += mipi_camera_config.c +C_SRCS += queue.c +CXX_SRCS := +ASM_SRCS := + + +# Path to root of object file tree. +OBJ_ROOT_DIR := obj + +# Options to control objdump. +CREATE_OBJDUMP := 1 +OBJDUMP_INCLUDE_SOURCE := 1 +OBJDUMP_FULL_CONTENTS := 0 + +# Options to enable/disable optional files. +CREATE_ELF_DERIVED_FILES := 0 +CREATE_LINKER_MAP := 1 + +# Common arguments for ALT_CFLAGSs +APP_CFLAGS_DEFINED_SYMBOLS := +APP_CFLAGS_UNDEFINED_SYMBOLS := +APP_CFLAGS_OPTIMIZATION := -O0 +APP_CFLAGS_DEBUG_LEVEL := -g +APP_CFLAGS_WARNINGS := -Wall +APP_CFLAGS_USER_FLAGS := + +APP_ASFLAGS_USER := +APP_LDFLAGS_USER := + +# Linker options that have default values assigned later if not +# assigned here. +LINKER_SCRIPT := +CRT0 := +SYS_LIB := + +# Define path to the root of the BSP. +BSP_ROOT_DIR := ../D8M_Camera_Test_bsp/ + +# List of application specific include directories, library directories and library names +APP_INCLUDE_DIRS := +APP_LIBRARY_DIRS := +APP_LIBRARY_NAMES := + +# Pre- and post- processor settings. +BUILD_PRE_PROCESS := +BUILD_POST_PROCESS := + +QUARTUS_PROJECT_DIR := ../../ + + +#END GENERATED + +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# GENERATED SETTINGS END ^ +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +#------------------------------------------------------------------------------ +# DEFAULT TARGET +#------------------------------------------------------------------------------ + +# Define the variable used to echo output if not already defined. +ifeq ($(ECHO),) +ECHO := echo +endif + +# Put "all" rule before included makefile fragments because they may +# define rules and we don't want one of those to become the default rule. +.PHONY : all + +all: + @$(ECHO) [$(APP_NAME) build complete] + +all : build_pre_process libs app build_post_process + + +#------------------------------------------------------------------------------ +# VARIABLES DEPENDENT ON GENERATED CONTENT +#------------------------------------------------------------------------------ + +# Define object file directory per build configuration +CONFIG_OBJ_DIR := $(OBJ_ROOT_DIR)/$(ACTIVE_BUILD_CONFIG) + +ifeq ($(BSP_ROOT_DIR),) +$(error Edit Makefile and provide a value for BSP_ROOT_DIR) +endif + +ifeq ($(wildcard $(BSP_ROOT_DIR)),) +$(error BSP directory does not exist: $(BSP_ROOT_DIR)) +endif + +# Define absolute path to the root of the BSP. +ABS_BSP_ROOT_DIR := $(call adjust-path-mixed,$(shell cd "$(BSP_ROOT_DIR)"; pwd)) + +# Include makefile fragments. Define variable ALT_LIBRARY_ROOT_DIR before +# including each makefile fragment so that it knows the path to itself. +BSP_INCLUDE_FILE := $(BSP_ROOT_DIR)/public.mk +ALT_LIBRARY_ROOT_DIR := $(BSP_ROOT_DIR) +include $(BSP_INCLUDE_FILE) +# C2H will need this to touch the BSP public.mk and avoid the sopc file +# out-of-date error during a BSP make +ABS_BSP_INCLUDE_FILE := $(ABS_BSP_ROOT_DIR)/public.mk + + +ifneq ($(WARNING.SMALL_STACK_SIZE),) +# This WARNING is here to protect you from unknowingly using a very small stack +# If the warning is set, increase your stack size or enable the BSP small stack +# setting to eliminate the warning +$(warning WARNING: $(WARNING.SMALL_STACK_SIZE)) +endif + +# If the BSP public.mk indicates that ALT_SIM_OPTIMIZE is set, rename the ELF +# by prefixing it with RUN_ON_HDL_SIMULATOR_ONLY_. +ifneq ($(filter -DALT_SIM_OPTIMIZE,$(ALT_CPPFLAGS)),) +ELF := RUN_ON_HDL_SIMULATOR_ONLY_$(ELF) +endif + +# If the BSP public.mk indicates that ALT_PROVIDE_GMON is set, add option to +# download_elf target +ifneq ($(filter -DALT_PROVIDE_GMON,$(ALT_CPPFLAGS)),) +GMON_OUT_FILENAME := gmon.out +WRITE_GMON_OPTION := --write-gmon $(GMON_OUT_FILENAME) +endif + +# Name of ELF application. +APP_NAME := $(basename $(ELF)) + +# Set to defaults if variables not already defined in settings. +ifeq ($(LINKER_SCRIPT),) +LINKER_SCRIPT := $(BSP_LINKER_SCRIPT) +endif +ifeq ($(CRT0),) +CRT0 := $(BSP_CRT0) +endif +ifeq ($(SYS_LIB),) +SYS_LIB := $(BSP_SYS_LIB) +endif + +OBJDUMP_NAME := $(APP_NAME).objdump +OBJDUMP_FLAGS := --disassemble --syms --all-header +ifeq ($(OBJDUMP_INCLUDE_SOURCE),1) +OBJDUMP_FLAGS += --source +endif +ifeq ($(OBJDUMP_FULL_CONTENTS),1) +OBJDUMP_FLAGS += --full-contents +endif + +# Create list of linker dependencies (*.a files). +APP_LDDEPS := $(ALT_LDDEPS) $(LDDEPS) + +# Take lists and add required prefixes. +APP_INC_DIRS := $(addprefix -I, $(ALT_INCLUDE_DIRS) $(APP_INCLUDE_DIRS) $(INC_DIRS)) +ASM_INC_PREFIX := -Wa,-I +APP_ASM_INC_DIRS := $(addprefix $(ASM_INC_PREFIX), $(ALT_INCLUDE_DIRS) $(APP_INCLUDE_DIRS) $(INC_DIRS)) +APP_LIB_DIRS := $(addprefix -L, $(ALT_LIBRARY_DIRS) $(APP_LIBRARY_DIRS) $(LIB_DIRS)) +APP_LIBS := $(addprefix -l, $(ALT_LIBRARY_NAMES) $(APP_LIBRARY_NAMES) $(LIBS)) + +ifneq ($(AVOID_NIOS2_GCC3_OPTIONS),) + +# +# Avoid Nios II GCC 3.X options. +# + +# Detect if small newlib C library is requested. +# If yes, remove the -msmallc option because it is +# now handled by other means. +ifneq ($(filter -msmallc,$(ALT_LDFLAGS)),) + ALT_LDFLAGS := $(filter-out -msmallc,$(ALT_LDFLAGS)) + ALT_C_LIBRARY := smallc +else + ALT_C_LIBRARY := c +endif + +# Put each BSP dependent library in a group to avoid circular dependencies. +APP_BSP_DEP_LIBS := $(foreach l,$(ALT_BSP_DEP_LIBRARY_NAMES),-Wl,--start-group -l$(ALT_C_LIBRARY) -lgcc -lm -l$(l) -Wl,--end-group) + +else # !AVOID_NIOS2_GCC3_OPTIONS + +# +# Use Nios II GCC 3.X options. +# +ALT_BSP_DEP_LIBRARY_NAMES += $(ALT_BSP_DEP_LIBRARY_NAMES) m +APP_BSP_DEP_LIBS := $(addprefix -msys-lib=, $(ALT_BSP_DEP_LIBRARY_NAMES)) + +endif # !AVOID_NIOS2_GCC3_OPTIONS + +# Arguments for the C preprocessor, C/C++ compiler, assembler, and linker. +APP_CFLAGS := $(APP_CFLAGS_DEFINED_SYMBOLS) \ + $(APP_CFLAGS_UNDEFINED_SYMBOLS) \ + $(APP_CFLAGS_OPTIMIZATION) \ + $(APP_CFLAGS_DEBUG_LEVEL) \ + $(APP_CFLAGS_WARNINGS) \ + $(APP_CFLAGS_USER_FLAGS) \ + $(ALT_CFLAGS) \ + $(CFLAGS) + +# Arguments only for the C++ compiler. +APP_CXXFLAGS := $(ALT_CXXFLAGS) $(CXXFLAGS) + +# Arguments only for the C preprocessor. +# Prefix each include directory with -I. +APP_CPPFLAGS := $(APP_INC_DIRS) \ + $(ALT_CPPFLAGS) \ + $(CPPFLAGS) + +# Arguments only for the assembler. +APP_ASFLAGS := $(APP_ASM_INC_DIRS) \ + $(ALT_ASFLAGS) \ + $(APP_ASFLAGS_USER) \ + $(ASFLAGS) + +# Arguments only for the linker. +APP_LDFLAGS := $(APP_LDFLAGS_USER) + +ifneq ($(LINKER_SCRIPT),) +APP_LDFLAGS += -T'$(LINKER_SCRIPT)' +endif + +ifneq ($(AVOID_NIOS2_GCC3_OPTIONS),) + +# Avoid Nios II GCC 3.x options. +ifneq ($(CRT0),) +APP_LDFLAGS += $(CRT0) +endif + +# The equivalent of the -msys-lib option is provided +# by the GROUP() command in the linker script. +# Note this means the SYS_LIB variable is now ignored. + +else # !AVOID_NIOS2_GCC3_OPTIONS + +# Use Nios II GCC 3.x options. +ifneq ($(CRT0),) +APP_LDFLAGS += -msys-crt0='$(CRT0)' +endif +ifneq ($(SYS_LIB),) +APP_LDFLAGS += -msys-lib=$(SYS_LIB) +endif + +endif # !AVOID_NIOS2_GCC3_OPTIONS + +APP_LDFLAGS += \ + $(APP_LIB_DIRS) \ + $(ALT_LDFLAGS) \ + $(LDFLAGS) + +LINKER_MAP_NAME := $(APP_NAME).map +ifeq ($(CREATE_LINKER_MAP), 1) +APP_LDFLAGS += -Wl,-Map=$(LINKER_MAP_NAME) +endif + +# QUARTUS_PROJECT_DIR and SOPC_NAME need to be defined if you want the +# mem_init_install target of the mem_init.mk (located in the associated BSP) +# to know how to copy memory initialization files (e.g. .dat, .hex) into +# directories required for Quartus compilation or RTL simulation. + +# Defining QUARTUS_PROJECT_DIR causes mem_init_install to copy memory +# initialization files into your Quartus project directory. This is required +# to provide the initial memory contents of FPGA memories that can be +# initialized by the programming file (.sof) or Hardcopy ROMs. It is also used +# for VHDL simulation of on-chip memories. + +# Defining SOPC_NAME causes the mem_init_install target to copy memory +# initialization files into your RTL simulation directory. This is required +# to provide the initial memory contents of all memories that can be +# initialized by RTL simulation. This variable should be set to the same name +# as your SOPC Builder system name. For example, if you have a system called +# "foo.sopc", this variable should be set to "foo". + +# If SOPC_NAME is not set and QUARTUS_PROJECT_DIR is set, then derive SOPC_NAME. +ifeq ($(SOPC_NAME),) +ifneq ($(QUARTUS_PROJECT_DIR),) +SOPC_NAME := $(basename $(notdir $(wildcard $(QUARTUS_PROJECT_DIR)/*.sopcinfo))) +endif +endif + +# Defining JDI_FILE is required to specify the JTAG Debug Information File +# path. This file is generated by Quartus, and is needed along with the +# .sopcinfo file to resolve processor instance ID's from names in a multi-CPU +# systems. For multi-CPU systems, the processor instance ID is used to select +# from multiple CPU's during ELF download. + +# Both JDI_FILE and SOPCINFO_FILE are provided by the BSP if they found during +# BSP creation. If JDI_FILE is not set and QUARTUS_PROJECT_DIR is set, then +# derive JDI_FILE. We do not attempt to derive SOPCINFO_FILE since there may be +# multiple .sopcinfo files in a Quartus project. +ifeq ($(JDI_FILE),) +ifneq ($(QUARTUS_PROJECT_DIR),) +JDI_FILE := $(firstword $(wildcard $(QUARTUS_PROJECT_DIR)/output_files/*.jdi) $(wildcard $(QUARTUS_PROJECT_DIR)/*.jdi)) +endif +endif + +# Path to root runtime directory used for hdl simulation +RUNTIME_ROOT_DIR := $(CONFIG_OBJ_DIR)/runtime + + + +#------------------------------------------------------------------------------ +# MAKEFILE INCLUDES DEPENDENT ON GENERATED CONTENT +#------------------------------------------------------------------------------ +# mem_init.mk is a generated makefile fragment. This file defines all targets +# used to generate HDL initialization simulation files and pre-initialized +# onchip memory files. +MEM_INIT_FILE := $(BSP_ROOT_DIR)/mem_init.mk +include $(MEM_INIT_FILE) + +# Create list of object files to be built using the list of source files. +# The source file hierarchy is preserved in the object tree. +# The supported file extensions are: +# +# .c - for C files +# .cxx .cc .cpp - for C++ files +# .S .s - for assembler files +# +# Handle source files specified by --src-dir & --src-rdir differently, to +# save some processing time in calling the adjust-path macro. + +OBJ_LIST_C := $(patsubst %.c,%.o,$(filter %.c,$(C_SRCS))) +OBJ_LIST_CPP := $(patsubst %.cpp,%.o,$(filter %.cpp,$(CXX_SRCS))) +OBJ_LIST_CXX := $(patsubst %.cxx,%.o,$(filter %.cxx,$(CXX_SRCS))) +OBJ_LIST_CC := $(patsubst %.cc,%.o,$(filter %.cc,$(CXX_SRCS))) +OBJ_LIST_S := $(patsubst %.S,%.o,$(filter %.S,$(ASM_SRCS))) +OBJ_LIST_SS := $(patsubst %.s,%.o,$(filter %.s,$(ASM_SRCS))) + +OBJ_LIST := $(sort $(OBJ_LIST_C) $(OBJ_LIST_CPP) $(OBJ_LIST_CXX) \ + $(OBJ_LIST_CC) $(OBJ_LIST_S) $(OBJ_LIST_SS)) + +SDIR_OBJ_LIST_C := $(patsubst %.c,%.o,$(filter %.c,$(SDIR_C_SRCS))) +SDIR_OBJ_LIST_CPP := $(patsubst %.cpp,%.o,$(filter %.cpp,$(SDIR_CXX_SRCS))) +SDIR_OBJ_LIST_CXX := $(patsubst %.cxx,%.o,$(filter %.cxx,$(SDIR_CXX_SRCS))) +SDIR_OBJ_LIST_CC := $(patsubst %.cc,%.o,$(filter %.cc,$(SDIR_CXX_SRCS))) +SDIR_OBJ_LIST_S := $(patsubst %.S,%.o,$(filter %.S,$(SDIR_ASM_SRCS))) +SDIR_OBJ_LIST_SS := $(patsubst %.s,%.o,$(filter %.s,$(SDIR_ASM_SRCS))) + +SDIR_OBJ_LIST := $(sort $(SDIR_OBJ_LIST_C) $(SDIR_OBJ_LIST_CPP) \ + $(SDIR_OBJ_LIST_CXX) $(SDIR_OBJ_LIST_CC) $(SDIR_OBJ_LIST_S) \ + $(SDIR_OBJ_LIST_SS)) + +# Relative-pathed objects that being with "../" are handled differently. +# +# Regular objects are created as +# $(CONFIG_OBJ_DIR)//.o +# where the path structure is maintained under the obj directory. This +# applies for both absolute and relative paths; in the absolute path +# case this means the entire source path will be recreated under the obj +# directory. This is done to allow two source files with the same name +# to be included as part of the project. +# +# Note: On Cygwin, the path recreated under the obj directory will be +# the cygpath -u output path. +# +# Relative-path objects that begin with "../" cause problems under this +# scheme, as $(CONFIG_OBJ_DIR)/..// can potentially put the object +# files anywhere in the system, creating clutter and polluting the source tree. +# As such, their paths are flattened - the object file created will be +# $(CONFIG_OBJ_DIR)/.o. Due to this, two files specified with +# "../" in the beginning cannot have the same name in the project. VPATH +# will be set for these sources to allow make to relocate the source file +# via %.o rules. +# +# The following lines separate the object list into the flatten and regular +# lists, and then handles them as appropriate. + +FLATTEN_OBJ_LIST := $(filter ../%,$(OBJ_LIST)) +FLATTEN_APP_OBJS := $(addprefix $(CONFIG_OBJ_DIR)/,$(notdir $(FLATTEN_OBJ_LIST))) + +REGULAR_OBJ_LIST := $(filter-out $(FLATTEN_OBJ_LIST),$(OBJ_LIST)) +REGULAR_OBJ_LIST_C := $(filter $(OBJ_LIST_C),$(REGULAR_OBJ_LIST)) +REGULAR_OBJ_LIST_CPP := $(filter $(OBJ_LIST_CPP),$(REGULAR_OBJ_LIST)) +REGULAR_OBJ_LIST_CXX := $(filter $(OBJ_LIST_CXX),$(REGULAR_OBJ_LIST)) +REGULAR_OBJ_LIST_CC := $(filter $(OBJ_LIST_CC),$(REGULAR_OBJ_LIST)) +REGULAR_OBJ_LIST_S := $(filter $(OBJ_LIST_S),$(REGULAR_OBJ_LIST)) +REGULAR_OBJ_LIST_SS := $(filter $(OBJ_LIST_SS),$(REGULAR_OBJ_LIST)) + +FLATTEN_SDIR_OBJ_LIST := $(filter ../%,$(SDIR_OBJ_LIST)) +FLATTEN_SDIR_APP_OBJS := $(addprefix $(CONFIG_OBJ_DIR)/,$(notdir $(FLATTEN_SDIR_OBJ_LIST))) + +REGULAR_SDIR_OBJ_LIST := $(filter-out $(FLATTEN_SDIR_OBJ_LIST),$(SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_C := $(filter $(SDIR_OBJ_LIST_C),$(REGULAR_SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_CPP := $(filter $(SDIR_OBJ_LIST_CPP),$(REGULAR_SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_CXX := $(filter $(SDIR_OBJ_LIST_CXX),$(REGULAR_SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_CC := $(filter $(SDIR_OBJ_LIST_CC),$(REGULAR_SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_S := $(filter $(SDIR_OBJ_LIST_S),$(REGULAR_SDIR_OBJ_LIST)) +REGULAR_SDIR_OBJ_LIST_SS := $(filter $(SDIR_OBJ_LIST_SS),$(REGULAR_SDIR_OBJ_LIST)) + +VPATH := $(sort $(dir $(FLATTEN_OBJ_LIST)) $(dir $(FLATTEN_SDIR_OBJ_LIST))) + +APP_OBJS_C := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_C) \ + $(foreach s,$(REGULAR_OBJ_LIST_C),$(call adjust-path,$s))) + +APP_OBJS_CPP := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_CPP) \ + $(foreach s,$(REGULAR_OBJ_LIST_CPP),$(call adjust-path,$s))) + +APP_OBJS_CXX := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_CXX) \ + $(foreach s,$(REGULAR_OBJ_LIST_CXX),$(call adjust-path,$s))) + +APP_OBJS_CC := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_CC) \ + $(foreach s,$(REGULAR_OBJ_LIST_CC),$(call adjust-path,$s))) + +APP_OBJS_S := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_S) \ + $(foreach s,$(REGULAR_OBJ_LIST_S),$(call adjust-path,$s))) + +APP_OBJS_SS := $(addprefix $(CONFIG_OBJ_DIR)/,\ + $(REGULAR_SDIR_OBJ_LIST_SS) \ + $(foreach s,$(REGULAR_OBJ_LIST_SS),$(call adjust-path,$s))) + +APP_OBJS := $(APP_OBJS_C) $(APP_OBJS_CPP) $(APP_OBJS_CXX) $(APP_OBJS_CC) \ + $(APP_OBJS_S) $(APP_OBJS_SS) \ + $(FLATTEN_APP_OBJS) $(FLATTEN_SDIR_APP_OBJS) + +# Add any extra user-provided object files. +APP_OBJS += $(OBJS) + +# Create list of dependancy files for each object file. +APP_DEPS := $(APP_OBJS:.o=.d) + +# Patch the Elf file with system specific information + +# Patch the Elf with the name of the sopc system +ifneq ($(SOPC_NAME),) +ELF_PATCH_FLAG += --sopc_system_name $(SOPC_NAME) +endif + +# Patch the Elf with the absolute path to the Quartus Project Directory +ifneq ($(QUARTUS_PROJECT_DIR),) +ABS_QUARTUS_PROJECT_DIR := $(call adjust-path-mixed,$(shell cd "$(QUARTUS_PROJECT_DIR)"; pwd)) +ELF_PATCH_FLAG += --quartus_project_dir "$(ABS_QUARTUS_PROJECT_DIR)" +endif + +# Patch the Elf and download args with the JDI_FILE if specified +ifneq ($(wildcard $(JDI_FILE)),) +ELF_PATCH_FLAG += --jdi $(JDI_FILE) +DOWNLOAD_JDI_FLAG := --jdi $(JDI_FILE) +endif + +# Patch the Elf with the SOPCINFO_FILE if specified +ifneq ($(wildcard $(SOPCINFO_FILE)),) +ELF_PATCH_FLAG += --sopcinfo $(SOPCINFO_FILE) +endif + +# Use the DOWNLOAD_CABLE variable to specify which JTAG cable to use. +# This is not needed if you only have one cable. +ifneq ($(DOWNLOAD_CABLE),) +DOWNLOAD_CABLE_FLAG := --cable '$(DOWNLOAD_CABLE)' +endif + + +#------------------------------------------------------------------------------ +# BUILD PRE/POST PROCESS +#------------------------------------------------------------------------------ +build_pre_process : + $(BUILD_PRE_PROCESS) + +build_post_process : + $(BUILD_POST_PROCESS) + +.PHONY: build_pre_process build_post_process + + +#------------------------------------------------------------------------------ +# TOOLS +#------------------------------------------------------------------------------ + +# +# Set tool default variables if not already defined. +# If these are defined, they would typically be defined in an +# included makefile fragment. +# +ifeq ($(DEFAULT_CROSS_COMPILE),) +DEFAULT_CROSS_COMPILE := nios2-elf- +endif + +ifeq ($(DEFAULT_STACKREPORT),) +DEFAULT_STACKREPORT := nios2-stackreport +endif + +ifeq ($(DEFAULT_DOWNLOAD),) +DEFAULT_DOWNLOAD := nios2-download +endif + +ifeq ($(DEFAULT_FLASHPROG),) +DEFAULT_FLASHPROG := nios2-flash-programmer +endif + +ifeq ($(DEFAULT_ELFPATCH),) +DEFAULT_ELFPATCH := nios2-elf-insert +endif + +ifeq ($(DEFAULT_RM),) +DEFAULT_RM := rm -f +endif + +ifeq ($(DEFAULT_CP),) +DEFAULT_CP := cp -f +endif + +ifeq ($(DEFAULT_MKDIR),) +DEFAULT_MKDIR := mkdir -p +endif + +# +# Set tool variables to defaults if not already defined. +# If these are defined, they would typically be defined by a +# setting in the generated portion of this makefile. +# +ifeq ($(CROSS_COMPILE),) +CROSS_COMPILE := $(DEFAULT_CROSS_COMPILE) +endif + +ifeq ($(origin CC),default) +CC := $(CROSS_COMPILE)gcc -xc +endif + +ifeq ($(origin CXX),default) +CXX := $(CROSS_COMPILE)gcc -xc++ +endif + +ifeq ($(origin AS),default) +AS := $(CROSS_COMPILE)gcc +endif + +ifeq ($(origin AR),default) +AR := $(CROSS_COMPILE)ar +endif + +ifeq ($(origin LD),default) +LD := $(CROSS_COMPILE)g++ +endif + +ifeq ($(origin RM),default) +RM := $(DEFAULT_RM) +endif + +ifeq ($(NM),) +NM := $(CROSS_COMPILE)nm +endif + +ifeq ($(CP),) +CP := $(DEFAULT_CP) +endif + +ifeq ($(OBJDUMP),) +OBJDUMP := $(CROSS_COMPILE)objdump +endif + +ifeq ($(OBJCOPY),) +OBJCOPY := $(CROSS_COMPILE)objcopy +endif + +ifeq ($(STACKREPORT),) +STACKREPORT := $(DEFAULT_STACKREPORT) --prefix $(CROSS_COMPILE) +else +DISABLE_STACKREPORT := 1 +endif + +ifeq ($(DOWNLOAD),) +DOWNLOAD := $(DEFAULT_DOWNLOAD) +endif + +ifeq ($(FLASHPROG),) +FLASHPROG := $(DEFAULT_FLASHPROG) +endif + +ifeq ($(ELFPATCH),) +ELFPATCH := $(DEFAULT_ELFPATCH) +endif + +ifeq ($(MKDIR),) +MKDIR := $(DEFAULT_MKDIR) +endif + +#------------------------------------------------------------------------------ +# PATTERN RULES TO BUILD OBJECTS +#------------------------------------------------------------------------------ + +define compile.c +@$(ECHO) Info: Compiling $< to $@ +@$(MKDIR) $(@D) +$(CC) -MP -MMD -c $(APP_CPPFLAGS) $(APP_CFLAGS) -o $@ $< +$(CC_POST_PROCESS) +endef + +define compile.cpp +@$(ECHO) Info: Compiling $< to $@ +@$(MKDIR) $(@D) +$(CXX) -MP -MMD -c $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< +$(CXX_POST_PROCESS) +endef + +# If assembling with the compiler, ensure "-Wa," is prepended to all APP_ASFLAGS +ifeq ($(AS),$(patsubst %as,%,$(AS))) +COMMA := , +APP_ASFLAGS := $(filter-out $(APP_CFLAGS),$(addprefix -Wa$(COMMA),$(patsubst -Wa$(COMMA)%,%,$(APP_ASFLAGS)))) +endif + +define compile.s +@$(ECHO) Info: Assembling $< to $@ +@$(MKDIR) $(@D) +$(AS) -MP -MMD -c $(APP_CPPFLAGS) $(APP_CFLAGS) $(APP_ASFLAGS) -o $@ $< +$(AS_POST_PROCESS) +endef + +ifeq ($(MAKE_VERSION),3.81) +.SECONDEXPANSION: + +$(APP_OBJS_C): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.c) + $(compile.c) + +$(APP_OBJS_CPP): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.cpp) + $(compile.cpp) + +$(APP_OBJS_CC): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.cc) + $(compile.cpp) + +$(APP_OBJS_CXX): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.cxx) + $(compile.cpp) + +$(APP_OBJS_S): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.S) + $(compile.s) + +$(APP_OBJS_SS): $(CONFIG_OBJ_DIR)/%.o: $$(call adjust-path-mixed,%.s) + $(compile.s) + +endif # MAKE_VERSION != 3.81 + +$(CONFIG_OBJ_DIR)/%.o: %.c + $(compile.c) + +$(CONFIG_OBJ_DIR)/%.o: %.cpp + $(compile.cpp) + +$(CONFIG_OBJ_DIR)/%.o: %.cc + $(compile.cpp) + +$(CONFIG_OBJ_DIR)/%.o: %.cxx + $(compile.cpp) + +$(CONFIG_OBJ_DIR)/%.o: %.S + $(compile.s) + +$(CONFIG_OBJ_DIR)/%.o: %.s + $(compile.s) + + +#------------------------------------------------------------------------------ +# PATTERN RULES TO INTERMEDIATE FILES +#------------------------------------------------------------------------------ + +$(CONFIG_OBJ_DIR)/%.s: %.c + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CC) -S $(APP_CPPFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.s: %.cpp + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -S $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.s: %.cc + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -S $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.s: %.cxx + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -S $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.i: %.c + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CC) -E $(APP_CPPFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.i: %.cpp + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -E $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.i: %.cc + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -E $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + +$(CONFIG_OBJ_DIR)/%.i: %.cxx + @$(ECHO) Info: Compiling $< to $@ + @$(MKDIR) $(@D) + $(CXX) -E $(APP_CPPFLAGS) $(APP_CXXFLAGS) $(APP_CFLAGS) -o $@ $< + + +#------------------------------------------------------------------------------ +# TARGET RULES +#------------------------------------------------------------------------------ + +.PHONY : help +help : + @$(ECHO) "Summary of Makefile targets" + @$(ECHO) " Build targets:" + @$(ECHO) " all (default) - Application and all libraries (including BSP)" + @$(ECHO) " bsp - Just the BSP" + @$(ECHO) " libs - All libraries (including BSP)" + @$(ECHO) " flash - All flash files" + @$(ECHO) " mem_init_generate - All memory initialization files" + @$(ECHO) + @$(ECHO) " Clean targets:" + @$(ECHO) " clean_all - Application and all libraries (including BSP)" + @$(ECHO) " clean - Just the application" + @$(ECHO) " clean_bsp - Just the BSP" + @$(ECHO) " clean_libs - All libraries (including BSP)" + @$(ECHO) + @$(ECHO) " Run targets:" + @$(ECHO) " download-elf - Download and run your elf executable" + @$(ECHO) " program-flash - Program flash contents to the board" + +# Handy rule to skip making libraries and just make application. +.PHONY : app +app : $(ELF) + +ifeq ($(CREATE_OBJDUMP), 1) +app : $(OBJDUMP_NAME) +endif + +ifeq ($(CREATE_ELF_DERIVED_FILES),1) +app : elf_derived_files +endif + +.PHONY: elf_derived_files +elf_derived_files: default_mem_init + +# Handy rule for making just the BSP. +.PHONY : bsp +bsp : + @$(ECHO) Info: Building $(BSP_ROOT_DIR) + @$(MAKE) --no-print-directory -C $(BSP_ROOT_DIR) + + +# Make sure all makeable libraries (including the BSP) are up-to-date. +LIB_TARGETS := $(patsubst %,%-recurs-make-lib,$(MAKEABLE_LIBRARY_ROOT_DIRS)) + +.PHONY : libs +libs : $(LIB_TARGETS) + +ifneq ($(strip $(LIB_TARGETS)),) +$(LIB_TARGETS): %-recurs-make-lib: + @$(ECHO) Info: Building $* + $(MAKE) --no-print-directory -C $* +endif + +ifneq ($(strip $(APP_LDDEPS)),) +$(APP_LDDEPS): libs + @true +endif + +# Rules to force your project to rebuild or relink +# .force_relink file will cause any application that depends on this project to relink +# .force_rebuild file will cause this project to rebuild object files +# .force_rebuild_all file will cause this project and any project that depends on this project to rebuild object files + +FORCE_RELINK_DEP := .force_relink +FORCE_REBUILD_DEP := .force_rebuild +FORCE_REBUILD_ALL_DEP := .force_rebuild_all +FORCE_REBUILD_DEP_LIST := $(CONFIG_OBJ_DIR)/$(FORCE_RELINK_DEP) $(CONFIG_OBJ_DIR)/$(FORCE_REBUILD_DEP) $(FORCE_REBUILD_ALL_DEP) + +$(FORCE_REBUILD_DEP_LIST): + +$(APP_OBJS): $(wildcard $(CONFIG_OBJ_DIR)/$(FORCE_REBUILD_DEP)) $(wildcard $(addsuffix /$(FORCE_REBUILD_ALL_DEP), . $(ALT_LIBRARY_DIRS))) + +$(ELF): $(wildcard $(addsuffix /$(FORCE_RELINK_DEP), $(CONFIG_OBJ_DIR) $(ALT_LIBRARY_DIRS))) + + +# Clean just the application. +.PHONY : clean +ifeq ($(CREATE_ELF_DERIVED_FILES),1) +clean : clean_elf_derived_files +endif + +clean : + @$(RM) -r $(ELF) $(OBJDUMP_NAME) $(LINKER_MAP_NAME) $(OBJ_ROOT_DIR) $(RUNTIME_ROOT_DIR) $(FORCE_REBUILD_DEP_LIST) + @$(ECHO) [$(APP_NAME) clean complete] + +# Clean just the BSP. +.PHONY : clean_bsp +clean_bsp : + @$(ECHO) Info: Cleaning $(BSP_ROOT_DIR) + @$(MAKE) --no-print-directory -C $(BSP_ROOT_DIR) clean + +# Clean all makeable libraries including the BSP. +LIB_CLEAN_TARGETS := $(patsubst %,%-recurs-make-clean-lib,$(MAKEABLE_LIBRARY_ROOT_DIRS)) + +.PHONY : clean_libs +clean_libs : $(LIB_CLEAN_TARGETS) + +ifneq ($(strip $(LIB_CLEAN_TARGETS)),) +$(LIB_CLEAN_TARGETS): %-recurs-make-clean-lib: + @$(ECHO) Info: Cleaning $* + $(MAKE) --no-print-directory -C $* clean +endif + +.PHONY: clean_elf_derived_files +clean_elf_derived_files: mem_init_clean + +# Clean application and all makeable libraries including the BSP. +.PHONY : clean_all +clean_all : clean mem_init_clean clean_libs + +# Include the dependency files unless the make goal is performing a clean +# of the application. +ifneq ($(firstword $(MAKECMDGOALS)),clean) +ifneq ($(firstword $(MAKECMDGOALS)),clean_all) +-include $(APP_DEPS) +endif +endif + +.PHONY : download-elf +download-elf : $(ELF) + @if [ "$(DOWNLOAD)" = "none" ]; \ + then \ + $(ECHO) Downloading $(ELF) not supported; \ + else \ + $(ECHO) Info: Downloading $(ELF); \ + $(DOWNLOAD) --go --cpu_name=$(CPU_NAME) $(DOWNLOAD_CABLE_FLAG) $(SOPC_SYSID_FLAG) $(DOWNLOAD_JDI_FLAG) $(WRITE_GMON_OPTION) $(ELF); \ + fi + +# Delete the target of a rule if it has changed and its commands exit +# with a nonzero exit status. +.DELETE_ON_ERROR: + +# Rules for flash programming commands +PROGRAM_FLASH_SUFFIX := -program +PROGRAM_FLASH_TARGET := $(addsuffix $(PROGRAM_FLASH_SUFFIX), $(FLASH_FILES)) + +.PHONY : program-flash +program-flash : $(PROGRAM_FLASH_TARGET) + +.PHONY : $(PROGRAM_FLASH_TARGET) +$(PROGRAM_FLASH_TARGET) : flash + @if [ "$(FLASHPROG)" = "none" ]; \ + then \ + $(ECHO) Programming flash not supported; \ + else \ + $(ECHO) Info: Programming $(basename $@).flash; \ + if [ -z "$($(basename $@)_EPCS_FLAGS)" ]; \ + then \ + $(ECHO) $(FLASHPROG) $(SOPC_SYSID_FLAG) --base=$($(basename $@)_START) $(basename $@).flash; \ + $(FLASHPROG) $(DOWNLOAD_CABLE_FLAG) $(SOPC_SYSID_FLAG) --base=$($(basename $@)_START) $(basename $@).flash; \ + else \ + $(ECHO) $(FLASHPROG) $(SOPC_SYSID_FLAG) --epcs --base=$($(basename $@)_START) $(basename $@).flash; \ + $(FLASHPROG) $(DOWNLOAD_CABLE_FLAG) $(SOPC_SYSID_FLAG) --epcs --base=$($(basename $@)_START) $(basename $@).flash; \ + fi \ + fi + + +# Rules for simulating with an HDL Simulator [QSYS only] +ifeq ($(QSYS),1) +IP_MAKE_SIMSCRIPT := ip-make-simscript + +ifeq ($(VSIM),) +VSIM_EXE := "$(if $(VSIM_DIR),$(VSIM_DIR)/,)vsim" +ifeq ($(ENABLE_VSIM_GUI),1) +VSIM := $(VSIM_EXE) -gui +else +VSIM := $(VSIM_EXE) -c +endif # ENABLE_VSIM_GUI == 1 +endif # VSIM not set + +ifeq ($(SPD),) +ifneq ($(ABS_QUARTUS_PROJECT_DIR),) +ifneq ($(SOPC_NAME),) +SPD_LOCATION = $(ABS_QUARTUS_PROJECT_DIR)/$(SOPC_NAME)_tb/$(SOPC_NAME)_tb/$(SOPC_NAME)_tb.spd +LEGACY_SPD_LOCATION = $(ABS_QUARTUS_PROJECT_DIR)/$(SOPC_NAME)_tb.spd +SPD = $(if $(wildcard $(SPD_LOCATION)),$(SPD_LOCATION),$(LEGACY_SPD_LOCATION)) +endif # SOPC_NAME set +endif # ABS_QUARTUS_PROJECT_DIR set +endif # SPD == empty string + +ifeq ($(MSIM_SCRIPT),) +SIM_SCRIPT_DIR := $(RUNTIME_ROOT_DIR)/sim +MSIM_SCRIPT := $(SIM_SCRIPT_DIR)/mentor/msim_setup.tcl +endif # MSIM_SCRIPT == empty string + +ifeq ($(MAKE_VERSION),3.81) +ABS_MEM_INIT_DESCRIPTOR_FILE := $(abspath $(MEM_INIT_DESCRIPTOR_FILE)) +else +ABS_MEM_INIT_DESCRIPTOR_FILE := $(call adjust-path-mixed,$(shell pwd))/$(MEM_INIT_DESCRIPTOR_FILE) +endif + +$(MSIM_SCRIPT): $(SPD) $(MEM_INIT_DESCRIPTOR_FILE) +ifeq ($(SPD),) + $(error No SPD file specified. Ensure QUARTUS_PROJECT_DIR variable is set) +endif + @$(MKDIR) $(SIM_SCRIPT_DIR) + $(IP_MAKE_SIMSCRIPT) --spd=$(SPD) --spd=$(MEM_INIT_DESCRIPTOR_FILE) --output-directory=$(SIM_SCRIPT_DIR) + +VSIM_COMMAND = \ + cd $(dir $(MSIM_SCRIPT)) && \ + $(VSIM) -do "do $(notdir $(MSIM_SCRIPT)); ld; $(if $(VSIM_RUN_TIME),run ${VSIM_RUN_TIME};quit;)" + +.PHONY: sim +sim: $(MSIM_SCRIPT) mem_init_generate +ifeq ($(MSIM_SCRIPT),) + $(error MSIM_SCRIPT not set) +endif + $(VSIM_COMMAND) + +endif # QSYS == 1 + + +#------------------------------------------------------------------------------ +# ELF TARGET RULE +#------------------------------------------------------------------------------ +# Rule for constructing the executable elf file. +$(ELF) : $(APP_OBJS) $(LINKER_SCRIPT) $(APP_LDDEPS) + @$(ECHO) Info: Linking $@ + $(LD) $(APP_LDFLAGS) $(APP_CFLAGS) -o $@ $(filter-out $(CRT0),$(APP_OBJS)) $(APP_LIBS) $(APP_BSP_DEP_LIBS) +ifneq ($(DISABLE_ELFPATCH),1) + $(ELFPATCH) $@ $(ELF_PATCH_FLAG) +endif +ifneq ($(DISABLE_STACKREPORT),1) + @bash -c "$(STACKREPORT) $@" +endif + +$(OBJDUMP_NAME) : $(ELF) + @$(ECHO) Info: Creating $@ + $(OBJDUMP) $(OBJDUMP_FLAGS) $< >$@ + +# Rule for printing the name of the elf file +.PHONY: print-elf-name +print-elf-name: + @$(ECHO) $(ELF) + + diff --git a/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/auto_focus.c b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/auto_focus.c new file mode 100644 index 0000000..c525533 --- /dev/null +++ b/Vision/DE10_LITE_D8M_VIP_16/software/D8M_Camera_Test/auto_focus.c @@ -0,0 +1,98 @@ +/* + * auto_focus.c + * + * Created on: 2015Äê7ÔÂ27ÈÕ + * Author: Administrato + */ + +#include +#include "I2C_core.h" +#include "terasic_includes.h" +#include "auto_focus.h" + + +///////////////////////////////// +//This is a simple focus function for demonstration, focus function may be not good for some situation +//arithmetic not suit for: 1. microspur 2.light source + // please look at TERASIC_AUTO_FOCUS IP to see register's detail. +alt_u16 video_w = 640; +alt_u16 video_h = 480; + +alt_u16 focus_width = 240; //