fpga-lab-2/Top/software/semafor/semafor.objdump

8022 lines
263 KiB
Plaintext

semafor.elf: file format elf32-littlenios2
semafor.elf
architecture: nios2:r1, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x00000224
Program Header:
LOAD off 0x00001000 vaddr 0x00000000 paddr 0x00000000 align 2**12
filesz 0x00000000 memsz 0x00000000 flags r-x
LOAD off 0x00001020 vaddr 0x00000020 paddr 0x00000020 align 2**12
filesz 0x00007218 memsz 0x0000736c flags rwx
Sections:
Idx Name Size VMA LMA File off Algn
0 .entry 00000000 00000000 00000000 00001000 2**5
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .exceptions 00000204 00000020 00000020 00001020 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .text 00005530 00000224 00000224 00001224 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
3 .rodata 00000078 00005754 00005754 00006754 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 .rwdata 00001a6c 000057cc 000057cc 000067cc 2**2
CONTENTS, ALLOC, LOAD, DATA, SMALL_DATA
5 .bss 00000154 00007238 00007238 00008238 2**2
ALLOC, SMALL_DATA
6 .mem 00000000 0000738c 0000738c 00008238 2**0
CONTENTS
7 .comment 0000002d 00000000 00000000 00008238 2**0
CONTENTS, READONLY
8 .debug_aranges 000009f8 00000000 00000000 00008268 2**3
CONTENTS, READONLY, DEBUGGING, OCTETS
9 .debug_info 00017df0 00000000 00000000 00008c60 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
10 .debug_abbrev 00006a85 00000000 00000000 00020a50 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
11 .debug_line 00009a4f 00000000 00000000 000274d5 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
12 .debug_frame 00001510 00000000 00000000 00030f24 2**2
CONTENTS, READONLY, DEBUGGING, OCTETS
13 .debug_str 000027a7 00000000 00000000 00032434 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
14 .debug_loc 00005fc0 00000000 00000000 00034bdb 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
15 .debug_alt_sim_info 00000010 00000000 00000000 0003ab9c 2**2
CONTENTS, READONLY, DEBUGGING, OCTETS
16 .debug_ranges 00000888 00000000 00000000 0003abb0 2**3
CONTENTS, READONLY, DEBUGGING, OCTETS
17 .thread_model 00000003 00000000 00000000 0003d75a 2**0
CONTENTS, READONLY
18 .cpu 00000003 00000000 00000000 0003d75d 2**0
CONTENTS, READONLY
19 .qsys 00000001 00000000 00000000 0003d760 2**0
CONTENTS, READONLY
20 .simulation_enabled 00000001 00000000 00000000 0003d761 2**0
CONTENTS, READONLY
21 .stderr_dev 00000009 00000000 00000000 0003d762 2**0
CONTENTS, READONLY
22 .stdin_dev 00000009 00000000 00000000 0003d76b 2**0
CONTENTS, READONLY
23 .stdout_dev 00000009 00000000 00000000 0003d774 2**0
CONTENTS, READONLY
24 .sopc_system_name 00000006 00000000 00000000 0003d77d 2**0
CONTENTS, READONLY
25 .quartus_project_dir 00000022 00000000 00000000 0003d783 2**0
CONTENTS, READONLY
26 .jdi 00004392 00000000 00000000 0003d7a5 2**0
CONTENTS, READONLY
27 .sopcinfo 0003cf5c 00000000 00000000 00041b37 2**0
CONTENTS, READONLY
SYMBOL TABLE:
00000000 l d .entry 00000000 .entry
00000020 l d .exceptions 00000000 .exceptions
00000224 l d .text 00000000 .text
00005754 l d .rodata 00000000 .rodata
000057cc l d .rwdata 00000000 .rwdata
00007238 l d .bss 00000000 .bss
0000738c l d .mem 00000000 .mem
00000000 l d .comment 00000000 .comment
00000000 l d .debug_aranges 00000000 .debug_aranges
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .debug_frame 00000000 .debug_frame
00000000 l d .debug_str 00000000 .debug_str
00000000 l d .debug_loc 00000000 .debug_loc
00000000 l d .debug_alt_sim_info 00000000 .debug_alt_sim_info
00000000 l d .debug_ranges 00000000 .debug_ranges
00000000 l df *ABS* 00000000 ../semafor_bsp//obj/HAL/src/crt0.o
00000258 l .text 00000000 alt_after_alt_main
00000000 l df *ABS* 00000000 alt_irq_handler.c
00000000 l df *ABS* 00000000 alt_instruction_exception_entry.c
00000000 l df *ABS* 00000000 sem.c
00000000 l df *ABS* 00000000 puts.c
00000000 l df *ABS* 00000000 strlen.c
00000000 l df *ABS* 00000000 findfp.c
00000490 l F .text 00000008 __fp_lock
000004a4 l F .text 00000008 __fp_unlock
000004ac l F .text 00000168 __sinit.part.0
00000000 l df *ABS* 00000000 fvwrite.c
00000000 l df *ABS* 00000000 fwalk.c
00000000 l df *ABS* 00000000 impure.c
000057cc l O .rwdata 00000424 impure_data
00000000 l df *ABS* 00000000 mallocr.c
00000000 l df *ABS* 00000000 memchr.c
00000000 l df *ABS* 00000000 memcpy.c
00000000 l df *ABS* 00000000 memmove.c
00000000 l df *ABS* 00000000 memset.c
00000000 l df *ABS* 00000000 mallocr.c
00000000 l df *ABS* 00000000 sbrkr.c
00000000 l df *ABS* 00000000 stdio.c
00000000 l df *ABS* 00000000 writer.c
00000000 l df *ABS* 00000000 wsetup.c
00000000 l df *ABS* 00000000 closer.c
00000000 l df *ABS* 00000000 fclose.c
0000232c l F .text 000000c0 _fclose_r.part.0
00000000 l df *ABS* 00000000 fflush.c
00000000 l df *ABS* 00000000 mallocr.c
00000000 l df *ABS* 00000000 int_errno.c
00000000 l df *ABS* 00000000 lseekr.c
00000000 l df *ABS* 00000000 makebuf.c
00000000 l df *ABS* 00000000 readr.c
00000000 l df *ABS* 00000000 fstatr.c
00000000 l df *ABS* 00000000 isattyr.c
00000000 l df *ABS* 00000000 lib2-divmod.c
00000000 l df *ABS* 00000000 lib2-mul.c
00000000 l df *ABS* 00000000 alt_close.c
00003194 l F .text 0000003c alt_get_errno
00000000 l df *ABS* 00000000 alt_dcache_flush.c
00000000 l df *ABS* 00000000 alt_dev.c
000032d4 l F .text 0000002c alt_dev_null_write
00000000 l df *ABS* 00000000 alt_errno.c
00000000 l df *ABS* 00000000 alt_fstat.c
00003300 l F .text 0000003c alt_get_errno
00000000 l df *ABS* 00000000 alt_isatty.c
000033f8 l F .text 0000003c alt_get_errno
00000000 l df *ABS* 00000000 alt_lseek.c
000034e4 l F .text 0000003c alt_get_errno
00000000 l df *ABS* 00000000 alt_main.c
00000000 l df *ABS* 00000000 alt_malloc_lock.c
00000000 l df *ABS* 00000000 alt_read.c
000036c4 l F .text 0000003c alt_get_errno
00000000 l df *ABS* 00000000 alt_release_fd.c
00000000 l df *ABS* 00000000 alt_sbrk.c
00007228 l O .rwdata 00000004 heap_end
00000000 l df *ABS* 00000000 alt_write.c
00003930 l F .text 0000003c alt_get_errno
00000000 l df *ABS* 00000000 alt_sys_init.c
00003a70 l F .text 00000034 alt_dev_reg
000061a0 l O .rwdata 00001060 jtag_uart
00000000 l df *ABS* 00000000 altera_avalon_jtag_uart_fd.c
00000000 l df *ABS* 00000000 altera_avalon_jtag_uart_init.c
00003d64 l F .text 0000020c altera_avalon_jtag_uart_irq
00003f70 l F .text 000000a0 altera_avalon_jtag_uart_timeout
00000000 l df *ABS* 00000000 altera_avalon_jtag_uart_ioctl.c
00000000 l df *ABS* 00000000 altera_avalon_jtag_uart_read.c
00000000 l df *ABS* 00000000 altera_avalon_jtag_uart_write.c
00000000 l df *ABS* 00000000 altera_avalon_timer_sc.c
000045b4 l F .text 0000007c alt_avalon_timer_sc_irq
00000000 l df *ABS* 00000000 alt_alarm_start.c
00000000 l df *ABS* 00000000 alt_dev_llist_insert.c
000047e8 l F .text 0000003c alt_get_errno
00000000 l df *ABS* 00000000 alt_do_ctors.c
00000000 l df *ABS* 00000000 alt_do_dtors.c
00000000 l df *ABS* 00000000 alt_iic.c
00000000 l df *ABS* 00000000 alt_iic_isr_register.c
00000000 l df *ABS* 00000000 alt_io_redirect.c
00004c2c l F .text 000000d4 alt_open_fd
00000000 l df *ABS* 00000000 alt_irq_vars.c
00000000 l df *ABS* 00000000 alt_open.c
00004d7c l F .text 0000003c alt_get_errno
00004db8 l F .text 000000dc alt_file_locked
00000000 l df *ABS* 00000000 alt_tick.c
00000000 l df *ABS* 00000000 altera_nios2_gen2_irq.c
00000000 l df *ABS* 00000000 alt_find_dev.c
00000000 l df *ABS* 00000000 alt_find_file.c
00000000 l df *ABS* 00000000 alt_get_fd.c
00000000 l df *ABS* 00000000 atexit.c
00000000 l df *ABS* 00000000 exit.c
00000000 l df *ABS* 00000000 memcmp.c
00000000 l df *ABS* 00000000 __atexit.c
00000000 l df *ABS* 00000000 __call_atexit.c
00000000 l df *ABS* 00000000 alt_exit.c
00007260 g O .bss 00000004 alt_instruction_exception_handler
00002f60 g F .text 00000058 _isatty_r
00003600 g F .text 0000007c alt_main
0000031c g F .text 000000cc _puts_r
0000728c g O .bss 00000100 alt_irq
00002bf0 g F .text 00000064 _lseek_r
0000738c g *ABS* 00000000 __alt_heap_start
000020a8 g F .text 0000005c __sseek
000007f4 g F .text 00000010 __sinit
00000614 g F .text 00000078 __sfmoreglue
000036a0 g F .text 00000024 __malloc_unlock
00005754 g O .rodata 00000040 divisors
000017f4 g F .text 0000012c memmove
000007e0 g F .text 00000014 _cleanup
000051a0 g F .text 00000024 altera_nios2_gen2_irq_init
00000000 g F .entry 00000000 __reset
00002f00 g F .text 00000060 _fstat_r
00007244 g O .bss 00000004 errno
00002020 g F .text 00000008 __seofread
0000724c g O .bss 00000004 alt_argv
0000f200 g *ABS* 00000000 _gp
00006020 g O .rwdata 00000180 alt_fd_list
000051c4 g F .text 00000090 alt_find_dev
000016f4 g F .text 00000100 memcpy
00000498 g F .text 0000000c _cleanup_r
00004d00 g F .text 0000007c alt_io_redirect
00005754 g *ABS* 00000000 __DTOR_END__
000003e8 g F .text 00000010 puts
00005414 g F .text 00000098 alt_exception_cause_generated_bad_addr
0000416c g F .text 00000220 altera_avalon_jtag_uart_read
000030ac g F .text 00000064 .hidden __udivsi3
00003434 g F .text 000000b0 isatty
00007240 g O .bss 00000004 __malloc_top_pad
0000083c g F .text 000004c8 __sfvwrite_r
00001f74 g F .text 00000058 _sbrk_r
00002e9c g F .text 00000064 _read_r
000032ac g F .text 00000028 alt_dcache_flush
00007220 g O .rwdata 00000004 alt_max_fd
000023ec g F .text 00000070 _fclose_r
00002754 g F .text 00000084 fflush
0000723c g O .bss 00000004 __malloc_max_sbrked_mem
00003520 g F .text 000000e0 lseek
00007200 g O .rwdata 00000004 _global_impure_ptr
00001a10 g F .text 00000564 _realloc_r
0000738c g *ABS* 00000000 __bss_end
00004b44 g F .text 000000e8 alt_iic_isr_register
00005098 g F .text 00000108 alt_tick
00000814 g F .text 00000014 __fp_lock_all
00004af8 g F .text 0000004c alt_ic_irq_enabled
00000000 g *ABS* 00000000 __alt_mem_mem
00004ff4 g F .text 000000a4 alt_alarm_stop
00007254 g O .bss 00000004 alt_irq_active
000000fc g F .exceptions 000000c8 alt_irq_handler
00005ff8 g O .rwdata 00000028 alt_dev_null
00007218 g O .rwdata 00000008 alt_dev_list
0000396c g F .text 00000104 write
0000333c g F .text 000000bc fstat
00003110 g F .text 0000005c .hidden __umodsi3
0000738c g *ABS* 00000000 end
00003ca4 g F .text 000000c0 altera_avalon_jtag_uart_init
000001c4 g F .exceptions 00000060 alt_instruction_exception_entry
00005754 g *ABS* 00000000 __CTOR_LIST__
00020000 g *ABS* 00000000 __alt_stack_pointer
00004630 g F .text 00000084 alt_avalon_timer_sc_init
0000438c g F .text 00000228 altera_avalon_jtag_uart_write
00000804 g F .text 00000004 __sfp_lock_acquire
00001624 g F .text 000000d0 memchr
000028f4 g F .text 000002fc _free_r
000055fc g F .text 00000120 __call_exitprocs
00007208 g O .rwdata 00000004 __malloc_sbrk_base
00000224 g F .text 00000038 _start
00007258 g O .bss 00000004 _alt_tick_rate
0000725c g O .bss 00000004 _alt_nticks
00003700 g F .text 00000108 read
00003ae0 g F .text 00000060 alt_sys_init
0000556c g F .text 00000090 __register_exitproc
00004010 g F .text 00000068 altera_avalon_jtag_uart_close
0000316c g F .text 00000028 .hidden __mulsi3
00007264 g O .bss 00000028 __malloc_current_mallinfo
00003b40 g F .text 00000060 altera_avalon_jtag_uart_read_fd
0000535c g F .text 000000b8 alt_get_fd
000022d4 g F .text 00000058 _close_r
000054f4 g F .text 00000078 memcmp
00003c00 g F .text 00000050 altera_avalon_jtag_uart_close_fd
0000738c g *ABS* 00000000 __alt_stack_base
00003c50 g F .text 00000054 altera_avalon_jtag_uart_ioctl_fd
00002170 g F .text 00000164 __swsetup_r
0000068c g F .text 00000154 __sfp
00005bf0 g O .rwdata 00000408 __malloc_av_
00000810 g F .text 00000004 __sinit_lock_release
00001fcc g F .text 00000054 __sread
00005254 g F .text 00000108 alt_find_file
00004824 g F .text 000000a8 alt_dev_llist_insert
0000367c g F .text 00000024 __malloc_lock
00003878 g F .text 000000b8 sbrk
000026f4 g F .text 00000060 _fflush_r
00007238 g *ABS* 00000000 __bss_start
00001920 g F .text 000000f0 memset
0000025c g F .text 000000c0 main
00007250 g O .bss 00000004 alt_envp
00007238 g O .bss 00000004 __malloc_max_total_mem
00003ba0 g F .text 00000060 altera_avalon_jtag_uart_write_fd
00002104 g F .text 00000008 __sclose
00020000 g *ABS* 00000000 __alt_heap_limit
0000245c g F .text 00000070 fclose
00000e44 g F .text 000007e0 _malloc_r
00007224 g O .rwdata 00000004 alt_errno
00000d04 g F .text 00000098 _fwalk
00002fb8 g F .text 00000080 .hidden __divsi3
000027d8 g F .text 0000011c _malloc_trim_r
00005754 g *ABS* 00000000 __CTOR_END__
00005754 g *ABS* 00000000 __DTOR_LIST__
00003aa4 g F .text 0000003c alt_irq_init
00003808 g F .text 00000070 alt_release_fd
000054ac g F .text 00000014 atexit
0000210c g F .text 00000064 _write_r
00007204 g O .rwdata 00000004 _impure_ptr
00007248 g O .bss 00000004 alt_argc
000024cc g F .text 00000228 __sflush_r
00004930 g F .text 00000064 _do_dtors
00000020 g .exceptions 00000000 alt_irq_entry
00000828 g F .text 00000014 __fp_unlock_all
00007210 g O .rwdata 00000008 alt_fs_list
00002e04 g F .text 00000098 __swhatbuf_r
00004994 g F .text 00000050 alt_ic_isr_register
00007238 g *ABS* 00000000 _edata
0000738c g *ABS* 00000000 _end
00004078 g F .text 000000f4 altera_avalon_jtag_uart_ioctl
00004a6c g F .text 0000008c alt_ic_irq_disable
00002028 g F .text 00000080 __swrite
0000720c g O .rwdata 00000004 __malloc_trim_threshold
000054c0 g F .text 00000034 exit
00000d9c g F .text 000000a8 _fwalk_reent
00003038 g F .text 00000074 .hidden __modsi3
00020000 g *ABS* 00000000 __alt_data_end
00000020 g F .exceptions 00000000 alt_exception
00000808 g F .text 00000004 __sfp_lock_release
0000571c g F .text 00000038 _exit
000046b4 g F .text 00000134 alt_alarm_start
00002c54 g F .text 000001b0 __smakebuf_r
000003f8 g F .text 00000098 strlen
00004e94 g F .text 00000160 open
0000722c g O .rwdata 00000004 alt_priority_mask
000049e4 g F .text 00000088 alt_ic_irq_enable
00007230 g O .rwdata 00000008 alt_alarm_list
000048cc g F .text 00000064 _do_ctors
000031d0 g F .text 000000dc close
0000080c g F .text 00000004 __sinit_lock_acquire
Disassembly of section .exceptions:
00000020 <alt_exception>:
#else /* ALT_EXCEPTION_STACK disabled */
/*
* Reserve space on normal stack for registers about to be pushed.
*/
addi sp, sp, -76
20: 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)
24: dfc00015 stw ra,0(sp)
stw r1, 8(sp)
28: d8400215 stw at,8(sp)
stw r2, 12(sp)
2c: d8800315 stw r2,12(sp)
stw r3, 16(sp)
30: d8c00415 stw r3,16(sp)
stw r4, 20(sp)
34: d9000515 stw r4,20(sp)
stw r5, 24(sp)
38: d9400615 stw r5,24(sp)
stw r6, 28(sp)
3c: d9800715 stw r6,28(sp)
stw r7, 32(sp)
40: d9c00815 stw r7,32(sp)
rdctl r5, estatus /* Read early to avoid usage stall */
44: 000b307a rdctl r5,estatus
stw r8, 36(sp)
48: da000915 stw r8,36(sp)
stw r9, 40(sp)
4c: da400a15 stw r9,40(sp)
stw r10, 44(sp)
50: da800b15 stw r10,44(sp)
stw r11, 48(sp)
54: dac00c15 stw r11,48(sp)
stw r12, 52(sp)
58: db000d15 stw r12,52(sp)
stw r13, 56(sp)
5c: db400e15 stw r13,56(sp)
stw r14, 60(sp)
60: db800f15 stw r14,60(sp)
stw r15, 64(sp)
64: 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 */
68: d9401115 stw r5,68(sp)
addi r15, ea, -4 /* instruction that caused exception */
6c: ebffff04 addi r15,ea,-4
stw r15, 72(sp)
70: 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
74: 0009313a rdctl r4,ipending
andi r2, r5, 1
78: 2880004c andi r2,r5,1
beq r2, zero, .Lnot_irq
7c: 10000326 beq r2,zero,8c <alt_exception+0x6c>
beq r4, zero, .Lnot_irq
80: 20000226 beq r4,zero,8c <alt_exception+0x6c>
/*
* Now that all necessary registers have been preserved, call
* alt_irq_handler() to process the interrupts.
*/
call alt_irq_handler
84: 00000fc0 call fc <alt_irq_handler>
.section .exceptions.irqreturn, "xa"
br .Lexception_exit
88: 00000706 br a8 <alt_exception+0x88>
* 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 */
8c: 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 */
90: 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
94: e93fff04 addi r4,ea,-4
/* Call the instruction-exception entry */
call alt_instruction_exception_entry
98: 00001c40 call 1c4 <alt_instruction_exception_entry>
* instruction
*
* Return code was 0: Skip. The instruction after the exception is
* already stored in 72(sp).
*/
bne r2, r0, .Lexception_exit
9c: 1000021e bne r2,zero,a8 <alt_exception+0x88>
/*
* Otherwise, modify 72(sp) to re-issue the instruction that caused the
* exception.
*/
addi r15, ea, -4 /* instruction that caused exception */
a0: ebffff04 addi r15,ea,-4
stw r15, 72(sp)
a4: 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)
a8: d9401117 ldw r5,68(sp)
ldw ea, 72(sp) /* This becomes the PC once eret is executed */
ac: df401217 ldw ea,72(sp)
ldw ra, 0(sp)
b0: dfc00017 ldw ra,0(sp)
wrctl estatus, r5
b4: 2801707a wrctl estatus,r5
ldw r1, 8(sp)
b8: d8400217 ldw at,8(sp)
ldw r2, 12(sp)
bc: d8800317 ldw r2,12(sp)
ldw r3, 16(sp)
c0: d8c00417 ldw r3,16(sp)
ldw r4, 20(sp)
c4: d9000517 ldw r4,20(sp)
ldw r5, 24(sp)
c8: d9400617 ldw r5,24(sp)
ldw r6, 28(sp)
cc: d9800717 ldw r6,28(sp)
ldw r7, 32(sp)
d0: 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)
d4: da000917 ldw r8,36(sp)
ldw r9, 40(sp)
d8: da400a17 ldw r9,40(sp)
ldw r10, 44(sp)
dc: da800b17 ldw r10,44(sp)
ldw r11, 48(sp)
e0: dac00c17 ldw r11,48(sp)
ldw r12, 52(sp)
e4: db000d17 ldw r12,52(sp)
ldw r13, 56(sp)
e8: db400e17 ldw r13,56(sp)
ldw r14, 60(sp)
ec: db800f17 ldw r14,60(sp)
ldw r15, 64(sp)
f0: 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
f4: dec01304 addi sp,sp,76
/*
* Return to the interrupted instruction.
*/
eret
f8: ef80083a eret
000000fc <alt_irq_handler>:
* instruction is present if the macro ALT_CI_INTERRUPT_VECTOR defined.
*/
void alt_irq_handler (void) __attribute__ ((section (".exceptions")));
void alt_irq_handler (void)
{
fc: defff904 addi sp,sp,-28
100: dfc00615 stw ra,24(sp)
104: df000515 stw fp,20(sp)
108: df000504 addi fp,sp,20
/*
* Notify the operating system that we are at interrupt level.
*/
ALT_OS_INT_ENTER();
10c: 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);
110: 0005313a rdctl r2,ipending
114: e0bffc15 stw r2,-16(fp)
return active;
118: e0bffc17 ldw r2,-16(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 ();
11c: e0bfff15 stw r2,-4(fp)
do
{
i = 0;
120: e03ffd15 stw zero,-12(fp)
mask = 1;
124: 00800044 movi r2,1
128: e0bffe15 stw r2,-8(fp)
* called to clear the interrupt condition.
*/
do
{
if (active & mask)
12c: e0ffff17 ldw r3,-4(fp)
130: e0bffe17 ldw r2,-8(fp)
134: 1884703a and r2,r3,r2
138: 10001126 beq r2,zero,180 <alt_irq_handler+0x84>
{
#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
alt_irq[i].handler(alt_irq[i].context);
13c: e0bffd17 ldw r2,-12(fp)
140: 100690fa slli r3,r2,3
144: 00800034 movhi r2,0
148: 1885883a add r2,r3,r2
14c: 10dca317 ldw r3,29324(r2)
150: e0bffd17 ldw r2,-12(fp)
154: 100890fa slli r4,r2,3
158: 00800034 movhi r2,0
15c: 2085883a add r2,r4,r2
160: 109ca417 ldw r2,29328(r2)
164: 1009883a mov r4,r2
168: 183ee83a callr r3
#else
alt_irq[i].handler(alt_irq[i].context, i);
#endif
break;
16c: 0001883a nop
NIOS2_READ_IPENDING (active);
170: 0005313a rdctl r2,ipending
174: e0bffb15 stw r2,-20(fp)
return active;
178: e0bffb17 ldw r2,-20(fp)
17c: 00000706 br 19c <alt_irq_handler+0xa0>
}
mask <<= 1;
180: e0bffe17 ldw r2,-8(fp)
184: 1085883a add r2,r2,r2
188: e0bffe15 stw r2,-8(fp)
i++;
18c: e0bffd17 ldw r2,-12(fp)
190: 10800044 addi r2,r2,1
194: e0bffd15 stw r2,-12(fp)
if (active & mask)
198: 003fe406 br 12c <alt_irq_handler+0x30>
} while (1);
active = alt_irq_pending ();
19c: e0bfff15 stw r2,-4(fp)
} while (active);
1a0: e0bfff17 ldw r2,-4(fp)
1a4: 103fde1e bne r2,zero,120 <alt_irq_handler+0x24>
/*
* Notify the operating system that interrupt processing is complete.
*/
ALT_OS_INT_EXIT();
1a8: 0001883a nop
}
1ac: 0001883a nop
1b0: e037883a mov sp,fp
1b4: dfc00117 ldw ra,4(sp)
1b8: df000017 ldw fp,0(sp)
1bc: dec00204 addi sp,sp,8
1c0: f800283a ret
000001c4 <alt_instruction_exception_entry>:
* 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)
{
1c4: defffb04 addi sp,sp,-20
1c8: dfc00415 stw ra,16(sp)
1cc: df000315 stw fp,12(sp)
1d0: df000304 addi fp,sp,12
1d4: e13ffd15 stw r4,-12(fp)
cause = ( (cause & NIOS2_EXCEPTION_REG_CAUSE_MASK) >>
NIOS2_EXCEPTION_REG_CAUSE_OFST );
NIOS2_READ_BADADDR(badaddr);
#else
cause = NIOS2_EXCEPTION_CAUSE_NOT_PRESENT;
1d8: 00bfffc4 movi r2,-1
1dc: e0bfff15 stw r2,-4(fp)
badaddr = 0;
1e0: e03ffe15 stw zero,-8(fp)
#endif /* NIOS2_HAS_EXTRA_EXCEPTION_INFO */
if(alt_instruction_exception_handler) {
1e4: d0a01817 ldw r2,-32672(gp)
1e8: 10000726 beq r2,zero,208 <alt_instruction_exception_entry+0x44>
* 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);
1ec: d0a01817 ldw r2,-32672(gp)
1f0: e0ffff17 ldw r3,-4(fp)
1f4: e1bffe17 ldw r6,-8(fp)
1f8: e17ffd17 ldw r5,-12(fp)
1fc: 1809883a mov r4,r3
200: 103ee83a callr r2
204: 00000206 br 210 <alt_instruction_exception_entry+0x4c>
* (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();
208: 003da03a break 0
;
#endif /* NIOS2_HAS_DEBUG_STUB */
}
/* We should not get here. Remove compiler warning. */
return NIOS2_EXCEPTION_RETURN_REISSUE_INST;
20c: 0005883a mov r2,zero
}
210: e037883a mov sp,fp
214: dfc00117 ldw ra,4(sp)
218: df000017 ldw fp,0(sp)
21c: dec00204 addi sp,sp,8
220: f800283a ret
Disassembly of section .text:
00000224 <_start>:
/*
* 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)
224: 06c000b4 movhi sp,2
ori sp, sp, %lo(__alt_stack_pointer)
228: dec00014 ori sp,sp,0
movhi gp, %hi(_gp)
22c: 06800034 movhi gp,0
ori gp, gp, %lo(_gp)
230: d6bc8014 ori gp,gp,61952
*/
#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)
234: 00800034 movhi r2,0
ori r2, r2, %lo(__bss_start)
238: 109c8e14 ori r2,r2,29240
movhi r3, %hi(__bss_end)
23c: 00c00034 movhi r3,0
ori r3, r3, %lo(__bss_end)
240: 18dce314 ori r3,r3,29580
beq r2, r3, 1f
244: 10c00326 beq r2,r3,254 <_start+0x30>
0:
stw zero, (r2)
248: 10000015 stw zero,0(r2)
addi r2, r2, 4
24c: 10800104 addi r2,r2,4
bltu r2, r3, 0b
250: 10fffd36 bltu r2,r3,248 <_start+0x24>
/* 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
254: 00036000 call 3600 <alt_main>
00000258 <alt_after_alt_main>:
/* Wait in infinite loop in case alt_main does return. */
alt_after_alt_main:
br alt_after_alt_main
258: 003fff06 br 258 <alt_after_alt_main>
0000025c <main>:
{0x0ff000f1, 0x0ff000f1, 0x0ff000f1, 0x00700011},
{0x0ff000d1, 0x0ff000f1, 0x0ff000f1, 0x00700011}
};
int main()
{
25c: defffb04 addi sp,sp,-20
260: dfc00415 stw ra,16(sp)
264: df000315 stw fp,12(sp)
268: df000304 addi fp,sp,12
int i,j;
volatile alt_u32 *p;
alt_u32 tmp;
//program divisors
p = (alt_u32*) SEM_RAM_SLAVE_BASE;
26c: 008000b4 movhi r2,2
270: 10840004 addi r2,r2,4096
274: e0bffd15 stw r2,-12(fp)
for (i = 0; i < TIME_SETS; i++) {
278: e03fff15 stw zero,-4(fp)
27c: 00001a06 br 2e8 <main+0x8c>
for (j = TIME_STATES; j > 0; j--) {
280: 00800104 movi r2,4
284: e0bffe15 stw r2,-8(fp)
288: 00001206 br 2d4 <main+0x78>
*p = divisors[i][j - 1];
28c: e0bffe17 ldw r2,-8(fp)
290: 10bfffc4 addi r2,r2,-1
294: e0ffff17 ldw r3,-4(fp)
298: 180690ba slli r3,r3,2
29c: 1885883a add r2,r3,r2
2a0: 100690ba slli r3,r2,2
2a4: 00800034 movhi r2,0
2a8: 1885883a add r2,r3,r2
2ac: 10d5d517 ldw r3,22356(r2)
2b0: e0bffd17 ldw r2,-12(fp)
2b4: 10c00015 stw r3,0(r2)
alt_dcache_flush();
2b8: 00032ac0 call 32ac <alt_dcache_flush>
p++;
2bc: e0bffd17 ldw r2,-12(fp)
2c0: 10800104 addi r2,r2,4
2c4: e0bffd15 stw r2,-12(fp)
for (j = TIME_STATES; j > 0; j--) {
2c8: e0bffe17 ldw r2,-8(fp)
2cc: 10bfffc4 addi r2,r2,-1
2d0: e0bffe15 stw r2,-8(fp)
2d4: e0bffe17 ldw r2,-8(fp)
2d8: 00bfec16 blt zero,r2,28c <main+0x30>
for (i = 0; i < TIME_SETS; i++) {
2dc: e0bfff17 ldw r2,-4(fp)
2e0: 10800044 addi r2,r2,1
2e4: e0bfff15 stw r2,-4(fp)
2e8: e0bfff17 ldw r2,-4(fp)
2ec: 10800110 cmplti r2,r2,4
2f0: 103fe31e bne r2,zero,280 <main+0x24>
}
}
//select timeset and run semafor
IOWR_ALTERA_AVALON_SEM_DIVSET(SEM_CTL_SLAVE_BASE,0x02);
2f4: 00c00084 movi r3,2
2f8: 008000b4 movhi r2,2
2fc: 10c41935 stwio r3,4196(r2)
IOWR_ALTERA_AVALON_SEM_CTL(SEM_CTL_SLAVE_BASE,0x01);
300: 00c00044 movi r3,1
304: 008000b4 movhi r2,2
308: 10c41835 stwio r3,4192(r2)
printf("Ready\n");
30c: 01000034 movhi r4,0
310: 2115e504 addi r4,r4,22420
314: 00003e80 call 3e8 <puts>
while (1)
318: 003fff06 br 318 <main+0xbc>
0000031c <_puts_r>:
31c: defff504 addi sp,sp,-44
320: dc000815 stw r16,32(sp)
324: 2021883a mov r16,r4
328: 2809883a mov r4,r5
32c: dc400915 stw r17,36(sp)
330: dfc00a15 stw ra,40(sp)
334: 2823883a mov r17,r5
338: 00003f80 call 3f8 <strlen>
33c: 11000044 addi r4,r2,1
340: d8800515 stw r2,20(sp)
344: 00800044 movi r2,1
348: 00c00034 movhi r3,0
34c: d8800715 stw r2,28(sp)
350: d8800404 addi r2,sp,16
354: 18d5e704 addi r3,r3,22428
358: d8800115 stw r2,4(sp)
35c: 00800084 movi r2,2
360: dc400415 stw r17,16(sp)
364: d8c00615 stw r3,24(sp)
368: d9000315 stw r4,12(sp)
36c: d8800215 stw r2,8(sp)
370: 81400217 ldw r5,8(r16)
374: 80000226 beq r16,zero,380 <_puts_r+0x64>
378: 80800e17 ldw r2,56(r16)
37c: 10001326 beq r2,zero,3cc <_puts_r+0xb0>
380: 2880030b ldhu r2,12(r5)
384: 10c8000c andi r3,r2,8192
388: 1800061e bne r3,zero,3a4 <_puts_r+0x88>
38c: 28c01917 ldw r3,100(r5)
390: 0137ffc4 movi r4,-8193
394: 10880014 ori r2,r2,8192
398: 1906703a and r3,r3,r4
39c: 2880030d sth r2,12(r5)
3a0: 28c01915 stw r3,100(r5)
3a4: d9800104 addi r6,sp,4
3a8: 8009883a mov r4,r16
3ac: 000083c0 call 83c <__sfvwrite_r>
3b0: 10000b1e bne r2,zero,3e0 <_puts_r+0xc4>
3b4: 00800284 movi r2,10
3b8: dfc00a17 ldw ra,40(sp)
3bc: dc400917 ldw r17,36(sp)
3c0: dc000817 ldw r16,32(sp)
3c4: dec00b04 addi sp,sp,44
3c8: f800283a ret
3cc: 8009883a mov r4,r16
3d0: d9400015 stw r5,0(sp)
3d4: 00007f40 call 7f4 <__sinit>
3d8: d9400017 ldw r5,0(sp)
3dc: 003fe806 br 380 <_puts_r+0x64>
3e0: 00bfffc4 movi r2,-1
3e4: 003ff406 br 3b8 <_puts_r+0x9c>
000003e8 <puts>:
3e8: 00800034 movhi r2,0
3ec: 200b883a mov r5,r4
3f0: 111c8117 ldw r4,29188(r2)
3f4: 000031c1 jmpi 31c <_puts_r>
000003f8 <strlen>:
3f8: 208000cc andi r2,r4,3
3fc: 10000926 beq r2,zero,424 <strlen+0x2c>
400: 2005883a mov r2,r4
404: 00000306 br 414 <strlen+0x1c>
408: 10800044 addi r2,r2,1
40c: 10c000cc andi r3,r2,3
410: 18000526 beq r3,zero,428 <strlen+0x30>
414: 10c00007 ldb r3,0(r2)
418: 183ffb1e bne r3,zero,408 <strlen+0x10>
41c: 1105c83a sub r2,r2,r4
420: f800283a ret
424: 2005883a mov r2,r4
428: 11400017 ldw r5,0(r2)
42c: 01ffbff4 movhi r7,65279
430: 39ffbfc4 addi r7,r7,-257
434: 29c7883a add r3,r5,r7
438: 01a02074 movhi r6,32897
43c: 014a303a nor r5,zero,r5
440: 1946703a and r3,r3,r5
444: 31a02004 addi r6,r6,-32640
448: 1986703a and r3,r3,r6
44c: 1800071e bne r3,zero,46c <strlen+0x74>
450: 11400117 ldw r5,4(r2)
454: 10800104 addi r2,r2,4
458: 29c7883a add r3,r5,r7
45c: 014a303a nor r5,zero,r5
460: 1946703a and r3,r3,r5
464: 1986703a and r3,r3,r6
468: 183ff926 beq r3,zero,450 <strlen+0x58>
46c: 10c00007 ldb r3,0(r2)
470: 183fea26 beq r3,zero,41c <strlen+0x24>
474: 10c00047 ldb r3,1(r2)
478: 10800044 addi r2,r2,1
47c: 183fe726 beq r3,zero,41c <strlen+0x24>
480: 10c00047 ldb r3,1(r2)
484: 10800044 addi r2,r2,1
488: 183ffa1e bne r3,zero,474 <strlen+0x7c>
48c: 003fe306 br 41c <strlen+0x24>
00000490 <__fp_lock>:
490: 0005883a mov r2,zero
494: f800283a ret
00000498 <_cleanup_r>:
498: 01400034 movhi r5,0
49c: 2948fb04 addi r5,r5,9196
4a0: 0000d9c1 jmpi d9c <_fwalk_reent>
000004a4 <__fp_unlock>:
4a4: 0005883a mov r2,zero
4a8: f800283a ret
000004ac <__sinit.part.0>:
4ac: 00c00034 movhi r3,0
4b0: 20800117 ldw r2,4(r4)
4b4: 18c12604 addi r3,r3,1176
4b8: 20c00f15 stw r3,60(r4)
4bc: 2140bb04 addi r5,r4,748
4c0: 00c000c4 movi r3,3
4c4: 20c0b915 stw r3,740(r4)
4c8: 2140ba15 stw r5,744(r4)
4cc: 2000b815 stw zero,736(r4)
4d0: 10001705 stb zero,92(r2)
4d4: 10001745 stb zero,93(r2)
4d8: 10001785 stb zero,94(r2)
4dc: 100017c5 stb zero,95(r2)
4e0: 10001805 stb zero,96(r2)
4e4: 10001845 stb zero,97(r2)
4e8: 10001885 stb zero,98(r2)
4ec: 100018c5 stb zero,99(r2)
4f0: 00c00104 movi r3,4
4f4: 10c00315 stw r3,12(r2)
4f8: 02000034 movhi r8,0
4fc: 20c00217 ldw r3,8(r4)
500: 01c00034 movhi r7,0
504: 01800034 movhi r6,0
508: 01400034 movhi r5,0
50c: 4207f304 addi r8,r8,8140
510: 39c80a04 addi r7,r7,8232
514: 31882a04 addi r6,r6,8360
518: 29484104 addi r5,r5,8452
51c: 02400074 movhi r9,1
520: 10001915 stw zero,100(r2)
524: 10000015 stw zero,0(r2)
528: 10000115 stw zero,4(r2)
52c: 10000215 stw zero,8(r2)
530: 10000415 stw zero,16(r2)
534: 10000515 stw zero,20(r2)
538: 10000615 stw zero,24(r2)
53c: 10800715 stw r2,28(r2)
540: 12000815 stw r8,32(r2)
544: 11c00915 stw r7,36(r2)
548: 11800a15 stw r6,40(r2)
54c: 11400b15 stw r5,44(r2)
550: 4a400284 addi r9,r9,10
554: 1a400315 stw r9,12(r3)
558: 18001915 stw zero,100(r3)
55c: 18000015 stw zero,0(r3)
560: 18000115 stw zero,4(r3)
564: 18000215 stw zero,8(r3)
568: 18000415 stw zero,16(r3)
56c: 18001705 stb zero,92(r3)
570: 18001745 stb zero,93(r3)
574: 18001785 stb zero,94(r3)
578: 180017c5 stb zero,95(r3)
57c: 18001805 stb zero,96(r3)
580: 18001845 stb zero,97(r3)
584: 18001885 stb zero,98(r3)
588: 180018c5 stb zero,99(r3)
58c: 20800317 ldw r2,12(r4)
590: 024000b4 movhi r9,2
594: 18000515 stw zero,20(r3)
598: 18000615 stw zero,24(r3)
59c: 18c00715 stw r3,28(r3)
5a0: 1a000815 stw r8,32(r3)
5a4: 19c00915 stw r7,36(r3)
5a8: 19800a15 stw r6,40(r3)
5ac: 19400b15 stw r5,44(r3)
5b0: 4a400484 addi r9,r9,18
5b4: 10001915 stw zero,100(r2)
5b8: 10000015 stw zero,0(r2)
5bc: 10000115 stw zero,4(r2)
5c0: 10000215 stw zero,8(r2)
5c4: 12400315 stw r9,12(r2)
5c8: 10000415 stw zero,16(r2)
5cc: 10000515 stw zero,20(r2)
5d0: 10000615 stw zero,24(r2)
5d4: 10001705 stb zero,92(r2)
5d8: 10001745 stb zero,93(r2)
5dc: 10001785 stb zero,94(r2)
5e0: 100017c5 stb zero,95(r2)
5e4: 10001805 stb zero,96(r2)
5e8: 10001845 stb zero,97(r2)
5ec: 10001885 stb zero,98(r2)
5f0: 100018c5 stb zero,99(r2)
5f4: 10800715 stw r2,28(r2)
5f8: 12000815 stw r8,32(r2)
5fc: 11c00915 stw r7,36(r2)
600: 11800a15 stw r6,40(r2)
604: 11400b15 stw r5,44(r2)
608: 00800044 movi r2,1
60c: 20800e15 stw r2,56(r4)
610: f800283a ret
00000614 <__sfmoreglue>:
614: defffc04 addi sp,sp,-16
618: dc800215 stw r18,8(sp)
61c: 2825883a mov r18,r5
620: dc000015 stw r16,0(sp)
624: 01401a04 movi r5,104
628: 2021883a mov r16,r4
62c: 913fffc4 addi r4,r18,-1
630: dfc00315 stw ra,12(sp)
634: dc400115 stw r17,4(sp)
638: 000316c0 call 316c <__mulsi3>
63c: 8009883a mov r4,r16
640: 11401d04 addi r5,r2,116
644: 1023883a mov r17,r2
648: 0000e440 call e44 <_malloc_r>
64c: 1021883a mov r16,r2
650: 10000726 beq r2,zero,670 <__sfmoreglue+0x5c>
654: 11000304 addi r4,r2,12
658: 10000015 stw zero,0(r2)
65c: 14800115 stw r18,4(r2)
660: 11000215 stw r4,8(r2)
664: 89801a04 addi r6,r17,104
668: 000b883a mov r5,zero
66c: 00019200 call 1920 <memset>
670: 8005883a mov r2,r16
674: dfc00317 ldw ra,12(sp)
678: dc800217 ldw r18,8(sp)
67c: dc400117 ldw r17,4(sp)
680: dc000017 ldw r16,0(sp)
684: dec00404 addi sp,sp,16
688: f800283a ret
0000068c <__sfp>:
68c: defffb04 addi sp,sp,-20
690: 00800034 movhi r2,0
694: dc000015 stw r16,0(sp)
698: 141c8017 ldw r16,29184(r2)
69c: dc400115 stw r17,4(sp)
6a0: dfc00415 stw ra,16(sp)
6a4: 80800e17 ldw r2,56(r16)
6a8: dcc00315 stw r19,12(sp)
6ac: dc800215 stw r18,8(sp)
6b0: 2023883a mov r17,r4
6b4: 10003126 beq r2,zero,77c <__sfp+0xf0>
6b8: 8100ba17 ldw r4,744(r16)
6bc: 8140b917 ldw r5,740(r16)
6c0: 04c00104 movi r19,4
6c4: 8400b804 addi r16,r16,736
6c8: 297fffc4 addi r5,r5,-1
6cc: 2800050e bge r5,zero,6e4 <__sfp+0x58>
6d0: 00002406 br 764 <__sfp+0xd8>
6d4: 297fffc4 addi r5,r5,-1
6d8: 28bfffd8 cmpnei r2,r5,-1
6dc: 21001a04 addi r4,r4,104
6e0: 10002026 beq r2,zero,764 <__sfp+0xd8>
6e4: 2080030f ldh r2,12(r4)
6e8: 103ffa1e bne r2,zero,6d4 <__sfp+0x48>
6ec: 00bffff4 movhi r2,65535
6f0: 10800044 addi r2,r2,1
6f4: 20001915 stw zero,100(r4)
6f8: 20000015 stw zero,0(r4)
6fc: 20000115 stw zero,4(r4)
700: 20000215 stw zero,8(r4)
704: 20800315 stw r2,12(r4)
708: 20000415 stw zero,16(r4)
70c: 20000515 stw zero,20(r4)
710: 20000615 stw zero,24(r4)
714: 20001705 stb zero,92(r4)
718: 20001745 stb zero,93(r4)
71c: 20001785 stb zero,94(r4)
720: 200017c5 stb zero,95(r4)
724: 20001805 stb zero,96(r4)
728: 20001845 stb zero,97(r4)
72c: 20001885 stb zero,98(r4)
730: 200018c5 stb zero,99(r4)
734: 20000c15 stw zero,48(r4)
738: 20000d15 stw zero,52(r4)
73c: 20001115 stw zero,68(r4)
740: 20001215 stw zero,72(r4)
744: 2005883a mov r2,r4
748: dfc00417 ldw ra,16(sp)
74c: dcc00317 ldw r19,12(sp)
750: dc800217 ldw r18,8(sp)
754: dc400117 ldw r17,4(sp)
758: dc000017 ldw r16,0(sp)
75c: dec00504 addi sp,sp,20
760: f800283a ret
764: 80800017 ldw r2,0(r16)
768: 10000726 beq r2,zero,788 <__sfp+0xfc>
76c: 11000217 ldw r4,8(r2)
770: 11400117 ldw r5,4(r2)
774: 1021883a mov r16,r2
778: 003fd306 br 6c8 <__sfp+0x3c>
77c: 8009883a mov r4,r16
780: 00004ac0 call 4ac <__sinit.part.0>
784: 003fcc06 br 6b8 <__sfp+0x2c>
788: 01406b04 movi r5,428
78c: 8809883a mov r4,r17
790: 0000e440 call e44 <_malloc_r>
794: 1025883a mov r18,r2
798: 10000c26 beq r2,zero,7cc <__sfp+0x140>
79c: 11000304 addi r4,r2,12
7a0: 11000215 stw r4,8(r2)
7a4: 000b883a mov r5,zero
7a8: 10000015 stw zero,0(r2)
7ac: 14c00115 stw r19,4(r2)
7b0: 01806804 movi r6,416
7b4: 00019200 call 1920 <memset>
7b8: 1009883a mov r4,r2
7bc: 84800015 stw r18,0(r16)
7c0: 014000c4 movi r5,3
7c4: 9021883a mov r16,r18
7c8: 003fc606 br 6e4 <__sfp+0x58>
7cc: 80000015 stw zero,0(r16)
7d0: 00800304 movi r2,12
7d4: 88800015 stw r2,0(r17)
7d8: 0009883a mov r4,zero
7dc: 003fd906 br 744 <__sfp+0xb8>
000007e0 <_cleanup>:
7e0: 00800034 movhi r2,0
7e4: 111c8017 ldw r4,29184(r2)
7e8: 01400034 movhi r5,0
7ec: 2948fb04 addi r5,r5,9196
7f0: 0000d9c1 jmpi d9c <_fwalk_reent>
000007f4 <__sinit>:
7f4: 20800e17 ldw r2,56(r4)
7f8: 10000126 beq r2,zero,800 <__sinit+0xc>
7fc: f800283a ret
800: 00004ac1 jmpi 4ac <__sinit.part.0>
00000804 <__sfp_lock_acquire>:
804: f800283a ret
00000808 <__sfp_lock_release>:
808: f800283a ret
0000080c <__sinit_lock_acquire>:
80c: f800283a ret
00000810 <__sinit_lock_release>:
810: f800283a ret
00000814 <__fp_lock_all>:
814: 00800034 movhi r2,0
818: 111c8117 ldw r4,29188(r2)
81c: 01400034 movhi r5,0
820: 29412404 addi r5,r5,1168
824: 0000d041 jmpi d04 <_fwalk>
00000828 <__fp_unlock_all>:
828: 00800034 movhi r2,0
82c: 111c8117 ldw r4,29188(r2)
830: 01400034 movhi r5,0
834: 29412904 addi r5,r5,1188
838: 0000d041 jmpi d04 <_fwalk>
0000083c <__sfvwrite_r>:
83c: 30800217 ldw r2,8(r6)
840: 1000a326 beq r2,zero,ad0 <__sfvwrite_r+0x294>
844: 29c0030b ldhu r7,12(r5)
848: defff404 addi sp,sp,-48
84c: ddc00915 stw r23,36(sp)
850: dd400715 stw r21,28(sp)
854: dc000215 stw r16,8(sp)
858: dfc00b15 stw ra,44(sp)
85c: df000a15 stw fp,40(sp)
860: dd800815 stw r22,32(sp)
864: dd000615 stw r20,24(sp)
868: dcc00515 stw r19,20(sp)
86c: dc800415 stw r18,16(sp)
870: dc400315 stw r17,12(sp)
874: 3880020c andi r2,r7,8
878: 302f883a mov r23,r6
87c: 202b883a mov r21,r4
880: 2821883a mov r16,r5
884: 10002226 beq r2,zero,910 <__sfvwrite_r+0xd4>
888: 28800417 ldw r2,16(r5)
88c: 10002026 beq r2,zero,910 <__sfvwrite_r+0xd4>
890: 3880008c andi r2,r7,2
894: bc400017 ldw r17,0(r23)
898: 10002526 beq r2,zero,930 <__sfvwrite_r+0xf4>
89c: 80800917 ldw r2,36(r16)
8a0: 81400717 ldw r5,28(r16)
8a4: 05200034 movhi r20,32768
8a8: 0027883a mov r19,zero
8ac: 0025883a mov r18,zero
8b0: a53f0004 addi r20,r20,-1024
8b4: 980d883a mov r6,r19
8b8: a809883a mov r4,r21
8bc: 90001026 beq r18,zero,900 <__sfvwrite_r+0xc4>
8c0: 900f883a mov r7,r18
8c4: a480012e bgeu r20,r18,8cc <__sfvwrite_r+0x90>
8c8: a00f883a mov r7,r20
8cc: 103ee83a callr r2
8d0: 00807a0e bge zero,r2,abc <__sfvwrite_r+0x280>
8d4: b9000217 ldw r4,8(r23)
8d8: 98a7883a add r19,r19,r2
8dc: 90a5c83a sub r18,r18,r2
8e0: 2085c83a sub r2,r4,r2
8e4: b8800215 stw r2,8(r23)
8e8: 10006326 beq r2,zero,a78 <__sfvwrite_r+0x23c>
8ec: 80800917 ldw r2,36(r16)
8f0: 81400717 ldw r5,28(r16)
8f4: 980d883a mov r6,r19
8f8: a809883a mov r4,r21
8fc: 903ff01e bne r18,zero,8c0 <__sfvwrite_r+0x84>
900: 8cc00017 ldw r19,0(r17)
904: 8c800117 ldw r18,4(r17)
908: 8c400204 addi r17,r17,8
90c: 003fe906 br 8b4 <__sfvwrite_r+0x78>
910: 800b883a mov r5,r16
914: a809883a mov r4,r21
918: 00021700 call 2170 <__swsetup_r>
91c: 1000f71e bne r2,zero,cfc <__sfvwrite_r+0x4c0>
920: 81c0030b ldhu r7,12(r16)
924: bc400017 ldw r17,0(r23)
928: 3880008c andi r2,r7,2
92c: 103fdb1e bne r2,zero,89c <__sfvwrite_r+0x60>
930: 3880004c andi r2,r7,1
934: 84800217 ldw r18,8(r16)
938: 82000017 ldw r8,0(r16)
93c: 1000661e bne r2,zero,ad8 <__sfvwrite_r+0x29c>
940: 00a00034 movhi r2,32768
944: 10bfff84 addi r2,r2,-2
948: 00e00034 movhi r3,32768
94c: d8800015 stw r2,0(sp)
950: 18bfffc4 addi r2,r3,-1
954: 0039883a mov fp,zero
958: 0027883a mov r19,zero
95c: d8800115 stw r2,4(sp)
960: 98004126 beq r19,zero,a68 <__sfvwrite_r+0x22c>
964: 3880800c andi r2,r7,512
968: 10009726 beq r2,zero,bc8 <__sfvwrite_r+0x38c>
96c: 902d883a mov r22,r18
970: 9c80be36 bltu r19,r18,c6c <__sfvwrite_r+0x430>
974: 3881200c andi r2,r7,1152
978: 10002626 beq r2,zero,a14 <__sfvwrite_r+0x1d8>
97c: 81800517 ldw r6,20(r16)
980: 81400417 ldw r5,16(r16)
984: 98800044 addi r2,r19,1
988: 3189883a add r4,r6,r6
98c: 2189883a add r4,r4,r6
990: 2028d7fa srli r20,r4,31
994: 4165c83a sub r18,r8,r5
998: 1485883a add r2,r2,r18
99c: a109883a add r4,r20,r4
9a0: 2029d07a srai r20,r4,1
9a4: a00d883a mov r6,r20
9a8: a080022e bgeu r20,r2,9b4 <__sfvwrite_r+0x178>
9ac: 1029883a mov r20,r2
9b0: 100d883a mov r6,r2
9b4: 39c1000c andi r7,r7,1024
9b8: 3800c026 beq r7,zero,cbc <__sfvwrite_r+0x480>
9bc: a809883a mov r4,r21
9c0: 300b883a mov r5,r6
9c4: 0000e440 call e44 <_malloc_r>
9c8: 1009883a mov r4,r2
9cc: 1000c726 beq r2,zero,cec <__sfvwrite_r+0x4b0>
9d0: 81400417 ldw r5,16(r16)
9d4: 900d883a mov r6,r18
9d8: 00016f40 call 16f4 <memcpy>
9dc: 1009883a mov r4,r2
9e0: 8080030b ldhu r2,12(r16)
9e4: 00fedfc4 movi r3,-1153
9e8: 10c4703a and r2,r2,r3
9ec: 10802014 ori r2,r2,128
9f0: 8080030d sth r2,12(r16)
9f4: 2491883a add r8,r4,r18
9f8: a485c83a sub r2,r20,r18
9fc: 81000415 stw r4,16(r16)
a00: 82000015 stw r8,0(r16)
a04: 85000515 stw r20,20(r16)
a08: 9825883a mov r18,r19
a0c: 80800215 stw r2,8(r16)
a10: 982d883a mov r22,r19
a14: 4009883a mov r4,r8
a18: b00d883a mov r6,r22
a1c: e00b883a mov r5,fp
a20: 00017f40 call 17f4 <memmove>
a24: 81000217 ldw r4,8(r16)
a28: 80800017 ldw r2,0(r16)
a2c: 9829883a mov r20,r19
a30: 24a5c83a sub r18,r4,r18
a34: 1585883a add r2,r2,r22
a38: 84800215 stw r18,8(r16)
a3c: 80800015 stw r2,0(r16)
a40: 0027883a mov r19,zero
a44: b8800217 ldw r2,8(r23)
a48: e539883a add fp,fp,r20
a4c: 1529c83a sub r20,r2,r20
a50: bd000215 stw r20,8(r23)
a54: a0000826 beq r20,zero,a78 <__sfvwrite_r+0x23c>
a58: 81c0030b ldhu r7,12(r16)
a5c: 84800217 ldw r18,8(r16)
a60: 82000017 ldw r8,0(r16)
a64: 983fbf1e bne r19,zero,964 <__sfvwrite_r+0x128>
a68: 8f000017 ldw fp,0(r17)
a6c: 8cc00117 ldw r19,4(r17)
a70: 8c400204 addi r17,r17,8
a74: 003fba06 br 960 <__sfvwrite_r+0x124>
a78: 0005883a mov r2,zero
a7c: dfc00b17 ldw ra,44(sp)
a80: df000a17 ldw fp,40(sp)
a84: ddc00917 ldw r23,36(sp)
a88: dd800817 ldw r22,32(sp)
a8c: dd400717 ldw r21,28(sp)
a90: dd000617 ldw r20,24(sp)
a94: dcc00517 ldw r19,20(sp)
a98: dc800417 ldw r18,16(sp)
a9c: dc400317 ldw r17,12(sp)
aa0: dc000217 ldw r16,8(sp)
aa4: dec00c04 addi sp,sp,48
aa8: f800283a ret
aac: 800b883a mov r5,r16
ab0: a809883a mov r4,r21
ab4: 00026f40 call 26f4 <_fflush_r>
ab8: 10002026 beq r2,zero,b3c <__sfvwrite_r+0x300>
abc: 8080030b ldhu r2,12(r16)
ac0: 10801014 ori r2,r2,64
ac4: 8080030d sth r2,12(r16)
ac8: 00bfffc4 movi r2,-1
acc: 003feb06 br a7c <__sfvwrite_r+0x240>
ad0: 0005883a mov r2,zero
ad4: f800283a ret
ad8: 002d883a mov r22,zero
adc: 0027883a mov r19,zero
ae0: 0005883a mov r2,zero
ae4: 0039883a mov fp,zero
ae8: b0001d26 beq r22,zero,b60 <__sfvwrite_r+0x324>
aec: 10002026 beq r2,zero,b70 <__sfvwrite_r+0x334>
af0: 9829883a mov r20,r19
af4: b500012e bgeu r22,r20,afc <__sfvwrite_r+0x2c0>
af8: b029883a mov r20,r22
afc: 80800417 ldw r2,16(r16)
b00: 81c00517 ldw r7,20(r16)
b04: 1200022e bgeu r2,r8,b10 <__sfvwrite_r+0x2d4>
b08: 3ca5883a add r18,r7,r18
b0c: 95002216 blt r18,r20,b98 <__sfvwrite_r+0x35c>
b10: a1c05916 blt r20,r7,c78 <__sfvwrite_r+0x43c>
b14: 80800917 ldw r2,36(r16)
b18: 81400717 ldw r5,28(r16)
b1c: e00d883a mov r6,fp
b20: a809883a mov r4,r21
b24: 103ee83a callr r2
b28: 1025883a mov r18,r2
b2c: 00bfe30e bge zero,r2,abc <__sfvwrite_r+0x280>
b30: 9ca7c83a sub r19,r19,r18
b34: 983fdd26 beq r19,zero,aac <__sfvwrite_r+0x270>
b38: 00800044 movi r2,1
b3c: b9800217 ldw r6,8(r23)
b40: e4b9883a add fp,fp,r18
b44: b4adc83a sub r22,r22,r18
b48: 34a5c83a sub r18,r6,r18
b4c: bc800215 stw r18,8(r23)
b50: 903fc926 beq r18,zero,a78 <__sfvwrite_r+0x23c>
b54: 84800217 ldw r18,8(r16)
b58: 82000017 ldw r8,0(r16)
b5c: b03fe31e bne r22,zero,aec <__sfvwrite_r+0x2b0>
b60: 8d800117 ldw r22,4(r17)
b64: 8f000017 ldw fp,0(r17)
b68: 8c400204 addi r17,r17,8
b6c: b03ffc26 beq r22,zero,b60 <__sfvwrite_r+0x324>
b70: b00d883a mov r6,r22
b74: 01400284 movi r5,10
b78: e009883a mov r4,fp
b7c: da000015 stw r8,0(sp)
b80: 00016240 call 1624 <memchr>
b84: da000017 ldw r8,0(sp)
b88: 10004926 beq r2,zero,cb0 <__sfvwrite_r+0x474>
b8c: 10800044 addi r2,r2,1
b90: 1727c83a sub r19,r2,fp
b94: 003fd606 br af0 <__sfvwrite_r+0x2b4>
b98: e00b883a mov r5,fp
b9c: 4009883a mov r4,r8
ba0: 900d883a mov r6,r18
ba4: 00017f40 call 17f4 <memmove>
ba8: 80800017 ldw r2,0(r16)
bac: 800b883a mov r5,r16
bb0: a809883a mov r4,r21
bb4: 1485883a add r2,r2,r18
bb8: 80800015 stw r2,0(r16)
bbc: 00026f40 call 26f4 <_fflush_r>
bc0: 103fdb26 beq r2,zero,b30 <__sfvwrite_r+0x2f4>
bc4: 003fbd06 br abc <__sfvwrite_r+0x280>
bc8: 80800417 ldw r2,16(r16)
bcc: 12001436 bltu r2,r8,c20 <__sfvwrite_r+0x3e4>
bd0: 85000517 ldw r20,20(r16)
bd4: 9d001236 bltu r19,r20,c20 <__sfvwrite_r+0x3e4>
bd8: d8800017 ldw r2,0(sp)
bdc: 14c0322e bgeu r2,r19,ca8 <__sfvwrite_r+0x46c>
be0: d9000117 ldw r4,4(sp)
be4: a00b883a mov r5,r20
be8: 0002fb80 call 2fb8 <__divsi3>
bec: a00b883a mov r5,r20
bf0: 1009883a mov r4,r2
bf4: 000316c0 call 316c <__mulsi3>
bf8: 82000917 ldw r8,36(r16)
bfc: 81400717 ldw r5,28(r16)
c00: 100f883a mov r7,r2
c04: e00d883a mov r6,fp
c08: a809883a mov r4,r21
c0c: 403ee83a callr r8
c10: 1029883a mov r20,r2
c14: 00bfa90e bge zero,r2,abc <__sfvwrite_r+0x280>
c18: 9d27c83a sub r19,r19,r20
c1c: 003f8906 br a44 <__sfvwrite_r+0x208>
c20: 9029883a mov r20,r18
c24: 9c80012e bgeu r19,r18,c2c <__sfvwrite_r+0x3f0>
c28: 9829883a mov r20,r19
c2c: 4009883a mov r4,r8
c30: a00d883a mov r6,r20
c34: e00b883a mov r5,fp
c38: 00017f40 call 17f4 <memmove>
c3c: 80800217 ldw r2,8(r16)
c40: 81000017 ldw r4,0(r16)
c44: 1505c83a sub r2,r2,r20
c48: 2509883a add r4,r4,r20
c4c: 80800215 stw r2,8(r16)
c50: 81000015 stw r4,0(r16)
c54: 103ff01e bne r2,zero,c18 <__sfvwrite_r+0x3dc>
c58: 800b883a mov r5,r16
c5c: a809883a mov r4,r21
c60: 00026f40 call 26f4 <_fflush_r>
c64: 103fec26 beq r2,zero,c18 <__sfvwrite_r+0x3dc>
c68: 003f9406 br abc <__sfvwrite_r+0x280>
c6c: 9825883a mov r18,r19
c70: 982d883a mov r22,r19
c74: 003f6706 br a14 <__sfvwrite_r+0x1d8>
c78: 4009883a mov r4,r8
c7c: a00d883a mov r6,r20
c80: e00b883a mov r5,fp
c84: 00017f40 call 17f4 <memmove>
c88: 81000217 ldw r4,8(r16)
c8c: 80800017 ldw r2,0(r16)
c90: a025883a mov r18,r20
c94: 2509c83a sub r4,r4,r20
c98: 1505883a add r2,r2,r20
c9c: 81000215 stw r4,8(r16)
ca0: 80800015 stw r2,0(r16)
ca4: 003fa206 br b30 <__sfvwrite_r+0x2f4>
ca8: 9809883a mov r4,r19
cac: 003fcd06 br be4 <__sfvwrite_r+0x3a8>
cb0: b5000044 addi r20,r22,1
cb4: a027883a mov r19,r20
cb8: 003f8e06 br af4 <__sfvwrite_r+0x2b8>
cbc: a809883a mov r4,r21
cc0: 0001a100 call 1a10 <_realloc_r>
cc4: 1009883a mov r4,r2
cc8: 103f4a1e bne r2,zero,9f4 <__sfvwrite_r+0x1b8>
ccc: 81400417 ldw r5,16(r16)
cd0: a809883a mov r4,r21
cd4: 00028f40 call 28f4 <_free_r>
cd8: 8080030b ldhu r2,12(r16)
cdc: 00c00304 movi r3,12
ce0: a8c00015 stw r3,0(r21)
ce4: 10bfdfcc andi r2,r2,65407
ce8: 003f7506 br ac0 <__sfvwrite_r+0x284>
cec: 00c00304 movi r3,12
cf0: 8080030b ldhu r2,12(r16)
cf4: a8c00015 stw r3,0(r21)
cf8: 003f7106 br ac0 <__sfvwrite_r+0x284>
cfc: 00bfffc4 movi r2,-1
d00: 003f5e06 br a7c <__sfvwrite_r+0x240>
00000d04 <_fwalk>:
d04: defffa04 addi sp,sp,-24
d08: dd000415 stw r20,16(sp)
d0c: dcc00315 stw r19,12(sp)
d10: dc800215 stw r18,8(sp)
d14: dfc00515 stw ra,20(sp)
d18: dc400115 stw r17,4(sp)
d1c: dc000015 stw r16,0(sp)
d20: 2827883a mov r19,r5
d24: 2480b804 addi r18,r4,736
d28: 0029883a mov r20,zero
d2c: 94400117 ldw r17,4(r18)
d30: 94000217 ldw r16,8(r18)
d34: 8c7fffc4 addi r17,r17,-1
d38: 88000d16 blt r17,zero,d70 <_fwalk+0x6c>
d3c: 8080030b ldhu r2,12(r16)
d40: 8c7fffc4 addi r17,r17,-1
d44: 108000b0 cmpltui r2,r2,2
d48: 1000061e bne r2,zero,d64 <_fwalk+0x60>
d4c: 8080038f ldh r2,14(r16)
d50: 8009883a mov r4,r16
d54: 10bfffe0 cmpeqi r2,r2,-1
d58: 1000021e bne r2,zero,d64 <_fwalk+0x60>
d5c: 983ee83a callr r19
d60: a0a8b03a or r20,r20,r2
d64: 88bfffd8 cmpnei r2,r17,-1
d68: 84001a04 addi r16,r16,104
d6c: 103ff31e bne r2,zero,d3c <_fwalk+0x38>
d70: 94800017 ldw r18,0(r18)
d74: 903fed1e bne r18,zero,d2c <_fwalk+0x28>
d78: a005883a mov r2,r20
d7c: dfc00517 ldw ra,20(sp)
d80: dd000417 ldw r20,16(sp)
d84: dcc00317 ldw r19,12(sp)
d88: dc800217 ldw r18,8(sp)
d8c: dc400117 ldw r17,4(sp)
d90: dc000017 ldw r16,0(sp)
d94: dec00604 addi sp,sp,24
d98: f800283a ret
00000d9c <_fwalk_reent>:
d9c: defff904 addi sp,sp,-28
da0: dd400515 stw r21,20(sp)
da4: dd000415 stw r20,16(sp)
da8: dcc00315 stw r19,12(sp)
dac: dc800215 stw r18,8(sp)
db0: dfc00615 stw ra,24(sp)
db4: dc400115 stw r17,4(sp)
db8: dc000015 stw r16,0(sp)
dbc: 202b883a mov r21,r4
dc0: 2827883a mov r19,r5
dc4: 2480b804 addi r18,r4,736
dc8: 0029883a mov r20,zero
dcc: 94400117 ldw r17,4(r18)
dd0: 94000217 ldw r16,8(r18)
dd4: 8c7fffc4 addi r17,r17,-1
dd8: 88000e16 blt r17,zero,e14 <_fwalk_reent+0x78>
ddc: 8080030b ldhu r2,12(r16)
de0: 8c7fffc4 addi r17,r17,-1
de4: 108000b0 cmpltui r2,r2,2
de8: 1000071e bne r2,zero,e08 <_fwalk_reent+0x6c>
dec: 8080038f ldh r2,14(r16)
df0: 800b883a mov r5,r16
df4: a809883a mov r4,r21
df8: 10bfffe0 cmpeqi r2,r2,-1
dfc: 1000021e bne r2,zero,e08 <_fwalk_reent+0x6c>
e00: 983ee83a callr r19
e04: a0a8b03a or r20,r20,r2
e08: 88bfffd8 cmpnei r2,r17,-1
e0c: 84001a04 addi r16,r16,104
e10: 103ff21e bne r2,zero,ddc <_fwalk_reent+0x40>
e14: 94800017 ldw r18,0(r18)
e18: 903fec1e bne r18,zero,dcc <_fwalk_reent+0x30>
e1c: a005883a mov r2,r20
e20: dfc00617 ldw ra,24(sp)
e24: dd400517 ldw r21,20(sp)
e28: dd000417 ldw r20,16(sp)
e2c: dcc00317 ldw r19,12(sp)
e30: dc800217 ldw r18,8(sp)
e34: dc400117 ldw r17,4(sp)
e38: dc000017 ldw r16,0(sp)
e3c: dec00704 addi sp,sp,28
e40: f800283a ret
00000e44 <_malloc_r>:
e44: defff604 addi sp,sp,-40
e48: dc400115 stw r17,4(sp)
e4c: 2c4002c4 addi r17,r5,11
e50: dc800215 stw r18,8(sp)
e54: dfc00915 stw ra,36(sp)
e58: df000815 stw fp,32(sp)
e5c: ddc00715 stw r23,28(sp)
e60: dd800615 stw r22,24(sp)
e64: dd400515 stw r21,20(sp)
e68: dd000415 stw r20,16(sp)
e6c: dcc00315 stw r19,12(sp)
e70: dc000015 stw r16,0(sp)
e74: 888005e8 cmpgeui r2,r17,23
e78: 2025883a mov r18,r4
e7c: 10001b1e bne r2,zero,eec <_malloc_r+0xa8>
e80: 29400468 cmpgeui r5,r5,17
e84: 2800821e bne r5,zero,1090 <_malloc_r+0x24c>
e88: 000367c0 call 367c <__malloc_lock>
e8c: 04400404 movi r17,16
e90: 00800604 movi r2,24
e94: 01c00084 movi r7,2
e98: 04c00034 movhi r19,0
e9c: 9cd6fc04 addi r19,r19,23536
ea0: 9885883a add r2,r19,r2
ea4: 14000117 ldw r16,4(r2)
ea8: 10fffe04 addi r3,r2,-8
eac: 80c08b26 beq r16,r3,10dc <_malloc_r+0x298>
eb0: 80800117 ldw r2,4(r16)
eb4: 81000317 ldw r4,12(r16)
eb8: 00ffff04 movi r3,-4
ebc: 10c4703a and r2,r2,r3
ec0: 81400217 ldw r5,8(r16)
ec4: 8085883a add r2,r16,r2
ec8: 10c00117 ldw r3,4(r2)
ecc: 29000315 stw r4,12(r5)
ed0: 21400215 stw r5,8(r4)
ed4: 18c00054 ori r3,r3,1
ed8: 10c00115 stw r3,4(r2)
edc: 9009883a mov r4,r18
ee0: 00036a00 call 36a0 <__malloc_unlock>
ee4: 80800204 addi r2,r16,8
ee8: 00006c06 br 109c <_malloc_r+0x258>
eec: 00bffe04 movi r2,-8
ef0: 88a2703a and r17,r17,r2
ef4: 88006616 blt r17,zero,1090 <_malloc_r+0x24c>
ef8: 89406536 bltu r17,r5,1090 <_malloc_r+0x24c>
efc: 000367c0 call 367c <__malloc_lock>
f00: 88807e28 cmpgeui r2,r17,504
f04: 10012226 beq r2,zero,1390 <_malloc_r+0x54c>
f08: 8804d27a srli r2,r17,9
f0c: 10006f26 beq r2,zero,10cc <_malloc_r+0x288>
f10: 10c00168 cmpgeui r3,r2,5
f14: 1800fe1e bne r3,zero,1310 <_malloc_r+0x4cc>
f18: 8804d1ba srli r2,r17,6
f1c: 11c00e44 addi r7,r2,57
f20: 380890fa slli r4,r7,3
f24: 12000e04 addi r8,r2,56
f28: 04c00034 movhi r19,0
f2c: 9cd6fc04 addi r19,r19,23536
f30: 9909883a add r4,r19,r4
f34: 24000117 ldw r16,4(r4)
f38: 213ffe04 addi r4,r4,-8
f3c: 24000b26 beq r4,r16,f6c <_malloc_r+0x128>
f40: 01bfff04 movi r6,-4
f44: 00000306 br f54 <_malloc_r+0x110>
f48: 1800d60e bge r3,zero,12a4 <_malloc_r+0x460>
f4c: 84000317 ldw r16,12(r16)
f50: 24000626 beq r4,r16,f6c <_malloc_r+0x128>
f54: 80800117 ldw r2,4(r16)
f58: 1184703a and r2,r2,r6
f5c: 1447c83a sub r3,r2,r17
f60: 19400408 cmpgei r5,r3,16
f64: 283ff826 beq r5,zero,f48 <_malloc_r+0x104>
f68: 400f883a mov r7,r8
f6c: 9c000417 ldw r16,16(r19)
f70: 02400034 movhi r9,0
f74: 4a56fe04 addi r9,r9,23544
f78: 82405f26 beq r16,r9,10f8 <_malloc_r+0x2b4>
f7c: 80c00117 ldw r3,4(r16)
f80: 00bfff04 movi r2,-4
f84: 1884703a and r2,r3,r2
f88: 1447c83a sub r3,r2,r17
f8c: 19000410 cmplti r4,r3,16
f90: 20010a26 beq r4,zero,13bc <_malloc_r+0x578>
f94: 9a400515 stw r9,20(r19)
f98: 9a400415 stw r9,16(r19)
f9c: 1800ff0e bge r3,zero,139c <_malloc_r+0x558>
fa0: 10c08028 cmpgeui r3,r2,512
fa4: 1800c11e bne r3,zero,12ac <_malloc_r+0x468>
fa8: 1006d0fa srli r3,r2,3
fac: 1008d17a srli r4,r2,5
fb0: 00800044 movi r2,1
fb4: 18c00044 addi r3,r3,1
fb8: 180690fa slli r3,r3,3
fbc: 99400117 ldw r5,4(r19)
fc0: 1104983a sll r2,r2,r4
fc4: 98c7883a add r3,r19,r3
fc8: 19000017 ldw r4,0(r3)
fcc: 1144b03a or r2,r2,r5
fd0: 197ffe04 addi r5,r3,-8
fd4: 81400315 stw r5,12(r16)
fd8: 81000215 stw r4,8(r16)
fdc: 98800115 stw r2,4(r19)
fe0: 1c000015 stw r16,0(r3)
fe4: 24000315 stw r16,12(r4)
fe8: 3807d0ba srai r3,r7,2
fec: 01000044 movi r4,1
ff0: 20c8983a sll r4,r4,r3
ff4: 11004536 bltu r2,r4,110c <_malloc_r+0x2c8>
ff8: 2086703a and r3,r4,r2
ffc: 18000a1e bne r3,zero,1028 <_malloc_r+0x1e4>
1000: 00ffff04 movi r3,-4
1004: 2109883a add r4,r4,r4
1008: 38ce703a and r7,r7,r3
100c: 2086703a and r3,r4,r2
1010: 39c00104 addi r7,r7,4
1014: 1800041e bne r3,zero,1028 <_malloc_r+0x1e4>
1018: 2109883a add r4,r4,r4
101c: 2086703a and r3,r4,r2
1020: 39c00104 addi r7,r7,4
1024: 183ffc26 beq r3,zero,1018 <_malloc_r+0x1d4>
1028: 02bfff04 movi r10,-4
102c: 381690fa slli r11,r7,3
1030: 3819883a mov r12,r7
1034: 9ad7883a add r11,r19,r11
1038: 5811883a mov r8,r11
103c: 40800317 ldw r2,12(r8)
1040: 4080bc26 beq r8,r2,1334 <_malloc_r+0x4f0>
1044: 10c00117 ldw r3,4(r2)
1048: 1021883a mov r16,r2
104c: 10800317 ldw r2,12(r2)
1050: 1a86703a and r3,r3,r10
1054: 1c4bc83a sub r5,r3,r17
1058: 29800410 cmplti r6,r5,16
105c: 3000ba26 beq r6,zero,1348 <_malloc_r+0x504>
1060: 283ff716 blt r5,zero,1040 <_malloc_r+0x1fc>
1064: 80c7883a add r3,r16,r3
1068: 19400117 ldw r5,4(r3)
106c: 81800217 ldw r6,8(r16)
1070: 9009883a mov r4,r18
1074: 29400054 ori r5,r5,1
1078: 19400115 stw r5,4(r3)
107c: 30800315 stw r2,12(r6)
1080: 11800215 stw r6,8(r2)
1084: 00036a00 call 36a0 <__malloc_unlock>
1088: 80800204 addi r2,r16,8
108c: 00000306 br 109c <_malloc_r+0x258>
1090: 00800304 movi r2,12
1094: 90800015 stw r2,0(r18)
1098: 0005883a mov r2,zero
109c: dfc00917 ldw ra,36(sp)
10a0: df000817 ldw fp,32(sp)
10a4: ddc00717 ldw r23,28(sp)
10a8: dd800617 ldw r22,24(sp)
10ac: dd400517 ldw r21,20(sp)
10b0: dd000417 ldw r20,16(sp)
10b4: dcc00317 ldw r19,12(sp)
10b8: dc800217 ldw r18,8(sp)
10bc: dc400117 ldw r17,4(sp)
10c0: dc000017 ldw r16,0(sp)
10c4: dec00a04 addi sp,sp,40
10c8: f800283a ret
10cc: 01008004 movi r4,512
10d0: 01c01004 movi r7,64
10d4: 02000fc4 movi r8,63
10d8: 003f9306 br f28 <_malloc_r+0xe4>
10dc: 14000317 ldw r16,12(r2)
10e0: 39c00084 addi r7,r7,2
10e4: 143f721e bne r2,r16,eb0 <_malloc_r+0x6c>
10e8: 9c000417 ldw r16,16(r19)
10ec: 02400034 movhi r9,0
10f0: 4a56fe04 addi r9,r9,23544
10f4: 827fa11e bne r16,r9,f7c <_malloc_r+0x138>
10f8: 3807d0ba srai r3,r7,2
10fc: 01000044 movi r4,1
1100: 98800117 ldw r2,4(r19)
1104: 20c8983a sll r4,r4,r3
1108: 113fbb2e bgeu r2,r4,ff8 <_malloc_r+0x1b4>
110c: 9c000217 ldw r16,8(r19)
1110: 00bfff04 movi r2,-4
1114: 85400117 ldw r21,4(r16)
1118: a8ac703a and r22,r21,r2
111c: b4400336 bltu r22,r17,112c <_malloc_r+0x2e8>
1120: b445c83a sub r2,r22,r17
1124: 10c00408 cmpgei r3,r2,16
1128: 1800541e bne r3,zero,127c <_malloc_r+0x438>
112c: 00800034 movhi r2,0
1130: 109c8217 ldw r2,29192(r2)
1134: 00c00034 movhi r3,0
1138: 1d5c9017 ldw r21,29248(r3)
113c: 10bfffd8 cmpnei r2,r2,-1
1140: 85b9883a add fp,r16,r22
1144: 8d6b883a add r21,r17,r21
1148: 1000d626 beq r2,zero,14a4 <_malloc_r+0x660>
114c: ad4403c4 addi r21,r21,4111
1150: 00bc0004 movi r2,-4096
1154: a8aa703a and r21,r21,r2
1158: a80b883a mov r5,r21
115c: 9009883a mov r4,r18
1160: 0001f740 call 1f74 <_sbrk_r>
1164: 102f883a mov r23,r2
1168: 10bfffd8 cmpnei r2,r2,-1
116c: 1000a826 beq r2,zero,1410 <_malloc_r+0x5cc>
1170: bf00a636 bltu r23,fp,140c <_malloc_r+0x5c8>
1174: 00800034 movhi r2,0
1178: 151c9917 ldw r20,29284(r2)
117c: ad29883a add r20,r21,r20
1180: 151c9915 stw r20,29284(r2)
1184: a007883a mov r3,r20
1188: e5c0ec26 beq fp,r23,153c <_malloc_r+0x6f8>
118c: 00800034 movhi r2,0
1190: 109c8217 ldw r2,29192(r2)
1194: 10bfffd8 cmpnei r2,r2,-1
1198: 1000ef26 beq r2,zero,1558 <_malloc_r+0x714>
119c: bf39c83a sub fp,r23,fp
11a0: e0c7883a add r3,fp,r3
11a4: 00800034 movhi r2,0
11a8: 10dc9915 stw r3,29284(r2)
11ac: bf0001cc andi fp,r23,7
11b0: e000c526 beq fp,zero,14c8 <_malloc_r+0x684>
11b4: bf2fc83a sub r23,r23,fp
11b8: bdc00204 addi r23,r23,8
11bc: 05040204 movi r20,4104
11c0: a729c83a sub r20,r20,fp
11c4: bd6b883a add r21,r23,r21
11c8: a569c83a sub r20,r20,r21
11cc: a503ffcc andi r20,r20,4095
11d0: a00b883a mov r5,r20
11d4: 9009883a mov r4,r18
11d8: 0001f740 call 1f74 <_sbrk_r>
11dc: 10ffffe0 cmpeqi r3,r2,-1
11e0: 1800f31e bne r3,zero,15b0 <_malloc_r+0x76c>
11e4: 15c5c83a sub r2,r2,r23
11e8: 152b883a add r21,r2,r20
11ec: 00800034 movhi r2,0
11f0: 115c9917 ldw r5,29284(r2)
11f4: 9dc00215 stw r23,8(r19)
11f8: ad400054 ori r21,r21,1
11fc: a169883a add r20,r20,r5
1200: 151c9915 stw r20,29284(r2)
1204: bd400115 stw r21,4(r23)
1208: 84c0d626 beq r16,r19,1564 <_malloc_r+0x720>
120c: b0800428 cmpgeui r2,r22,16
1210: 1000d626 beq r2,zero,156c <_malloc_r+0x728>
1214: 80c00117 ldw r3,4(r16)
1218: 013ffe04 movi r4,-8
121c: b0bffd04 addi r2,r22,-12
1220: 1104703a and r2,r2,r4
1224: 18c0004c andi r3,r3,1
1228: 1886b03a or r3,r3,r2
122c: 80c00115 stw r3,4(r16)
1230: 01000144 movi r4,5
1234: 8087883a add r3,r16,r2
1238: 19000115 stw r4,4(r3)
123c: 19000215 stw r4,8(r3)
1240: 10800428 cmpgeui r2,r2,16
1244: 1000df1e bne r2,zero,15c4 <_malloc_r+0x780>
1248: bd400117 ldw r21,4(r23)
124c: b821883a mov r16,r23
1250: 00800034 movhi r2,0
1254: 109c8f17 ldw r2,29244(r2)
1258: 1500022e bgeu r2,r20,1264 <_malloc_r+0x420>
125c: 00800034 movhi r2,0
1260: 151c8f15 stw r20,29244(r2)
1264: 00800034 movhi r2,0
1268: 109c8e17 ldw r2,29240(r2)
126c: 15006a2e bgeu r2,r20,1418 <_malloc_r+0x5d4>
1270: 00800034 movhi r2,0
1274: 151c8e15 stw r20,29240(r2)
1278: 00006706 br 1418 <_malloc_r+0x5d4>
127c: 88c00054 ori r3,r17,1
1280: 80c00115 stw r3,4(r16)
1284: 8463883a add r17,r16,r17
1288: 10800054 ori r2,r2,1
128c: 9c400215 stw r17,8(r19)
1290: 88800115 stw r2,4(r17)
1294: 9009883a mov r4,r18
1298: 00036a00 call 36a0 <__malloc_unlock>
129c: 80800204 addi r2,r16,8
12a0: 003f7e06 br 109c <_malloc_r+0x258>
12a4: 81000317 ldw r4,12(r16)
12a8: 003f0506 br ec0 <_malloc_r+0x7c>
12ac: 1006d27a srli r3,r2,9
12b0: 19000168 cmpgeui r4,r3,5
12b4: 20005026 beq r4,zero,13f8 <_malloc_r+0x5b4>
12b8: 19000568 cmpgeui r4,r3,21
12bc: 20008c1e bne r4,zero,14f0 <_malloc_r+0x6ac>
12c0: 19401704 addi r5,r3,92
12c4: 280a90fa slli r5,r5,3
12c8: 190016c4 addi r4,r3,91
12cc: 994b883a add r5,r19,r5
12d0: 28c00017 ldw r3,0(r5)
12d4: 297ffe04 addi r5,r5,-8
12d8: 28c07426 beq r5,r3,14ac <_malloc_r+0x668>
12dc: 01bfff04 movi r6,-4
12e0: 19000117 ldw r4,4(r3)
12e4: 2188703a and r4,r4,r6
12e8: 1100022e bgeu r2,r4,12f4 <_malloc_r+0x4b0>
12ec: 18c00217 ldw r3,8(r3)
12f0: 28fffb1e bne r5,r3,12e0 <_malloc_r+0x49c>
12f4: 19400317 ldw r5,12(r3)
12f8: 98800117 ldw r2,4(r19)
12fc: 81400315 stw r5,12(r16)
1300: 80c00215 stw r3,8(r16)
1304: 2c000215 stw r16,8(r5)
1308: 1c000315 stw r16,12(r3)
130c: 003f3606 br fe8 <_malloc_r+0x1a4>
1310: 10c00568 cmpgeui r3,r2,21
1314: 18004a26 beq r3,zero,1440 <_malloc_r+0x5fc>
1318: 10c01568 cmpgeui r3,r2,85
131c: 18007b1e bne r3,zero,150c <_malloc_r+0x6c8>
1320: 8804d33a srli r2,r17,12
1324: 11c01bc4 addi r7,r2,111
1328: 380890fa slli r4,r7,3
132c: 12001b84 addi r8,r2,110
1330: 003efd06 br f28 <_malloc_r+0xe4>
1334: 63000044 addi r12,r12,1
1338: 608000cc andi r2,r12,3
133c: 42000204 addi r8,r8,8
1340: 103f3e1e bne r2,zero,103c <_malloc_r+0x1f8>
1344: 00004506 br 145c <_malloc_r+0x618>
1348: 81000217 ldw r4,8(r16)
134c: 89800054 ori r6,r17,1
1350: 81800115 stw r6,4(r16)
1354: 20800315 stw r2,12(r4)
1358: 11000215 stw r4,8(r2)
135c: 8463883a add r17,r16,r17
1360: 9c400515 stw r17,20(r19)
1364: 9c400415 stw r17,16(r19)
1368: 28800054 ori r2,r5,1
136c: 88800115 stw r2,4(r17)
1370: 8a400315 stw r9,12(r17)
1374: 8a400215 stw r9,8(r17)
1378: 80c7883a add r3,r16,r3
137c: 19400015 stw r5,0(r3)
1380: 9009883a mov r4,r18
1384: 00036a00 call 36a0 <__malloc_unlock>
1388: 80800204 addi r2,r16,8
138c: 003f4306 br 109c <_malloc_r+0x258>
1390: 880ed0fa srli r7,r17,3
1394: 88800204 addi r2,r17,8
1398: 003ebf06 br e98 <_malloc_r+0x54>
139c: 8085883a add r2,r16,r2
13a0: 10c00117 ldw r3,4(r2)
13a4: 9009883a mov r4,r18
13a8: 18c00054 ori r3,r3,1
13ac: 10c00115 stw r3,4(r2)
13b0: 00036a00 call 36a0 <__malloc_unlock>
13b4: 80800204 addi r2,r16,8
13b8: 003f3806 br 109c <_malloc_r+0x258>
13bc: 89000054 ori r4,r17,1
13c0: 81000115 stw r4,4(r16)
13c4: 8463883a add r17,r16,r17
13c8: 9c400515 stw r17,20(r19)
13cc: 9c400415 stw r17,16(r19)
13d0: 19000054 ori r4,r3,1
13d4: 89000115 stw r4,4(r17)
13d8: 8085883a add r2,r16,r2
13dc: 8a400315 stw r9,12(r17)
13e0: 8a400215 stw r9,8(r17)
13e4: 10c00015 stw r3,0(r2)
13e8: 9009883a mov r4,r18
13ec: 00036a00 call 36a0 <__malloc_unlock>
13f0: 80800204 addi r2,r16,8
13f4: 003f2906 br 109c <_malloc_r+0x258>
13f8: 1006d1ba srli r3,r2,6
13fc: 19400e44 addi r5,r3,57
1400: 280a90fa slli r5,r5,3
1404: 19000e04 addi r4,r3,56
1408: 003fb006 br 12cc <_malloc_r+0x488>
140c: 84c04626 beq r16,r19,1528 <_malloc_r+0x6e4>
1410: 9c000217 ldw r16,8(r19)
1414: 85400117 ldw r21,4(r16)
1418: 00bfff04 movi r2,-4
141c: a8aa703a and r21,r21,r2
1420: ac45c83a sub r2,r21,r17
1424: ac400236 bltu r21,r17,1430 <_malloc_r+0x5ec>
1428: 10c00408 cmpgei r3,r2,16
142c: 183f931e bne r3,zero,127c <_malloc_r+0x438>
1430: 9009883a mov r4,r18
1434: 00036a00 call 36a0 <__malloc_unlock>
1438: 0005883a mov r2,zero
143c: 003f1706 br 109c <_malloc_r+0x258>
1440: 11c01704 addi r7,r2,92
1444: 380890fa slli r4,r7,3
1448: 120016c4 addi r8,r2,91
144c: 003eb606 br f28 <_malloc_r+0xe4>
1450: 58800217 ldw r2,8(r11)
1454: 39ffffc4 addi r7,r7,-1
1458: 12c0701e bne r2,r11,161c <_malloc_r+0x7d8>
145c: 388000cc andi r2,r7,3
1460: 5afffe04 addi r11,r11,-8
1464: 103ffa1e bne r2,zero,1450 <_malloc_r+0x60c>
1468: 98c00117 ldw r3,4(r19)
146c: 0104303a nor r2,zero,r4
1470: 10c4703a and r2,r2,r3
1474: 98800115 stw r2,4(r19)
1478: 2109883a add r4,r4,r4
147c: 113f2336 bltu r2,r4,110c <_malloc_r+0x2c8>
1480: 203f2226 beq r4,zero,110c <_malloc_r+0x2c8>
1484: 2086703a and r3,r4,r2
1488: 1800041e bne r3,zero,149c <_malloc_r+0x658>
148c: 2109883a add r4,r4,r4
1490: 2086703a and r3,r4,r2
1494: 63000104 addi r12,r12,4
1498: 183ffc26 beq r3,zero,148c <_malloc_r+0x648>
149c: 600f883a mov r7,r12
14a0: 003ee206 br 102c <_malloc_r+0x1e8>
14a4: ad400404 addi r21,r21,16
14a8: 003f2b06 br 1158 <_malloc_r+0x314>
14ac: 2009d0ba srai r4,r4,2
14b0: 00800044 movi r2,1
14b4: 99800117 ldw r6,4(r19)
14b8: 1104983a sll r2,r2,r4
14bc: 1184b03a or r2,r2,r6
14c0: 98800115 stw r2,4(r19)
14c4: 003f8d06 br 12fc <_malloc_r+0x4b8>
14c8: bd69883a add r20,r23,r21
14cc: 0529c83a sub r20,zero,r20
14d0: a503ffcc andi r20,r20,4095
14d4: a00b883a mov r5,r20
14d8: 9009883a mov r4,r18
14dc: 0001f740 call 1f74 <_sbrk_r>
14e0: 10ffffe0 cmpeqi r3,r2,-1
14e4: 183f3f26 beq r3,zero,11e4 <_malloc_r+0x3a0>
14e8: 0029883a mov r20,zero
14ec: 003f3f06 br 11ec <_malloc_r+0x3a8>
14f0: 19001568 cmpgeui r4,r3,85
14f4: 2000201e bne r4,zero,1578 <_malloc_r+0x734>
14f8: 1006d33a srli r3,r2,12
14fc: 19401bc4 addi r5,r3,111
1500: 280a90fa slli r5,r5,3
1504: 19001b84 addi r4,r3,110
1508: 003f7006 br 12cc <_malloc_r+0x488>
150c: 10c05568 cmpgeui r3,r2,341
1510: 1800201e bne r3,zero,1594 <_malloc_r+0x750>
1514: 8804d3fa srli r2,r17,15
1518: 11c01e04 addi r7,r2,120
151c: 380890fa slli r4,r7,3
1520: 12001dc4 addi r8,r2,119
1524: 003e8006 br f28 <_malloc_r+0xe4>
1528: 00800034 movhi r2,0
152c: 10dc9917 ldw r3,29284(r2)
1530: a8c7883a add r3,r21,r3
1534: 10dc9915 stw r3,29284(r2)
1538: 003f1406 br 118c <_malloc_r+0x348>
153c: e083ffcc andi r2,fp,4095
1540: 103f121e bne r2,zero,118c <_malloc_r+0x348>
1544: 9c000217 ldw r16,8(r19)
1548: b56b883a add r21,r22,r21
154c: ad400054 ori r21,r21,1
1550: 85400115 stw r21,4(r16)
1554: 003f3e06 br 1250 <_malloc_r+0x40c>
1558: 00800034 movhi r2,0
155c: 15dc8215 stw r23,29192(r2)
1560: 003f1206 br 11ac <_malloc_r+0x368>
1564: b821883a mov r16,r23
1568: 003f3906 br 1250 <_malloc_r+0x40c>
156c: 00800044 movi r2,1
1570: b8800115 stw r2,4(r23)
1574: 003fae06 br 1430 <_malloc_r+0x5ec>
1578: 19005568 cmpgeui r4,r3,341
157c: 2000191e bne r4,zero,15e4 <_malloc_r+0x7a0>
1580: 1006d3fa srli r3,r2,15
1584: 19401e04 addi r5,r3,120
1588: 280a90fa slli r5,r5,3
158c: 19001dc4 addi r4,r3,119
1590: 003f4e06 br 12cc <_malloc_r+0x488>
1594: 10815568 cmpgeui r2,r2,1365
1598: 1000191e bne r2,zero,1600 <_malloc_r+0x7bc>
159c: 8804d4ba srli r2,r17,18
15a0: 11c01f44 addi r7,r2,125
15a4: 380890fa slli r4,r7,3
15a8: 12001f04 addi r8,r2,124
15ac: 003e5e06 br f28 <_malloc_r+0xe4>
15b0: e73ffe04 addi fp,fp,-8
15b4: af2b883a add r21,r21,fp
15b8: adebc83a sub r21,r21,r23
15bc: 0029883a mov r20,zero
15c0: 003f0a06 br 11ec <_malloc_r+0x3a8>
15c4: 81400204 addi r5,r16,8
15c8: 9009883a mov r4,r18
15cc: 00028f40 call 28f4 <_free_r>
15d0: 9c000217 ldw r16,8(r19)
15d4: 00800034 movhi r2,0
15d8: 151c9917 ldw r20,29284(r2)
15dc: 85400117 ldw r21,4(r16)
15e0: 003f1b06 br 1250 <_malloc_r+0x40c>
15e4: 18c15568 cmpgeui r3,r3,1365
15e8: 1800091e bne r3,zero,1610 <_malloc_r+0x7cc>
15ec: 1006d4ba srli r3,r2,18
15f0: 19401f44 addi r5,r3,125
15f4: 280a90fa slli r5,r5,3
15f8: 19001f04 addi r4,r3,124
15fc: 003f3306 br 12cc <_malloc_r+0x488>
1600: 0100fe04 movi r4,1016
1604: 01c01fc4 movi r7,127
1608: 02001f84 movi r8,126
160c: 003e4606 br f28 <_malloc_r+0xe4>
1610: 0140fe04 movi r5,1016
1614: 01001f84 movi r4,126
1618: 003f2c06 br 12cc <_malloc_r+0x488>
161c: 98800117 ldw r2,4(r19)
1620: 003f9506 br 1478 <_malloc_r+0x634>
00001624 <memchr>:
1624: 208000cc andi r2,r4,3
1628: 280f883a mov r7,r5
162c: 10000e26 beq r2,zero,1668 <memchr+0x44>
1630: 30bfffc4 addi r2,r6,-1
1634: 30001726 beq r6,zero,1694 <memchr+0x70>
1638: 29803fcc andi r6,r5,255
163c: 00000606 br 1658 <memchr+0x34>
1640: 21000044 addi r4,r4,1
1644: 20c000cc andi r3,r4,3
1648: 18000826 beq r3,zero,166c <memchr+0x48>
164c: 10bfffc4 addi r2,r2,-1
1650: 10ffffe0 cmpeqi r3,r2,-1
1654: 18000f1e bne r3,zero,1694 <memchr+0x70>
1658: 20c00003 ldbu r3,0(r4)
165c: 19bff81e bne r3,r6,1640 <memchr+0x1c>
1660: 2005883a mov r2,r4
1664: f800283a ret
1668: 3005883a mov r2,r6
166c: 10c00128 cmpgeui r3,r2,4
1670: 18000a1e bne r3,zero,169c <memchr+0x78>
1674: 10001e26 beq r2,zero,16f0 <memchr+0xcc>
1678: 2087883a add r3,r4,r2
167c: 39803fcc andi r6,r7,255
1680: 2005883a mov r2,r4
1684: 11000003 ldbu r4,0(r2)
1688: 21bff626 beq r4,r6,1664 <memchr+0x40>
168c: 10800044 addi r2,r2,1
1690: 18bffc1e bne r3,r2,1684 <memchr+0x60>
1694: 0005883a mov r2,zero
1698: f800283a ret
169c: 29403fcc andi r5,r5,255
16a0: 280c923a slli r6,r5,8
16a4: 027fbff4 movhi r9,65279
16a8: 02202074 movhi r8,32897
16ac: 314ab03a or r5,r6,r5
16b0: 280c943a slli r6,r5,16
16b4: 4a7fbfc4 addi r9,r9,-257
16b8: 42202004 addi r8,r8,-32640
16bc: 314cb03a or r6,r6,r5
16c0: 20c00017 ldw r3,0(r4)
16c4: 30c6f03a xor r3,r6,r3
16c8: 1a4b883a add r5,r3,r9
16cc: 00c6303a nor r3,zero,r3
16d0: 28c6703a and r3,r5,r3
16d4: 1a06703a and r3,r3,r8
16d8: 183fe71e bne r3,zero,1678 <memchr+0x54>
16dc: 10bfff04 addi r2,r2,-4
16e0: 10c00128 cmpgeui r3,r2,4
16e4: 21000104 addi r4,r4,4
16e8: 183ff51e bne r3,zero,16c0 <memchr+0x9c>
16ec: 003fe106 br 1674 <memchr+0x50>
16f0: f800283a ret
000016f4 <memcpy>:
16f4: 30c00430 cmpltui r3,r6,16
16f8: 2005883a mov r2,r4
16fc: 18002d1e bne r3,zero,17b4 <memcpy+0xc0>
1700: 2906b03a or r3,r5,r4
1704: 18c000cc andi r3,r3,3
1708: 1800351e bne r3,zero,17e0 <memcpy+0xec>
170c: 32fffc04 addi r11,r6,-16
1710: 5816d13a srli r11,r11,4
1714: 280f883a mov r7,r5
1718: 2007883a mov r3,r4
171c: 5ac00044 addi r11,r11,1
1720: 5816913a slli r11,r11,4
1724: 22d5883a add r10,r4,r11
1728: 39000117 ldw r4,4(r7)
172c: 3a400017 ldw r9,0(r7)
1730: 3a000217 ldw r8,8(r7)
1734: 19000115 stw r4,4(r3)
1738: 39000317 ldw r4,12(r7)
173c: 1a400015 stw r9,0(r3)
1740: 1a000215 stw r8,8(r3)
1744: 19000315 stw r4,12(r3)
1748: 18c00404 addi r3,r3,16
174c: 39c00404 addi r7,r7,16
1750: 50fff51e bne r10,r3,1728 <memcpy+0x34>
1754: 3100030c andi r4,r6,12
1758: 2acb883a add r5,r5,r11
175c: 320003cc andi r8,r6,15
1760: 20002226 beq r4,zero,17ec <memcpy+0xf8>
1764: 280f883a mov r7,r5
1768: 1813883a mov r9,r3
176c: 39c00104 addi r7,r7,4
1770: 3abfff17 ldw r10,-4(r7)
1774: 41c9c83a sub r4,r8,r7
1778: 2909883a add r4,r5,r4
177c: 4a800015 stw r10,0(r9)
1780: 21000128 cmpgeui r4,r4,4
1784: 4a400104 addi r9,r9,4
1788: 203ff81e bne r4,zero,176c <memcpy+0x78>
178c: 413fff04 addi r4,r8,-4
1790: 2008d0ba srli r4,r4,2
1794: 318000cc andi r6,r6,3
1798: 31ffffc4 addi r7,r6,-1
179c: 21000044 addi r4,r4,1
17a0: 200890ba slli r4,r4,2
17a4: 1907883a add r3,r3,r4
17a8: 290b883a add r5,r5,r4
17ac: 3000041e bne r6,zero,17c0 <memcpy+0xcc>
17b0: f800283a ret
17b4: 2007883a mov r3,r4
17b8: 31ffffc4 addi r7,r6,-1
17bc: 303ffc26 beq r6,zero,17b0 <memcpy+0xbc>
17c0: 39c00044 addi r7,r7,1
17c4: 19cf883a add r7,r3,r7
17c8: 29800003 ldbu r6,0(r5)
17cc: 18c00044 addi r3,r3,1
17d0: 29400044 addi r5,r5,1
17d4: 19bfffc5 stb r6,-1(r3)
17d8: 38fffb1e bne r7,r3,17c8 <memcpy+0xd4>
17dc: f800283a ret
17e0: 31ffffc4 addi r7,r6,-1
17e4: 2007883a mov r3,r4
17e8: 003ff506 br 17c0 <memcpy+0xcc>
17ec: 400d883a mov r6,r8
17f0: 003ff106 br 17b8 <memcpy+0xc4>
000017f4 <memmove>:
17f4: 2005883a mov r2,r4
17f8: 29000a2e bgeu r5,r4,1824 <memmove+0x30>
17fc: 2989883a add r4,r5,r6
1800: 1100082e bgeu r2,r4,1824 <memmove+0x30>
1804: 1187883a add r3,r2,r6
1808: 30003e26 beq r6,zero,1904 <memmove+0x110>
180c: 217fffc3 ldbu r5,-1(r4)
1810: 18ffffc4 addi r3,r3,-1
1814: 213fffc4 addi r4,r4,-1
1818: 19400005 stb r5,0(r3)
181c: 10fffb1e bne r2,r3,180c <memmove+0x18>
1820: f800283a ret
1824: 30c00430 cmpltui r3,r6,16
1828: 18000b26 beq r3,zero,1858 <memmove+0x64>
182c: 1007883a mov r3,r2
1830: 31ffffc4 addi r7,r6,-1
1834: 30003726 beq r6,zero,1914 <memmove+0x120>
1838: 39c00044 addi r7,r7,1
183c: 29cf883a add r7,r5,r7
1840: 29800003 ldbu r6,0(r5)
1844: 29400044 addi r5,r5,1
1848: 18c00044 addi r3,r3,1
184c: 19bfffc5 stb r6,-1(r3)
1850: 29fffb1e bne r5,r7,1840 <memmove+0x4c>
1854: f800283a ret
1858: 2886b03a or r3,r5,r2
185c: 18c000cc andi r3,r3,3
1860: 1800291e bne r3,zero,1908 <memmove+0x114>
1864: 327ffc04 addi r9,r6,-16
1868: 4812d13a srli r9,r9,4
186c: 280f883a mov r7,r5
1870: 1007883a mov r3,r2
1874: 4a400044 addi r9,r9,1
1878: 4812913a slli r9,r9,4
187c: 1251883a add r8,r2,r9
1880: 39000017 ldw r4,0(r7)
1884: 39c00404 addi r7,r7,16
1888: 18c00404 addi r3,r3,16
188c: 193ffc15 stw r4,-16(r3)
1890: 393ffd17 ldw r4,-12(r7)
1894: 193ffd15 stw r4,-12(r3)
1898: 393ffe17 ldw r4,-8(r7)
189c: 193ffe15 stw r4,-8(r3)
18a0: 393fff17 ldw r4,-4(r7)
18a4: 193fff15 stw r4,-4(r3)
18a8: 40fff51e bne r8,r3,1880 <memmove+0x8c>
18ac: 3100030c andi r4,r6,12
18b0: 2a4b883a add r5,r5,r9
18b4: 320003cc andi r8,r6,15
18b8: 20001726 beq r4,zero,1918 <memmove+0x124>
18bc: 2813883a mov r9,r5
18c0: 180f883a mov r7,r3
18c4: 4a800017 ldw r10,0(r9)
18c8: 39c00104 addi r7,r7,4
18cc: 41c9c83a sub r4,r8,r7
18d0: 1909883a add r4,r3,r4
18d4: 21000128 cmpgeui r4,r4,4
18d8: 3abfff15 stw r10,-4(r7)
18dc: 4a400104 addi r9,r9,4
18e0: 203ff81e bne r4,zero,18c4 <memmove+0xd0>
18e4: 413fff04 addi r4,r8,-4
18e8: 2008d0ba srli r4,r4,2
18ec: 318000cc andi r6,r6,3
18f0: 21000044 addi r4,r4,1
18f4: 200890ba slli r4,r4,2
18f8: 1907883a add r3,r3,r4
18fc: 290b883a add r5,r5,r4
1900: 003fcb06 br 1830 <memmove+0x3c>
1904: f800283a ret
1908: 31ffffc4 addi r7,r6,-1
190c: 1007883a mov r3,r2
1910: 003fc906 br 1838 <memmove+0x44>
1914: f800283a ret
1918: 400d883a mov r6,r8
191c: 003fc406 br 1830 <memmove+0x3c>
00001920 <memset>:
1920: 20c000cc andi r3,r4,3
1924: 2005883a mov r2,r4
1928: 18003626 beq r3,zero,1a04 <memset+0xe4>
192c: 31ffffc4 addi r7,r6,-1
1930: 30003326 beq r6,zero,1a00 <memset+0xe0>
1934: 2811883a mov r8,r5
1938: 2007883a mov r3,r4
193c: 00000306 br 194c <memset+0x2c>
1940: 39ffffc4 addi r7,r7,-1
1944: 39bfffe0 cmpeqi r6,r7,-1
1948: 30002d1e bne r6,zero,1a00 <memset+0xe0>
194c: 18c00044 addi r3,r3,1
1950: 198000cc andi r6,r3,3
1954: 1a3fffc5 stb r8,-1(r3)
1958: 303ff91e bne r6,zero,1940 <memset+0x20>
195c: 39000130 cmpltui r4,r7,4
1960: 2000221e bne r4,zero,19ec <memset+0xcc>
1964: 29003fcc andi r4,r5,255
1968: 200c923a slli r6,r4,8
196c: 3a000430 cmpltui r8,r7,16
1970: 3108b03a or r4,r6,r4
1974: 200c943a slli r6,r4,16
1978: 310cb03a or r6,r6,r4
197c: 40000e1e bne r8,zero,19b8 <memset+0x98>
1980: 393ffc04 addi r4,r7,-16
1984: 2008d13a srli r4,r4,4
1988: 21000044 addi r4,r4,1
198c: 2008913a slli r4,r4,4
1990: 1909883a add r4,r3,r4
1994: 19800015 stw r6,0(r3)
1998: 19800115 stw r6,4(r3)
199c: 19800215 stw r6,8(r3)
19a0: 19800315 stw r6,12(r3)
19a4: 18c00404 addi r3,r3,16
19a8: 20fffa1e bne r4,r3,1994 <memset+0x74>
19ac: 3900030c andi r4,r7,12
19b0: 39c003cc andi r7,r7,15
19b4: 20000d26 beq r4,zero,19ec <memset+0xcc>
19b8: 1811883a mov r8,r3
19bc: 42000104 addi r8,r8,4
19c0: 3a09c83a sub r4,r7,r8
19c4: 1909883a add r4,r3,r4
19c8: 21000128 cmpgeui r4,r4,4
19cc: 41bfff15 stw r6,-4(r8)
19d0: 203ffa1e bne r4,zero,19bc <memset+0x9c>
19d4: 393fff04 addi r4,r7,-4
19d8: 2008d0ba srli r4,r4,2
19dc: 39c000cc andi r7,r7,3
19e0: 21000044 addi r4,r4,1
19e4: 200890ba slli r4,r4,2
19e8: 1907883a add r3,r3,r4
19ec: 38000426 beq r7,zero,1a00 <memset+0xe0>
19f0: 19cf883a add r7,r3,r7
19f4: 18c00044 addi r3,r3,1
19f8: 197fffc5 stb r5,-1(r3)
19fc: 38fffd1e bne r7,r3,19f4 <memset+0xd4>
1a00: f800283a ret
1a04: 2007883a mov r3,r4
1a08: 300f883a mov r7,r6
1a0c: 003fd306 br 195c <memset+0x3c>
00001a10 <_realloc_r>:
1a10: defff504 addi sp,sp,-44
1a14: dc800315 stw r18,12(sp)
1a18: dfc00a15 stw ra,40(sp)
1a1c: df000915 stw fp,36(sp)
1a20: ddc00815 stw r23,32(sp)
1a24: dd800715 stw r22,28(sp)
1a28: dd400615 stw r21,24(sp)
1a2c: dd000515 stw r20,20(sp)
1a30: dcc00415 stw r19,16(sp)
1a34: dc400215 stw r17,8(sp)
1a38: dc000115 stw r16,4(sp)
1a3c: 3025883a mov r18,r6
1a40: 28008b26 beq r5,zero,1c70 <_realloc_r+0x260>
1a44: 2821883a mov r16,r5
1a48: 2027883a mov r19,r4
1a4c: 944002c4 addi r17,r18,11
1a50: 000367c0 call 367c <__malloc_lock>
1a54: 888005f0 cmpltui r2,r17,23
1a58: 1000521e bne r2,zero,1ba4 <_realloc_r+0x194>
1a5c: 017ffe04 movi r5,-8
1a60: 8962703a and r17,r17,r5
1a64: 8807883a mov r3,r17
1a68: 88005116 blt r17,zero,1bb0 <_realloc_r+0x1a0>
1a6c: 8c805036 bltu r17,r18,1bb0 <_realloc_r+0x1a0>
1a70: 80bfff17 ldw r2,-4(r16)
1a74: 017fff04 movi r5,-4
1a78: 857ffe04 addi r21,r16,-8
1a7c: 1168703a and r20,r2,r5
1a80: ad2d883a add r22,r21,r20
1a84: a0c0390e bge r20,r3,1b6c <_realloc_r+0x15c>
1a88: 07000034 movhi fp,0
1a8c: e716fc04 addi fp,fp,23536
1a90: e2000217 ldw r8,8(fp)
1a94: b1000117 ldw r4,4(r22)
1a98: 45808e26 beq r8,r22,1cd4 <_realloc_r+0x2c4>
1a9c: 01bfff84 movi r6,-2
1aa0: 218c703a and r6,r4,r6
1aa4: b18d883a add r6,r22,r6
1aa8: 31800117 ldw r6,4(r6)
1aac: 3180004c andi r6,r6,1
1ab0: 30004f1e bne r6,zero,1bf0 <_realloc_r+0x1e0>
1ab4: 2148703a and r4,r4,r5
1ab8: a10b883a add r5,r20,r4
1abc: 28c0bf0e bge r5,r3,1dbc <_realloc_r+0x3ac>
1ac0: 1080004c andi r2,r2,1
1ac4: 10004c1e bne r2,zero,1bf8 <_realloc_r+0x1e8>
1ac8: 81fffe17 ldw r7,-8(r16)
1acc: 00bfff04 movi r2,-4
1ad0: a9cfc83a sub r7,r21,r7
1ad4: 39400117 ldw r5,4(r7)
1ad8: 288a703a and r5,r5,r2
1adc: b0000426 beq r22,zero,1af0 <_realloc_r+0xe0>
1ae0: a16f883a add r23,r20,r5
1ae4: b92f883a add r23,r23,r4
1ae8: 4580bf26 beq r8,r22,1de8 <_realloc_r+0x3d8>
1aec: b8c0930e bge r23,r3,1d3c <_realloc_r+0x32c>
1af0: 38004126 beq r7,zero,1bf8 <_realloc_r+0x1e8>
1af4: a16f883a add r23,r20,r5
1af8: b8c03f16 blt r23,r3,1bf8 <_realloc_r+0x1e8>
1afc: 38800317 ldw r2,12(r7)
1b00: 38c00217 ldw r3,8(r7)
1b04: a1bfff04 addi r6,r20,-4
1b08: 31400968 cmpgeui r5,r6,37
1b0c: 18800315 stw r2,12(r3)
1b10: 10c00215 stw r3,8(r2)
1b14: 39000204 addi r4,r7,8
1b18: 3ded883a add r22,r7,r23
1b1c: 2800941e bne r5,zero,1d70 <_realloc_r+0x360>
1b20: 30800530 cmpltui r2,r6,20
1b24: 80c00017 ldw r3,0(r16)
1b28: 1000df1e bne r2,zero,1ea8 <_realloc_r+0x498>
1b2c: 38c00215 stw r3,8(r7)
1b30: 80c00117 ldw r3,4(r16)
1b34: 30800728 cmpgeui r2,r6,28
1b38: 38c00315 stw r3,12(r7)
1b3c: 1000dc1e bne r2,zero,1eb0 <_realloc_r+0x4a0>
1b40: 80c00217 ldw r3,8(r16)
1b44: 38800404 addi r2,r7,16
1b48: 84000204 addi r16,r16,8
1b4c: 10c00015 stw r3,0(r2)
1b50: 80c00117 ldw r3,4(r16)
1b54: b829883a mov r20,r23
1b58: 382b883a mov r21,r7
1b5c: 10c00115 stw r3,4(r2)
1b60: 80c00217 ldw r3,8(r16)
1b64: 2021883a mov r16,r4
1b68: 10c00215 stw r3,8(r2)
1b6c: a9800117 ldw r6,4(r21)
1b70: a445c83a sub r2,r20,r17
1b74: 10c00430 cmpltui r3,r2,16
1b78: 3180004c andi r6,r6,1
1b7c: 18004926 beq r3,zero,1ca4 <_realloc_r+0x294>
1b80: a18cb03a or r6,r20,r6
1b84: a9800115 stw r6,4(r21)
1b88: b0800117 ldw r2,4(r22)
1b8c: 10800054 ori r2,r2,1
1b90: b0800115 stw r2,4(r22)
1b94: 9809883a mov r4,r19
1b98: 00036a00 call 36a0 <__malloc_unlock>
1b9c: 8025883a mov r18,r16
1ba0: 00000606 br 1bbc <_realloc_r+0x1ac>
1ba4: 04400404 movi r17,16
1ba8: 00c00404 movi r3,16
1bac: 8cbfb02e bgeu r17,r18,1a70 <_realloc_r+0x60>
1bb0: 00800304 movi r2,12
1bb4: 98800015 stw r2,0(r19)
1bb8: 0025883a mov r18,zero
1bbc: 9005883a mov r2,r18
1bc0: dfc00a17 ldw ra,40(sp)
1bc4: df000917 ldw fp,36(sp)
1bc8: ddc00817 ldw r23,32(sp)
1bcc: dd800717 ldw r22,28(sp)
1bd0: dd400617 ldw r21,24(sp)
1bd4: dd000517 ldw r20,20(sp)
1bd8: dcc00417 ldw r19,16(sp)
1bdc: dc800317 ldw r18,12(sp)
1be0: dc400217 ldw r17,8(sp)
1be4: dc000117 ldw r16,4(sp)
1be8: dec00b04 addi sp,sp,44
1bec: f800283a ret
1bf0: 1080004c andi r2,r2,1
1bf4: 10006c26 beq r2,zero,1da8 <_realloc_r+0x398>
1bf8: 900b883a mov r5,r18
1bfc: 9809883a mov r4,r19
1c00: 0000e440 call e44 <_malloc_r>
1c04: 1025883a mov r18,r2
1c08: 10001626 beq r2,zero,1c64 <_realloc_r+0x254>
1c0c: 80bfff17 ldw r2,-4(r16)
1c10: 013fff84 movi r4,-2
1c14: 90fffe04 addi r3,r18,-8
1c18: 1104703a and r2,r2,r4
1c1c: a885883a add r2,r21,r2
1c20: 10c05b26 beq r2,r3,1d90 <_realloc_r+0x380>
1c24: a1bfff04 addi r6,r20,-4
1c28: 30800968 cmpgeui r2,r6,37
1c2c: 10006a1e bne r2,zero,1dd8 <_realloc_r+0x3c8>
1c30: 30800530 cmpltui r2,r6,20
1c34: 81000017 ldw r4,0(r16)
1c38: 10003726 beq r2,zero,1d18 <_realloc_r+0x308>
1c3c: 9005883a mov r2,r18
1c40: 8007883a mov r3,r16
1c44: 11000015 stw r4,0(r2)
1c48: 19000117 ldw r4,4(r3)
1c4c: 11000115 stw r4,4(r2)
1c50: 18c00217 ldw r3,8(r3)
1c54: 10c00215 stw r3,8(r2)
1c58: 800b883a mov r5,r16
1c5c: 9809883a mov r4,r19
1c60: 00028f40 call 28f4 <_free_r>
1c64: 9809883a mov r4,r19
1c68: 00036a00 call 36a0 <__malloc_unlock>
1c6c: 003fd306 br 1bbc <_realloc_r+0x1ac>
1c70: 300b883a mov r5,r6
1c74: dfc00a17 ldw ra,40(sp)
1c78: df000917 ldw fp,36(sp)
1c7c: ddc00817 ldw r23,32(sp)
1c80: dd800717 ldw r22,28(sp)
1c84: dd400617 ldw r21,24(sp)
1c88: dd000517 ldw r20,20(sp)
1c8c: dcc00417 ldw r19,16(sp)
1c90: dc800317 ldw r18,12(sp)
1c94: dc400217 ldw r17,8(sp)
1c98: dc000117 ldw r16,4(sp)
1c9c: dec00b04 addi sp,sp,44
1ca0: 0000e441 jmpi e44 <_malloc_r>
1ca4: 344cb03a or r6,r6,r17
1ca8: a9800115 stw r6,4(r21)
1cac: ac4b883a add r5,r21,r17
1cb0: 10800054 ori r2,r2,1
1cb4: 28800115 stw r2,4(r5)
1cb8: b0800117 ldw r2,4(r22)
1cbc: 29400204 addi r5,r5,8
1cc0: 9809883a mov r4,r19
1cc4: 10800054 ori r2,r2,1
1cc8: b0800115 stw r2,4(r22)
1ccc: 00028f40 call 28f4 <_free_r>
1cd0: 003fb006 br 1b94 <_realloc_r+0x184>
1cd4: 2148703a and r4,r4,r5
1cd8: a10b883a add r5,r20,r4
1cdc: 89800404 addi r6,r17,16
1ce0: 29bf7716 blt r5,r6,1ac0 <_realloc_r+0xb0>
1ce4: ac6b883a add r21,r21,r17
1ce8: 2c45c83a sub r2,r5,r17
1cec: e5400215 stw r21,8(fp)
1cf0: 10800054 ori r2,r2,1
1cf4: a8800115 stw r2,4(r21)
1cf8: 80bfff17 ldw r2,-4(r16)
1cfc: 9809883a mov r4,r19
1d00: 8025883a mov r18,r16
1d04: 1080004c andi r2,r2,1
1d08: 1462b03a or r17,r2,r17
1d0c: 847fff15 stw r17,-4(r16)
1d10: 00036a00 call 36a0 <__malloc_unlock>
1d14: 003fa906 br 1bbc <_realloc_r+0x1ac>
1d18: 91000015 stw r4,0(r18)
1d1c: 80c00117 ldw r3,4(r16)
1d20: 30800728 cmpgeui r2,r6,28
1d24: 90c00115 stw r3,4(r18)
1d28: 1000551e bne r2,zero,1e80 <_realloc_r+0x470>
1d2c: 81000217 ldw r4,8(r16)
1d30: 80c00204 addi r3,r16,8
1d34: 90800204 addi r2,r18,8
1d38: 003fc206 br 1c44 <_realloc_r+0x234>
1d3c: b0800317 ldw r2,12(r22)
1d40: b0c00217 ldw r3,8(r22)
1d44: a1bfff04 addi r6,r20,-4
1d48: 31400968 cmpgeui r5,r6,37
1d4c: 18800315 stw r2,12(r3)
1d50: 10c00215 stw r3,8(r2)
1d54: 38c00217 ldw r3,8(r7)
1d58: 38800317 ldw r2,12(r7)
1d5c: 39000204 addi r4,r7,8
1d60: 3ded883a add r22,r7,r23
1d64: 18800315 stw r2,12(r3)
1d68: 10c00215 stw r3,8(r2)
1d6c: 283f6c26 beq r5,zero,1b20 <_realloc_r+0x110>
1d70: 800b883a mov r5,r16
1d74: d9c00015 stw r7,0(sp)
1d78: 00017f40 call 17f4 <memmove>
1d7c: d9c00017 ldw r7,0(sp)
1d80: 1021883a mov r16,r2
1d84: b829883a mov r20,r23
1d88: 382b883a mov r21,r7
1d8c: 003f7706 br 1b6c <_realloc_r+0x15c>
1d90: 90bfff17 ldw r2,-4(r18)
1d94: 00ffff04 movi r3,-4
1d98: 10c4703a and r2,r2,r3
1d9c: a0a9883a add r20,r20,r2
1da0: ad2d883a add r22,r21,r20
1da4: 003f7106 br 1b6c <_realloc_r+0x15c>
1da8: 81fffe17 ldw r7,-8(r16)
1dac: a9cfc83a sub r7,r21,r7
1db0: 38800117 ldw r2,4(r7)
1db4: 114a703a and r5,r2,r5
1db8: 003f4d06 br 1af0 <_realloc_r+0xe0>
1dbc: b0800317 ldw r2,12(r22)
1dc0: b0c00217 ldw r3,8(r22)
1dc4: 2829883a mov r20,r5
1dc8: a96d883a add r22,r21,r5
1dcc: 18800315 stw r2,12(r3)
1dd0: 10c00215 stw r3,8(r2)
1dd4: 003f6506 br 1b6c <_realloc_r+0x15c>
1dd8: 800b883a mov r5,r16
1ddc: 9009883a mov r4,r18
1de0: 00017f40 call 17f4 <memmove>
1de4: 003f9c06 br 1c58 <_realloc_r+0x248>
1de8: 88800404 addi r2,r17,16
1dec: b8bf4016 blt r23,r2,1af0 <_realloc_r+0xe0>
1df0: 38800317 ldw r2,12(r7)
1df4: 38c00217 ldw r3,8(r7)
1df8: a1bfff04 addi r6,r20,-4
1dfc: 31000968 cmpgeui r4,r6,37
1e00: 18800315 stw r2,12(r3)
1e04: 10c00215 stw r3,8(r2)
1e08: 3c800204 addi r18,r7,8
1e0c: 20003b1e bne r4,zero,1efc <_realloc_r+0x4ec>
1e10: 30800530 cmpltui r2,r6,20
1e14: 80c00017 ldw r3,0(r16)
1e18: 1000361e bne r2,zero,1ef4 <_realloc_r+0x4e4>
1e1c: 38c00215 stw r3,8(r7)
1e20: 80c00117 ldw r3,4(r16)
1e24: 30800728 cmpgeui r2,r6,28
1e28: 38c00315 stw r3,12(r7)
1e2c: 1000401e bne r2,zero,1f30 <_realloc_r+0x520>
1e30: 80c00217 ldw r3,8(r16)
1e34: 38800404 addi r2,r7,16
1e38: 84000204 addi r16,r16,8
1e3c: 10c00015 stw r3,0(r2)
1e40: 80c00117 ldw r3,4(r16)
1e44: 10c00115 stw r3,4(r2)
1e48: 80c00217 ldw r3,8(r16)
1e4c: 10c00215 stw r3,8(r2)
1e50: 3c47883a add r3,r7,r17
1e54: bc45c83a sub r2,r23,r17
1e58: e0c00215 stw r3,8(fp)
1e5c: 10800054 ori r2,r2,1
1e60: 18800115 stw r2,4(r3)
1e64: 38800117 ldw r2,4(r7)
1e68: 9809883a mov r4,r19
1e6c: 1080004c andi r2,r2,1
1e70: 1462b03a or r17,r2,r17
1e74: 3c400115 stw r17,4(r7)
1e78: 00036a00 call 36a0 <__malloc_unlock>
1e7c: 003f4f06 br 1bbc <_realloc_r+0x1ac>
1e80: 80800217 ldw r2,8(r16)
1e84: 31800920 cmpeqi r6,r6,36
1e88: 90800215 stw r2,8(r18)
1e8c: 80800317 ldw r2,12(r16)
1e90: 90800315 stw r2,12(r18)
1e94: 81000417 ldw r4,16(r16)
1e98: 30000f1e bne r6,zero,1ed8 <_realloc_r+0x4c8>
1e9c: 80c00404 addi r3,r16,16
1ea0: 90800404 addi r2,r18,16
1ea4: 003f6706 br 1c44 <_realloc_r+0x234>
1ea8: 2005883a mov r2,r4
1eac: 003f2706 br 1b4c <_realloc_r+0x13c>
1eb0: 80800217 ldw r2,8(r16)
1eb4: 31800920 cmpeqi r6,r6,36
1eb8: 38800415 stw r2,16(r7)
1ebc: 80800317 ldw r2,12(r16)
1ec0: 38800515 stw r2,20(r7)
1ec4: 80c00417 ldw r3,16(r16)
1ec8: 3000121e bne r6,zero,1f14 <_realloc_r+0x504>
1ecc: 38800604 addi r2,r7,24
1ed0: 84000404 addi r16,r16,16
1ed4: 003f1d06 br 1b4c <_realloc_r+0x13c>
1ed8: 91000415 stw r4,16(r18)
1edc: 81000517 ldw r4,20(r16)
1ee0: 80c00604 addi r3,r16,24
1ee4: 90800604 addi r2,r18,24
1ee8: 91000515 stw r4,20(r18)
1eec: 81000617 ldw r4,24(r16)
1ef0: 003f5406 br 1c44 <_realloc_r+0x234>
1ef4: 9005883a mov r2,r18
1ef8: 003fd006 br 1e3c <_realloc_r+0x42c>
1efc: 800b883a mov r5,r16
1f00: 9009883a mov r4,r18
1f04: d9c00015 stw r7,0(sp)
1f08: 00017f40 call 17f4 <memmove>
1f0c: d9c00017 ldw r7,0(sp)
1f10: 003fcf06 br 1e50 <_realloc_r+0x440>
1f14: 84000604 addi r16,r16,24
1f18: 38c00615 stw r3,24(r7)
1f1c: 80ffff17 ldw r3,-4(r16)
1f20: 38800804 addi r2,r7,32
1f24: 38c00715 stw r3,28(r7)
1f28: 80c00017 ldw r3,0(r16)
1f2c: 003f0706 br 1b4c <_realloc_r+0x13c>
1f30: 80800217 ldw r2,8(r16)
1f34: 31800920 cmpeqi r6,r6,36
1f38: 38800415 stw r2,16(r7)
1f3c: 80800317 ldw r2,12(r16)
1f40: 38800515 stw r2,20(r7)
1f44: 80c00417 ldw r3,16(r16)
1f48: 3000031e bne r6,zero,1f58 <_realloc_r+0x548>
1f4c: 38800604 addi r2,r7,24
1f50: 84000404 addi r16,r16,16
1f54: 003fb906 br 1e3c <_realloc_r+0x42c>
1f58: 84000604 addi r16,r16,24
1f5c: 38c00615 stw r3,24(r7)
1f60: 80ffff17 ldw r3,-4(r16)
1f64: 38800804 addi r2,r7,32
1f68: 38c00715 stw r3,28(r7)
1f6c: 80c00017 ldw r3,0(r16)
1f70: 003fb206 br 1e3c <_realloc_r+0x42c>
00001f74 <_sbrk_r>:
1f74: defffe04 addi sp,sp,-8
1f78: dc000015 stw r16,0(sp)
1f7c: 00800034 movhi r2,0
1f80: 2021883a mov r16,r4
1f84: 2809883a mov r4,r5
1f88: dfc00115 stw ra,4(sp)
1f8c: 101c9115 stw zero,29252(r2)
1f90: 00038780 call 3878 <sbrk>
1f94: 10ffffd8 cmpnei r3,r2,-1
1f98: 18000426 beq r3,zero,1fac <_sbrk_r+0x38>
1f9c: dfc00117 ldw ra,4(sp)
1fa0: dc000017 ldw r16,0(sp)
1fa4: dec00204 addi sp,sp,8
1fa8: f800283a ret
1fac: 00c00034 movhi r3,0
1fb0: 18dc9117 ldw r3,29252(r3)
1fb4: 183ff926 beq r3,zero,1f9c <_sbrk_r+0x28>
1fb8: 80c00015 stw r3,0(r16)
1fbc: dfc00117 ldw ra,4(sp)
1fc0: dc000017 ldw r16,0(sp)
1fc4: dec00204 addi sp,sp,8
1fc8: f800283a ret
00001fcc <__sread>:
1fcc: defffe04 addi sp,sp,-8
1fd0: dc000015 stw r16,0(sp)
1fd4: 2821883a mov r16,r5
1fd8: 2940038f ldh r5,14(r5)
1fdc: dfc00115 stw ra,4(sp)
1fe0: 0002e9c0 call 2e9c <_read_r>
1fe4: 10000716 blt r2,zero,2004 <__sread+0x38>
1fe8: 80c01417 ldw r3,80(r16)
1fec: 1887883a add r3,r3,r2
1ff0: 80c01415 stw r3,80(r16)
1ff4: dfc00117 ldw ra,4(sp)
1ff8: dc000017 ldw r16,0(sp)
1ffc: dec00204 addi sp,sp,8
2000: f800283a ret
2004: 80c0030b ldhu r3,12(r16)
2008: 18fbffcc andi r3,r3,61439
200c: 80c0030d sth r3,12(r16)
2010: dfc00117 ldw ra,4(sp)
2014: dc000017 ldw r16,0(sp)
2018: dec00204 addi sp,sp,8
201c: f800283a ret
00002020 <__seofread>:
2020: 0005883a mov r2,zero
2024: f800283a ret
00002028 <__swrite>:
2028: 2880030b ldhu r2,12(r5)
202c: defffb04 addi sp,sp,-20
2030: dcc00315 stw r19,12(sp)
2034: dc800215 stw r18,8(sp)
2038: dc400115 stw r17,4(sp)
203c: dc000015 stw r16,0(sp)
2040: dfc00415 stw ra,16(sp)
2044: 10c0400c andi r3,r2,256
2048: 2821883a mov r16,r5
204c: 2023883a mov r17,r4
2050: 2940038f ldh r5,14(r5)
2054: 3025883a mov r18,r6
2058: 3827883a mov r19,r7
205c: 18000c1e bne r3,zero,2090 <__swrite+0x68>
2060: 10bbffcc andi r2,r2,61439
2064: 980f883a mov r7,r19
2068: 900d883a mov r6,r18
206c: 8809883a mov r4,r17
2070: 8080030d sth r2,12(r16)
2074: dfc00417 ldw ra,16(sp)
2078: dcc00317 ldw r19,12(sp)
207c: dc800217 ldw r18,8(sp)
2080: dc400117 ldw r17,4(sp)
2084: dc000017 ldw r16,0(sp)
2088: dec00504 addi sp,sp,20
208c: 000210c1 jmpi 210c <_write_r>
2090: 01c00084 movi r7,2
2094: 000d883a mov r6,zero
2098: 0002bf00 call 2bf0 <_lseek_r>
209c: 8080030b ldhu r2,12(r16)
20a0: 8140038f ldh r5,14(r16)
20a4: 003fee06 br 2060 <__swrite+0x38>
000020a8 <__sseek>:
20a8: defffe04 addi sp,sp,-8
20ac: dc000015 stw r16,0(sp)
20b0: 2821883a mov r16,r5
20b4: 2940038f ldh r5,14(r5)
20b8: dfc00115 stw ra,4(sp)
20bc: 0002bf00 call 2bf0 <_lseek_r>
20c0: 10ffffd8 cmpnei r3,r2,-1
20c4: 18000826 beq r3,zero,20e8 <__sseek+0x40>
20c8: 80c0030b ldhu r3,12(r16)
20cc: 80801415 stw r2,80(r16)
20d0: 18c40014 ori r3,r3,4096
20d4: 80c0030d sth r3,12(r16)
20d8: dfc00117 ldw ra,4(sp)
20dc: dc000017 ldw r16,0(sp)
20e0: dec00204 addi sp,sp,8
20e4: f800283a ret
20e8: 80c0030b ldhu r3,12(r16)
20ec: 18fbffcc andi r3,r3,61439
20f0: 80c0030d sth r3,12(r16)
20f4: dfc00117 ldw ra,4(sp)
20f8: dc000017 ldw r16,0(sp)
20fc: dec00204 addi sp,sp,8
2100: f800283a ret
00002104 <__sclose>:
2104: 2940038f ldh r5,14(r5)
2108: 00022d41 jmpi 22d4 <_close_r>
0000210c <_write_r>:
210c: 2807883a mov r3,r5
2110: defffe04 addi sp,sp,-8
2114: dc000015 stw r16,0(sp)
2118: 300b883a mov r5,r6
211c: 00800034 movhi r2,0
2120: 380d883a mov r6,r7
2124: 2021883a mov r16,r4
2128: 1809883a mov r4,r3
212c: dfc00115 stw ra,4(sp)
2130: 101c9115 stw zero,29252(r2)
2134: 000396c0 call 396c <write>
2138: 10ffffd8 cmpnei r3,r2,-1
213c: 18000426 beq r3,zero,2150 <_write_r+0x44>
2140: dfc00117 ldw ra,4(sp)
2144: dc000017 ldw r16,0(sp)
2148: dec00204 addi sp,sp,8
214c: f800283a ret
2150: 00c00034 movhi r3,0
2154: 18dc9117 ldw r3,29252(r3)
2158: 183ff926 beq r3,zero,2140 <_write_r+0x34>
215c: 80c00015 stw r3,0(r16)
2160: dfc00117 ldw ra,4(sp)
2164: dc000017 ldw r16,0(sp)
2168: dec00204 addi sp,sp,8
216c: f800283a ret
00002170 <__swsetup_r>:
2170: 00800034 movhi r2,0
2174: 109c8117 ldw r2,29188(r2)
2178: defffd04 addi sp,sp,-12
217c: dc400115 stw r17,4(sp)
2180: dc000015 stw r16,0(sp)
2184: dfc00215 stw ra,8(sp)
2188: 2023883a mov r17,r4
218c: 2821883a mov r16,r5
2190: 10000226 beq r2,zero,219c <__swsetup_r+0x2c>
2194: 10c00e17 ldw r3,56(r2)
2198: 18001f26 beq r3,zero,2218 <__swsetup_r+0xa8>
219c: 8180030b ldhu r6,12(r16)
21a0: 30c0020c andi r3,r6,8
21a4: 3005883a mov r2,r6
21a8: 18002126 beq r3,zero,2230 <__swsetup_r+0xc0>
21ac: 80c00417 ldw r3,16(r16)
21b0: 18002826 beq r3,zero,2254 <__swsetup_r+0xe4>
21b4: 1100004c andi r4,r2,1
21b8: 20000b1e bne r4,zero,21e8 <__swsetup_r+0x78>
21bc: 1100008c andi r4,r2,2
21c0: 20002e1e bne r4,zero,227c <__swsetup_r+0x10c>
21c4: 81000517 ldw r4,20(r16)
21c8: 81000215 stw r4,8(r16)
21cc: 18000b26 beq r3,zero,21fc <__swsetup_r+0x8c>
21d0: 0005883a mov r2,zero
21d4: dfc00217 ldw ra,8(sp)
21d8: dc400117 ldw r17,4(sp)
21dc: dc000017 ldw r16,0(sp)
21e0: dec00304 addi sp,sp,12
21e4: f800283a ret
21e8: 81000517 ldw r4,20(r16)
21ec: 80000215 stw zero,8(r16)
21f0: 0109c83a sub r4,zero,r4
21f4: 81000615 stw r4,24(r16)
21f8: 183ff51e bne r3,zero,21d0 <__swsetup_r+0x60>
21fc: 10c0200c andi r3,r2,128
2200: 0005883a mov r2,zero
2204: 183ff326 beq r3,zero,21d4 <__swsetup_r+0x64>
2208: 31801014 ori r6,r6,64
220c: 8180030d sth r6,12(r16)
2210: 00bfffc4 movi r2,-1
2214: 003fef06 br 21d4 <__swsetup_r+0x64>
2218: 1009883a mov r4,r2
221c: 00007f40 call 7f4 <__sinit>
2220: 8180030b ldhu r6,12(r16)
2224: 30c0020c andi r3,r6,8
2228: 3005883a mov r2,r6
222c: 183fdf1e bne r3,zero,21ac <__swsetup_r+0x3c>
2230: 3080040c andi r2,r6,16
2234: 10002126 beq r2,zero,22bc <__swsetup_r+0x14c>
2238: 3080010c andi r2,r6,4
223c: 1000111e bne r2,zero,2284 <__swsetup_r+0x114>
2240: 80c00417 ldw r3,16(r16)
2244: 30800214 ori r2,r6,8
2248: 8080030d sth r2,12(r16)
224c: 100d883a mov r6,r2
2250: 183fd81e bne r3,zero,21b4 <__swsetup_r+0x44>
2254: 1100a00c andi r4,r2,640
2258: 21008020 cmpeqi r4,r4,512
225c: 203fd51e bne r4,zero,21b4 <__swsetup_r+0x44>
2260: 800b883a mov r5,r16
2264: 8809883a mov r4,r17
2268: 0002c540 call 2c54 <__smakebuf_r>
226c: 8180030b ldhu r6,12(r16)
2270: 80c00417 ldw r3,16(r16)
2274: 3005883a mov r2,r6
2278: 003fce06 br 21b4 <__swsetup_r+0x44>
227c: 0009883a mov r4,zero
2280: 003fd106 br 21c8 <__swsetup_r+0x58>
2284: 81400c17 ldw r5,48(r16)
2288: 28000626 beq r5,zero,22a4 <__swsetup_r+0x134>
228c: 80801004 addi r2,r16,64
2290: 28800326 beq r5,r2,22a0 <__swsetup_r+0x130>
2294: 8809883a mov r4,r17
2298: 00028f40 call 28f4 <_free_r>
229c: 8180030b ldhu r6,12(r16)
22a0: 80000c15 stw zero,48(r16)
22a4: 80c00417 ldw r3,16(r16)
22a8: 00bff6c4 movi r2,-37
22ac: 118c703a and r6,r2,r6
22b0: 80000115 stw zero,4(r16)
22b4: 80c00015 stw r3,0(r16)
22b8: 003fe206 br 2244 <__swsetup_r+0xd4>
22bc: 00800244 movi r2,9
22c0: 88800015 stw r2,0(r17)
22c4: 31801014 ori r6,r6,64
22c8: 8180030d sth r6,12(r16)
22cc: 00bfffc4 movi r2,-1
22d0: 003fc006 br 21d4 <__swsetup_r+0x64>
000022d4 <_close_r>:
22d4: defffe04 addi sp,sp,-8
22d8: dc000015 stw r16,0(sp)
22dc: 00800034 movhi r2,0
22e0: 2021883a mov r16,r4
22e4: 2809883a mov r4,r5
22e8: dfc00115 stw ra,4(sp)
22ec: 101c9115 stw zero,29252(r2)
22f0: 00031d00 call 31d0 <close>
22f4: 10ffffd8 cmpnei r3,r2,-1
22f8: 18000426 beq r3,zero,230c <_close_r+0x38>
22fc: dfc00117 ldw ra,4(sp)
2300: dc000017 ldw r16,0(sp)
2304: dec00204 addi sp,sp,8
2308: f800283a ret
230c: 00c00034 movhi r3,0
2310: 18dc9117 ldw r3,29252(r3)
2314: 183ff926 beq r3,zero,22fc <_close_r+0x28>
2318: 80c00015 stw r3,0(r16)
231c: dfc00117 ldw ra,4(sp)
2320: dc000017 ldw r16,0(sp)
2324: dec00204 addi sp,sp,8
2328: f800283a ret
0000232c <_fclose_r.part.0>:
232c: defffc04 addi sp,sp,-16
2330: dc800215 stw r18,8(sp)
2334: dc400115 stw r17,4(sp)
2338: dc000015 stw r16,0(sp)
233c: dfc00315 stw ra,12(sp)
2340: 2821883a mov r16,r5
2344: 2023883a mov r17,r4
2348: 00024cc0 call 24cc <__sflush_r>
234c: 80c00b17 ldw r3,44(r16)
2350: 1025883a mov r18,r2
2354: 18000426 beq r3,zero,2368 <_fclose_r.part.0+0x3c>
2358: 81400717 ldw r5,28(r16)
235c: 8809883a mov r4,r17
2360: 183ee83a callr r3
2364: 10001916 blt r2,zero,23cc <_fclose_r.part.0+0xa0>
2368: 8080030b ldhu r2,12(r16)
236c: 1080200c andi r2,r2,128
2370: 10001a1e bne r2,zero,23dc <_fclose_r.part.0+0xb0>
2374: 81400c17 ldw r5,48(r16)
2378: 28000526 beq r5,zero,2390 <_fclose_r.part.0+0x64>
237c: 80801004 addi r2,r16,64
2380: 28800226 beq r5,r2,238c <_fclose_r.part.0+0x60>
2384: 8809883a mov r4,r17
2388: 00028f40 call 28f4 <_free_r>
238c: 80000c15 stw zero,48(r16)
2390: 81401117 ldw r5,68(r16)
2394: 28000326 beq r5,zero,23a4 <_fclose_r.part.0+0x78>
2398: 8809883a mov r4,r17
239c: 00028f40 call 28f4 <_free_r>
23a0: 80001115 stw zero,68(r16)
23a4: 00008040 call 804 <__sfp_lock_acquire>
23a8: 8000030d sth zero,12(r16)
23ac: 00008080 call 808 <__sfp_lock_release>
23b0: 9005883a mov r2,r18
23b4: dfc00317 ldw ra,12(sp)
23b8: dc800217 ldw r18,8(sp)
23bc: dc400117 ldw r17,4(sp)
23c0: dc000017 ldw r16,0(sp)
23c4: dec00404 addi sp,sp,16
23c8: f800283a ret
23cc: 8080030b ldhu r2,12(r16)
23d0: 04bfffc4 movi r18,-1
23d4: 1080200c andi r2,r2,128
23d8: 103fe626 beq r2,zero,2374 <_fclose_r.part.0+0x48>
23dc: 81400417 ldw r5,16(r16)
23e0: 8809883a mov r4,r17
23e4: 00028f40 call 28f4 <_free_r>
23e8: 003fe206 br 2374 <_fclose_r.part.0+0x48>
000023ec <_fclose_r>:
23ec: 28001926 beq r5,zero,2454 <_fclose_r+0x68>
23f0: defffd04 addi sp,sp,-12
23f4: dc000115 stw r16,4(sp)
23f8: dfc00215 stw ra,8(sp)
23fc: 2021883a mov r16,r4
2400: 20000226 beq r4,zero,240c <_fclose_r+0x20>
2404: 20800e17 ldw r2,56(r4)
2408: 10000c26 beq r2,zero,243c <_fclose_r+0x50>
240c: 2880030f ldh r2,12(r5)
2410: 1000051e bne r2,zero,2428 <_fclose_r+0x3c>
2414: 0005883a mov r2,zero
2418: dfc00217 ldw ra,8(sp)
241c: dc000117 ldw r16,4(sp)
2420: dec00304 addi sp,sp,12
2424: f800283a ret
2428: 8009883a mov r4,r16
242c: dfc00217 ldw ra,8(sp)
2430: dc000117 ldw r16,4(sp)
2434: dec00304 addi sp,sp,12
2438: 000232c1 jmpi 232c <_fclose_r.part.0>
243c: d9400015 stw r5,0(sp)
2440: 00007f40 call 7f4 <__sinit>
2444: d9400017 ldw r5,0(sp)
2448: 2880030f ldh r2,12(r5)
244c: 103ff126 beq r2,zero,2414 <_fclose_r+0x28>
2450: 003ff506 br 2428 <_fclose_r+0x3c>
2454: 0005883a mov r2,zero
2458: f800283a ret
0000245c <fclose>:
245c: 20000826 beq r4,zero,2480 <fclose+0x24>
2460: 00800034 movhi r2,0
2464: 200b883a mov r5,r4
2468: 111c8117 ldw r4,29188(r2)
246c: 20000226 beq r4,zero,2478 <fclose+0x1c>
2470: 20800e17 ldw r2,56(r4)
2474: 10000526 beq r2,zero,248c <fclose+0x30>
2478: 2880030f ldh r2,12(r5)
247c: 1000021e bne r2,zero,2488 <fclose+0x2c>
2480: 0005883a mov r2,zero
2484: f800283a ret
2488: 000232c1 jmpi 232c <_fclose_r.part.0>
248c: defffd04 addi sp,sp,-12
2490: d9400115 stw r5,4(sp)
2494: d9000015 stw r4,0(sp)
2498: dfc00215 stw ra,8(sp)
249c: 00007f40 call 7f4 <__sinit>
24a0: d9400117 ldw r5,4(sp)
24a4: d9000017 ldw r4,0(sp)
24a8: 2880030f ldh r2,12(r5)
24ac: 10000326 beq r2,zero,24bc <fclose+0x60>
24b0: dfc00217 ldw ra,8(sp)
24b4: dec00304 addi sp,sp,12
24b8: 000232c1 jmpi 232c <_fclose_r.part.0>
24bc: 0005883a mov r2,zero
24c0: dfc00217 ldw ra,8(sp)
24c4: dec00304 addi sp,sp,12
24c8: f800283a ret
000024cc <__sflush_r>:
24cc: 2880030b ldhu r2,12(r5)
24d0: defffb04 addi sp,sp,-20
24d4: dcc00315 stw r19,12(sp)
24d8: dc000015 stw r16,0(sp)
24dc: dfc00415 stw ra,16(sp)
24e0: dc800215 stw r18,8(sp)
24e4: dc400115 stw r17,4(sp)
24e8: 10c0020c andi r3,r2,8
24ec: 2821883a mov r16,r5
24f0: 2027883a mov r19,r4
24f4: 18003f1e bne r3,zero,25f4 <__sflush_r+0x128>
24f8: 28c00117 ldw r3,4(r5)
24fc: 10820014 ori r2,r2,2048
2500: 2880030d sth r2,12(r5)
2504: 00c0550e bge zero,r3,265c <__sflush_r+0x190>
2508: 82000a17 ldw r8,40(r16)
250c: 40003126 beq r8,zero,25d4 <__sflush_r+0x108>
2510: 9c400017 ldw r17,0(r19)
2514: 1104000c andi r4,r2,4096
2518: 98000015 stw zero,0(r19)
251c: 81400717 ldw r5,28(r16)
2520: 1007883a mov r3,r2
2524: 2000521e bne r4,zero,2670 <__sflush_r+0x1a4>
2528: 01c00044 movi r7,1
252c: 000d883a mov r6,zero
2530: 9809883a mov r4,r19
2534: 403ee83a callr r8
2538: 10ffffd8 cmpnei r3,r2,-1
253c: 18005826 beq r3,zero,26a0 <__sflush_r+0x1d4>
2540: 80c0030b ldhu r3,12(r16)
2544: 82000a17 ldw r8,40(r16)
2548: 81400717 ldw r5,28(r16)
254c: 18c0010c andi r3,r3,4
2550: 18000626 beq r3,zero,256c <__sflush_r+0xa0>
2554: 81000117 ldw r4,4(r16)
2558: 80c00c17 ldw r3,48(r16)
255c: 1105c83a sub r2,r2,r4
2560: 18000226 beq r3,zero,256c <__sflush_r+0xa0>
2564: 80c00f17 ldw r3,60(r16)
2568: 10c5c83a sub r2,r2,r3
256c: 100d883a mov r6,r2
2570: 000f883a mov r7,zero
2574: 9809883a mov r4,r19
2578: 403ee83a callr r8
257c: 10ffffd8 cmpnei r3,r2,-1
2580: 18003d1e bne r3,zero,2678 <__sflush_r+0x1ac>
2584: 99000017 ldw r4,0(r19)
2588: 80c0030b ldhu r3,12(r16)
258c: 20004e26 beq r4,zero,26c8 <__sflush_r+0x1fc>
2590: 21400760 cmpeqi r5,r4,29
2594: 2800021e bne r5,zero,25a0 <__sflush_r+0xd4>
2598: 210005a0 cmpeqi r4,r4,22
259c: 20002c26 beq r4,zero,2650 <__sflush_r+0x184>
25a0: 80800417 ldw r2,16(r16)
25a4: 18fdffcc andi r3,r3,63487
25a8: 80c0030d sth r3,12(r16)
25ac: 80000115 stw zero,4(r16)
25b0: 80800015 stw r2,0(r16)
25b4: 81400c17 ldw r5,48(r16)
25b8: 9c400015 stw r17,0(r19)
25bc: 28000526 beq r5,zero,25d4 <__sflush_r+0x108>
25c0: 80801004 addi r2,r16,64
25c4: 28800226 beq r5,r2,25d0 <__sflush_r+0x104>
25c8: 9809883a mov r4,r19
25cc: 00028f40 call 28f4 <_free_r>
25d0: 80000c15 stw zero,48(r16)
25d4: 0005883a mov r2,zero
25d8: dfc00417 ldw ra,16(sp)
25dc: dcc00317 ldw r19,12(sp)
25e0: dc800217 ldw r18,8(sp)
25e4: dc400117 ldw r17,4(sp)
25e8: dc000017 ldw r16,0(sp)
25ec: dec00504 addi sp,sp,20
25f0: f800283a ret
25f4: 2c800417 ldw r18,16(r5)
25f8: 903ff626 beq r18,zero,25d4 <__sflush_r+0x108>
25fc: 2c400017 ldw r17,0(r5)
2600: 108000cc andi r2,r2,3
2604: 2c800015 stw r18,0(r5)
2608: 8ca3c83a sub r17,r17,r18
260c: 1000161e bne r2,zero,2668 <__sflush_r+0x19c>
2610: 28800517 ldw r2,20(r5)
2614: 80800215 stw r2,8(r16)
2618: 04400316 blt zero,r17,2628 <__sflush_r+0x15c>
261c: 003fed06 br 25d4 <__sflush_r+0x108>
2620: 90a5883a add r18,r18,r2
2624: 047feb0e bge zero,r17,25d4 <__sflush_r+0x108>
2628: 80800917 ldw r2,36(r16)
262c: 81400717 ldw r5,28(r16)
2630: 880f883a mov r7,r17
2634: 900d883a mov r6,r18
2638: 9809883a mov r4,r19
263c: 103ee83a callr r2
2640: 88a3c83a sub r17,r17,r2
2644: 00bff616 blt zero,r2,2620 <__sflush_r+0x154>
2648: 80c0030b ldhu r3,12(r16)
264c: 00bfffc4 movi r2,-1
2650: 18c01014 ori r3,r3,64
2654: 80c0030d sth r3,12(r16)
2658: 003fdf06 br 25d8 <__sflush_r+0x10c>
265c: 28c00f17 ldw r3,60(r5)
2660: 00ffa916 blt zero,r3,2508 <__sflush_r+0x3c>
2664: 003fdb06 br 25d4 <__sflush_r+0x108>
2668: 0005883a mov r2,zero
266c: 003fe906 br 2614 <__sflush_r+0x148>
2670: 80801417 ldw r2,80(r16)
2674: 003fb506 br 254c <__sflush_r+0x80>
2678: 80c0030b ldhu r3,12(r16)
267c: 81000417 ldw r4,16(r16)
2680: 80000115 stw zero,4(r16)
2684: 197dffcc andi r5,r3,63487
2688: 8140030d sth r5,12(r16)
268c: 81000015 stw r4,0(r16)
2690: 18c4000c andi r3,r3,4096
2694: 183fc726 beq r3,zero,25b4 <__sflush_r+0xe8>
2698: 80801415 stw r2,80(r16)
269c: 003fc506 br 25b4 <__sflush_r+0xe8>
26a0: 98c00017 ldw r3,0(r19)
26a4: 183fa626 beq r3,zero,2540 <__sflush_r+0x74>
26a8: 19000760 cmpeqi r4,r3,29
26ac: 20000e1e bne r4,zero,26e8 <__sflush_r+0x21c>
26b0: 18c00598 cmpnei r3,r3,22
26b4: 18000c26 beq r3,zero,26e8 <__sflush_r+0x21c>
26b8: 80c0030b ldhu r3,12(r16)
26bc: 18c01014 ori r3,r3,64
26c0: 80c0030d sth r3,12(r16)
26c4: 003fc406 br 25d8 <__sflush_r+0x10c>
26c8: 81000417 ldw r4,16(r16)
26cc: 197dffcc andi r5,r3,63487
26d0: 8140030d sth r5,12(r16)
26d4: 80000115 stw zero,4(r16)
26d8: 81000015 stw r4,0(r16)
26dc: 18c4000c andi r3,r3,4096
26e0: 183fb426 beq r3,zero,25b4 <__sflush_r+0xe8>
26e4: 003fec06 br 2698 <__sflush_r+0x1cc>
26e8: 9c400015 stw r17,0(r19)
26ec: 0005883a mov r2,zero
26f0: 003fb906 br 25d8 <__sflush_r+0x10c>
000026f4 <_fflush_r>:
26f4: defffd04 addi sp,sp,-12
26f8: dc000115 stw r16,4(sp)
26fc: dfc00215 stw ra,8(sp)
2700: 2021883a mov r16,r4
2704: 20000226 beq r4,zero,2710 <_fflush_r+0x1c>
2708: 20800e17 ldw r2,56(r4)
270c: 10000726 beq r2,zero,272c <_fflush_r+0x38>
2710: 2880030f ldh r2,12(r5)
2714: 10000a1e bne r2,zero,2740 <_fflush_r+0x4c>
2718: 0005883a mov r2,zero
271c: dfc00217 ldw ra,8(sp)
2720: dc000117 ldw r16,4(sp)
2724: dec00304 addi sp,sp,12
2728: f800283a ret
272c: d9400015 stw r5,0(sp)
2730: 00007f40 call 7f4 <__sinit>
2734: d9400017 ldw r5,0(sp)
2738: 2880030f ldh r2,12(r5)
273c: 103ff626 beq r2,zero,2718 <_fflush_r+0x24>
2740: 8009883a mov r4,r16
2744: dfc00217 ldw ra,8(sp)
2748: dc000117 ldw r16,4(sp)
274c: dec00304 addi sp,sp,12
2750: 00024cc1 jmpi 24cc <__sflush_r>
00002754 <fflush>:
2754: 20001726 beq r4,zero,27b4 <fflush+0x60>
2758: 00800034 movhi r2,0
275c: 200b883a mov r5,r4
2760: 111c8117 ldw r4,29188(r2)
2764: 20000226 beq r4,zero,2770 <fflush+0x1c>
2768: 20800e17 ldw r2,56(r4)
276c: 10000526 beq r2,zero,2784 <fflush+0x30>
2770: 2880030f ldh r2,12(r5)
2774: 1000021e bne r2,zero,2780 <fflush+0x2c>
2778: 0005883a mov r2,zero
277c: f800283a ret
2780: 00024cc1 jmpi 24cc <__sflush_r>
2784: defffd04 addi sp,sp,-12
2788: d9400115 stw r5,4(sp)
278c: d9000015 stw r4,0(sp)
2790: dfc00215 stw ra,8(sp)
2794: 00007f40 call 7f4 <__sinit>
2798: d9400117 ldw r5,4(sp)
279c: d9000017 ldw r4,0(sp)
27a0: 2880030f ldh r2,12(r5)
27a4: 10000826 beq r2,zero,27c8 <fflush+0x74>
27a8: dfc00217 ldw ra,8(sp)
27ac: dec00304 addi sp,sp,12
27b0: 00024cc1 jmpi 24cc <__sflush_r>
27b4: 00800034 movhi r2,0
27b8: 111c8017 ldw r4,29184(r2)
27bc: 01400034 movhi r5,0
27c0: 2949bd04 addi r5,r5,9972
27c4: 0000d9c1 jmpi d9c <_fwalk_reent>
27c8: 0005883a mov r2,zero
27cc: dfc00217 ldw ra,8(sp)
27d0: dec00304 addi sp,sp,12
27d4: f800283a ret
000027d8 <_malloc_trim_r>:
27d8: defffb04 addi sp,sp,-20
27dc: dcc00315 stw r19,12(sp)
27e0: 04c00034 movhi r19,0
27e4: dc800215 stw r18,8(sp)
27e8: dc400115 stw r17,4(sp)
27ec: dc000015 stw r16,0(sp)
27f0: dfc00415 stw ra,16(sp)
27f4: 2821883a mov r16,r5
27f8: 9cd6fc04 addi r19,r19,23536
27fc: 2025883a mov r18,r4
2800: 000367c0 call 367c <__malloc_lock>
2804: 98800217 ldw r2,8(r19)
2808: 14400117 ldw r17,4(r2)
280c: 00bfff04 movi r2,-4
2810: 88a2703a and r17,r17,r2
2814: 8c21c83a sub r16,r17,r16
2818: 8403fbc4 addi r16,r16,4079
281c: 8020d33a srli r16,r16,12
2820: 843fffc4 addi r16,r16,-1
2824: 8020933a slli r16,r16,12
2828: 80840008 cmpgei r2,r16,4096
282c: 10000626 beq r2,zero,2848 <_malloc_trim_r+0x70>
2830: 000b883a mov r5,zero
2834: 9009883a mov r4,r18
2838: 0001f740 call 1f74 <_sbrk_r>
283c: 98c00217 ldw r3,8(r19)
2840: 1c47883a add r3,r3,r17
2844: 10c00a26 beq r2,r3,2870 <_malloc_trim_r+0x98>
2848: 9009883a mov r4,r18
284c: 00036a00 call 36a0 <__malloc_unlock>
2850: 0005883a mov r2,zero
2854: dfc00417 ldw ra,16(sp)
2858: dcc00317 ldw r19,12(sp)
285c: dc800217 ldw r18,8(sp)
2860: dc400117 ldw r17,4(sp)
2864: dc000017 ldw r16,0(sp)
2868: dec00504 addi sp,sp,20
286c: f800283a ret
2870: 040bc83a sub r5,zero,r16
2874: 9009883a mov r4,r18
2878: 0001f740 call 1f74 <_sbrk_r>
287c: 10bfffd8 cmpnei r2,r2,-1
2880: 10000d26 beq r2,zero,28b8 <_malloc_trim_r+0xe0>
2884: 00800034 movhi r2,0
2888: 109c9917 ldw r2,29284(r2)
288c: 98c00217 ldw r3,8(r19)
2890: 8c23c83a sub r17,r17,r16
2894: 8c400054 ori r17,r17,1
2898: 1421c83a sub r16,r2,r16
289c: 1c400115 stw r17,4(r3)
28a0: 00800034 movhi r2,0
28a4: 9009883a mov r4,r18
28a8: 141c9915 stw r16,29284(r2)
28ac: 00036a00 call 36a0 <__malloc_unlock>
28b0: 00800044 movi r2,1
28b4: 003fe706 br 2854 <_malloc_trim_r+0x7c>
28b8: 000b883a mov r5,zero
28bc: 9009883a mov r4,r18
28c0: 0001f740 call 1f74 <_sbrk_r>
28c4: 99000217 ldw r4,8(r19)
28c8: 1107c83a sub r3,r2,r4
28cc: 19400410 cmplti r5,r3,16
28d0: 283fdd1e bne r5,zero,2848 <_malloc_trim_r+0x70>
28d4: 01400034 movhi r5,0
28d8: 295c8217 ldw r5,29192(r5)
28dc: 18c00054 ori r3,r3,1
28e0: 20c00115 stw r3,4(r4)
28e4: 1145c83a sub r2,r2,r5
28e8: 01400034 movhi r5,0
28ec: 289c9915 stw r2,29284(r5)
28f0: 003fd506 br 2848 <_malloc_trim_r+0x70>
000028f4 <_free_r>:
28f4: 28004f26 beq r5,zero,2a34 <_free_r+0x140>
28f8: defffd04 addi sp,sp,-12
28fc: dc400115 stw r17,4(sp)
2900: dc000015 stw r16,0(sp)
2904: 2023883a mov r17,r4
2908: 2821883a mov r16,r5
290c: dfc00215 stw ra,8(sp)
2910: 000367c0 call 367c <__malloc_lock>
2914: 81ffff17 ldw r7,-4(r16)
2918: 00bfff84 movi r2,-2
291c: 80fffe04 addi r3,r16,-8
2920: 3884703a and r2,r7,r2
2924: 01000034 movhi r4,0
2928: 188d883a add r6,r3,r2
292c: 2116fc04 addi r4,r4,23536
2930: 31400117 ldw r5,4(r6)
2934: 22000217 ldw r8,8(r4)
2938: 027fff04 movi r9,-4
293c: 2a4a703a and r5,r5,r9
2940: 41806426 beq r8,r6,2ad4 <_free_r+0x1e0>
2944: 31400115 stw r5,4(r6)
2948: 39c0004c andi r7,r7,1
294c: 3151883a add r8,r6,r5
2950: 3800281e bne r7,zero,29f4 <_free_r+0x100>
2954: 82bffe17 ldw r10,-8(r16)
2958: 42000117 ldw r8,4(r8)
295c: 01c00034 movhi r7,0
2960: 1a87c83a sub r3,r3,r10
2964: 1a400217 ldw r9,8(r3)
2968: 39d6fe04 addi r7,r7,23544
296c: 1285883a add r2,r2,r10
2970: 4200004c andi r8,r8,1
2974: 49c04c26 beq r9,r7,2aa8 <_free_r+0x1b4>
2978: 1a800317 ldw r10,12(r3)
297c: 4a800315 stw r10,12(r9)
2980: 52400215 stw r9,8(r10)
2984: 40007126 beq r8,zero,2b4c <_free_r+0x258>
2988: 11400054 ori r5,r2,1
298c: 19400115 stw r5,4(r3)
2990: 30800015 stw r2,0(r6)
2994: 11408028 cmpgeui r5,r2,512
2998: 28002c1e bne r5,zero,2a4c <_free_r+0x158>
299c: 100ad0fa srli r5,r2,3
29a0: 100cd17a srli r6,r2,5
29a4: 00800044 movi r2,1
29a8: 29400044 addi r5,r5,1
29ac: 280a90fa slli r5,r5,3
29b0: 21c00117 ldw r7,4(r4)
29b4: 1184983a sll r2,r2,r6
29b8: 214b883a add r5,r4,r5
29bc: 29800017 ldw r6,0(r5)
29c0: 11c4b03a or r2,r2,r7
29c4: 29fffe04 addi r7,r5,-8
29c8: 19c00315 stw r7,12(r3)
29cc: 19800215 stw r6,8(r3)
29d0: 20800115 stw r2,4(r4)
29d4: 28c00015 stw r3,0(r5)
29d8: 30c00315 stw r3,12(r6)
29dc: 8809883a mov r4,r17
29e0: dfc00217 ldw ra,8(sp)
29e4: dc400117 ldw r17,4(sp)
29e8: dc000017 ldw r16,0(sp)
29ec: dec00304 addi sp,sp,12
29f0: 00036a01 jmpi 36a0 <__malloc_unlock>
29f4: 41c00117 ldw r7,4(r8)
29f8: 39c0004c andi r7,r7,1
29fc: 38000e1e bne r7,zero,2a38 <_free_r+0x144>
2a00: 01c00034 movhi r7,0
2a04: 1145883a add r2,r2,r5
2a08: 39d6fe04 addi r7,r7,23544
2a0c: 31400217 ldw r5,8(r6)
2a10: 12400054 ori r9,r2,1
2a14: 1891883a add r8,r3,r2
2a18: 29c05226 beq r5,r7,2b64 <_free_r+0x270>
2a1c: 31800317 ldw r6,12(r6)
2a20: 29800315 stw r6,12(r5)
2a24: 31400215 stw r5,8(r6)
2a28: 1a400115 stw r9,4(r3)
2a2c: 40800015 stw r2,0(r8)
2a30: 003fd806 br 2994 <_free_r+0xa0>
2a34: f800283a ret
2a38: 11400054 ori r5,r2,1
2a3c: 817fff15 stw r5,-4(r16)
2a40: 30800015 stw r2,0(r6)
2a44: 11408028 cmpgeui r5,r2,512
2a48: 283fd426 beq r5,zero,299c <_free_r+0xa8>
2a4c: 100ad27a srli r5,r2,9
2a50: 29800168 cmpgeui r6,r5,5
2a54: 3000341e bne r6,zero,2b28 <_free_r+0x234>
2a58: 100ad1ba srli r5,r2,6
2a5c: 29800e44 addi r6,r5,57
2a60: 300c90fa slli r6,r6,3
2a64: 29c00e04 addi r7,r5,56
2a68: 218d883a add r6,r4,r6
2a6c: 31400017 ldw r5,0(r6)
2a70: 31bffe04 addi r6,r6,-8
2a74: 31404226 beq r6,r5,2b80 <_free_r+0x28c>
2a78: 01ffff04 movi r7,-4
2a7c: 29000117 ldw r4,4(r5)
2a80: 21c8703a and r4,r4,r7
2a84: 1100022e bgeu r2,r4,2a90 <_free_r+0x19c>
2a88: 29400217 ldw r5,8(r5)
2a8c: 317ffb1e bne r6,r5,2a7c <_free_r+0x188>
2a90: 29800317 ldw r6,12(r5)
2a94: 19800315 stw r6,12(r3)
2a98: 19400215 stw r5,8(r3)
2a9c: 30c00215 stw r3,8(r6)
2aa0: 28c00315 stw r3,12(r5)
2aa4: 003fcd06 br 29dc <_free_r+0xe8>
2aa8: 40004d1e bne r8,zero,2be0 <_free_r+0x2ec>
2aac: 31000317 ldw r4,12(r6)
2ab0: 31800217 ldw r6,8(r6)
2ab4: 2885883a add r2,r5,r2
2ab8: 11400054 ori r5,r2,1
2abc: 31000315 stw r4,12(r6)
2ac0: 21800215 stw r6,8(r4)
2ac4: 19400115 stw r5,4(r3)
2ac8: 1887883a add r3,r3,r2
2acc: 18800015 stw r2,0(r3)
2ad0: 003fc206 br 29dc <_free_r+0xe8>
2ad4: 39c0004c andi r7,r7,1
2ad8: 1145883a add r2,r2,r5
2adc: 3800071e bne r7,zero,2afc <_free_r+0x208>
2ae0: 81fffe17 ldw r7,-8(r16)
2ae4: 19c7c83a sub r3,r3,r7
2ae8: 19400317 ldw r5,12(r3)
2aec: 19800217 ldw r6,8(r3)
2af0: 11c5883a add r2,r2,r7
2af4: 31400315 stw r5,12(r6)
2af8: 29800215 stw r6,8(r5)
2afc: 01400034 movhi r5,0
2b00: 11800054 ori r6,r2,1
2b04: 295c8317 ldw r5,29196(r5)
2b08: 19800115 stw r6,4(r3)
2b0c: 20c00215 stw r3,8(r4)
2b10: 117fb236 bltu r2,r5,29dc <_free_r+0xe8>
2b14: 00800034 movhi r2,0
2b18: 115c9017 ldw r5,29248(r2)
2b1c: 8809883a mov r4,r17
2b20: 00027d80 call 27d8 <_malloc_trim_r>
2b24: 003fad06 br 29dc <_free_r+0xe8>
2b28: 29800568 cmpgeui r6,r5,21
2b2c: 30000926 beq r6,zero,2b54 <_free_r+0x260>
2b30: 29801568 cmpgeui r6,r5,85
2b34: 3000191e bne r6,zero,2b9c <_free_r+0x2a8>
2b38: 100ad33a srli r5,r2,12
2b3c: 29801bc4 addi r6,r5,111
2b40: 300c90fa slli r6,r6,3
2b44: 29c01b84 addi r7,r5,110
2b48: 003fc706 br 2a68 <_free_r+0x174>
2b4c: 1145883a add r2,r2,r5
2b50: 003fae06 br 2a0c <_free_r+0x118>
2b54: 29801704 addi r6,r5,92
2b58: 300c90fa slli r6,r6,3
2b5c: 29c016c4 addi r7,r5,91
2b60: 003fc106 br 2a68 <_free_r+0x174>
2b64: 20c00515 stw r3,20(r4)
2b68: 20c00415 stw r3,16(r4)
2b6c: 19c00315 stw r7,12(r3)
2b70: 19c00215 stw r7,8(r3)
2b74: 1a400115 stw r9,4(r3)
2b78: 40800015 stw r2,0(r8)
2b7c: 003f9706 br 29dc <_free_r+0xe8>
2b80: 380fd0ba srai r7,r7,2
2b84: 00800044 movi r2,1
2b88: 22000117 ldw r8,4(r4)
2b8c: 11ce983a sll r7,r2,r7
2b90: 3a0eb03a or r7,r7,r8
2b94: 21c00115 stw r7,4(r4)
2b98: 003fbe06 br 2a94 <_free_r+0x1a0>
2b9c: 29805568 cmpgeui r6,r5,341
2ba0: 3000051e bne r6,zero,2bb8 <_free_r+0x2c4>
2ba4: 100ad3fa srli r5,r2,15
2ba8: 29801e04 addi r6,r5,120
2bac: 300c90fa slli r6,r6,3
2bb0: 29c01dc4 addi r7,r5,119
2bb4: 003fac06 br 2a68 <_free_r+0x174>
2bb8: 29415568 cmpgeui r5,r5,1365
2bbc: 2800051e bne r5,zero,2bd4 <_free_r+0x2e0>
2bc0: 100ad4ba srli r5,r2,18
2bc4: 29801f44 addi r6,r5,125
2bc8: 300c90fa slli r6,r6,3
2bcc: 29c01f04 addi r7,r5,124
2bd0: 003fa506 br 2a68 <_free_r+0x174>
2bd4: 0180fe04 movi r6,1016
2bd8: 01c01f84 movi r7,126
2bdc: 003fa206 br 2a68 <_free_r+0x174>
2be0: 11000054 ori r4,r2,1
2be4: 19000115 stw r4,4(r3)
2be8: 30800015 stw r2,0(r6)
2bec: 003f7b06 br 29dc <_free_r+0xe8>
00002bf0 <_lseek_r>:
2bf0: 2807883a mov r3,r5
2bf4: defffe04 addi sp,sp,-8
2bf8: dc000015 stw r16,0(sp)
2bfc: 300b883a mov r5,r6
2c00: 00800034 movhi r2,0
2c04: 380d883a mov r6,r7
2c08: 2021883a mov r16,r4
2c0c: 1809883a mov r4,r3
2c10: dfc00115 stw ra,4(sp)
2c14: 101c9115 stw zero,29252(r2)
2c18: 00035200 call 3520 <lseek>
2c1c: 10ffffd8 cmpnei r3,r2,-1
2c20: 18000426 beq r3,zero,2c34 <_lseek_r+0x44>
2c24: dfc00117 ldw ra,4(sp)
2c28: dc000017 ldw r16,0(sp)
2c2c: dec00204 addi sp,sp,8
2c30: f800283a ret
2c34: 00c00034 movhi r3,0
2c38: 18dc9117 ldw r3,29252(r3)
2c3c: 183ff926 beq r3,zero,2c24 <_lseek_r+0x34>
2c40: 80c00015 stw r3,0(r16)
2c44: dfc00117 ldw ra,4(sp)
2c48: dc000017 ldw r16,0(sp)
2c4c: dec00204 addi sp,sp,8
2c50: f800283a ret
00002c54 <__smakebuf_r>:
2c54: 2880030b ldhu r2,12(r5)
2c58: deffe804 addi sp,sp,-96
2c5c: dc001215 stw r16,72(sp)
2c60: dfc01715 stw ra,92(sp)
2c64: dd001615 stw r20,88(sp)
2c68: dcc01515 stw r19,84(sp)
2c6c: dc801415 stw r18,80(sp)
2c70: dc401315 stw r17,76(sp)
2c74: 10c0008c andi r3,r2,2
2c78: 2821883a mov r16,r5
2c7c: 18000d26 beq r3,zero,2cb4 <__smakebuf_r+0x60>
2c80: 288010c4 addi r2,r5,67
2c84: 28800015 stw r2,0(r5)
2c88: 28800415 stw r2,16(r5)
2c8c: 00800044 movi r2,1
2c90: 28800515 stw r2,20(r5)
2c94: dfc01717 ldw ra,92(sp)
2c98: dd001617 ldw r20,88(sp)
2c9c: dcc01517 ldw r19,84(sp)
2ca0: dc801417 ldw r18,80(sp)
2ca4: dc401317 ldw r17,76(sp)
2ca8: dc001217 ldw r16,72(sp)
2cac: dec01804 addi sp,sp,96
2cb0: f800283a ret
2cb4: 2940038f ldh r5,14(r5)
2cb8: 2023883a mov r17,r4
2cbc: 28002816 blt r5,zero,2d60 <__smakebuf_r+0x10c>
2cc0: d80d883a mov r6,sp
2cc4: 0002f000 call 2f00 <_fstat_r>
2cc8: 10002416 blt r2,zero,2d5c <__smakebuf_r+0x108>
2ccc: d8800117 ldw r2,4(sp)
2cd0: 10bc000c andi r2,r2,61440
2cd4: 10880018 cmpnei r2,r2,8192
2cd8: 1000461e bne r2,zero,2df4 <__smakebuf_r+0x1a0>
2cdc: 8140038f ldh r5,14(r16)
2ce0: 8809883a mov r4,r17
2ce4: 0002f600 call 2f60 <_isatty_r>
2ce8: 10003e26 beq r2,zero,2de4 <__smakebuf_r+0x190>
2cec: 8080030b ldhu r2,12(r16)
2cf0: 80c010c4 addi r3,r16,67
2cf4: 80c00015 stw r3,0(r16)
2cf8: 10800054 ori r2,r2,1
2cfc: 8080030d sth r2,12(r16)
2d00: 00800044 movi r2,1
2d04: 80c00415 stw r3,16(r16)
2d08: 80800515 stw r2,20(r16)
2d0c: 04c00044 movi r19,1
2d10: 05010004 movi r20,1024
2d14: 04820004 movi r18,2048
2d18: a00b883a mov r5,r20
2d1c: 8809883a mov r4,r17
2d20: 0000e440 call e44 <_malloc_r>
2d24: 10001726 beq r2,zero,2d84 <__smakebuf_r+0x130>
2d28: 80c0030b ldhu r3,12(r16)
2d2c: 01000034 movhi r4,0
2d30: 21012604 addi r4,r4,1176
2d34: 89000f15 stw r4,60(r17)
2d38: 18c02014 ori r3,r3,128
2d3c: 80c0030d sth r3,12(r16)
2d40: 80800015 stw r2,0(r16)
2d44: 80800415 stw r2,16(r16)
2d48: 85000515 stw r20,20(r16)
2d4c: 98001d1e bne r19,zero,2dc4 <__smakebuf_r+0x170>
2d50: 90c6b03a or r3,r18,r3
2d54: 80c0030d sth r3,12(r16)
2d58: 003fce06 br 2c94 <__smakebuf_r+0x40>
2d5c: 8080030b ldhu r2,12(r16)
2d60: 1080200c andi r2,r2,128
2d64: 0027883a mov r19,zero
2d68: 10001326 beq r2,zero,2db8 <__smakebuf_r+0x164>
2d6c: 05001004 movi r20,64
2d70: a00b883a mov r5,r20
2d74: 8809883a mov r4,r17
2d78: 0025883a mov r18,zero
2d7c: 0000e440 call e44 <_malloc_r>
2d80: 103fe91e bne r2,zero,2d28 <__smakebuf_r+0xd4>
2d84: 8080030b ldhu r2,12(r16)
2d88: 10c0800c andi r3,r2,512
2d8c: 183fc11e bne r3,zero,2c94 <__smakebuf_r+0x40>
2d90: 00ffff04 movi r3,-4
2d94: 10c4703a and r2,r2,r3
2d98: 10800094 ori r2,r2,2
2d9c: 80c010c4 addi r3,r16,67
2da0: 8080030d sth r2,12(r16)
2da4: 00800044 movi r2,1
2da8: 80c00015 stw r3,0(r16)
2dac: 80c00415 stw r3,16(r16)
2db0: 80800515 stw r2,20(r16)
2db4: 003fb706 br 2c94 <__smakebuf_r+0x40>
2db8: 05010004 movi r20,1024
2dbc: 0025883a mov r18,zero
2dc0: 003fd506 br 2d18 <__smakebuf_r+0xc4>
2dc4: 8140038f ldh r5,14(r16)
2dc8: 8809883a mov r4,r17
2dcc: 0002f600 call 2f60 <_isatty_r>
2dd0: 80c0030b ldhu r3,12(r16)
2dd4: 103fde26 beq r2,zero,2d50 <__smakebuf_r+0xfc>
2dd8: 18ffff0c andi r3,r3,65532
2ddc: 18c00054 ori r3,r3,1
2de0: 003fdb06 br 2d50 <__smakebuf_r+0xfc>
2de4: 04c00044 movi r19,1
2de8: 05010004 movi r20,1024
2dec: 04820004 movi r18,2048
2df0: 003fc906 br 2d18 <__smakebuf_r+0xc4>
2df4: 0027883a mov r19,zero
2df8: 05010004 movi r20,1024
2dfc: 04820004 movi r18,2048
2e00: 003fc506 br 2d18 <__smakebuf_r+0xc4>
00002e04 <__swhatbuf_r>:
2e04: deffea04 addi sp,sp,-88
2e08: dc001215 stw r16,72(sp)
2e0c: 2821883a mov r16,r5
2e10: 2940038f ldh r5,14(r5)
2e14: dc801415 stw r18,80(sp)
2e18: dc401315 stw r17,76(sp)
2e1c: dfc01515 stw ra,84(sp)
2e20: 3023883a mov r17,r6
2e24: 3825883a mov r18,r7
2e28: 28001016 blt r5,zero,2e6c <__swhatbuf_r+0x68>
2e2c: d80d883a mov r6,sp
2e30: 0002f000 call 2f00 <_fstat_r>
2e34: 10000d16 blt r2,zero,2e6c <__swhatbuf_r+0x68>
2e38: d8c00117 ldw r3,4(sp)
2e3c: 00820004 movi r2,2048
2e40: 18fc000c andi r3,r3,61440
2e44: 18c80020 cmpeqi r3,r3,8192
2e48: 90c00015 stw r3,0(r18)
2e4c: 00c10004 movi r3,1024
2e50: 88c00015 stw r3,0(r17)
2e54: dfc01517 ldw ra,84(sp)
2e58: dc801417 ldw r18,80(sp)
2e5c: dc401317 ldw r17,76(sp)
2e60: dc001217 ldw r16,72(sp)
2e64: dec01604 addi sp,sp,88
2e68: f800283a ret
2e6c: 8080030b ldhu r2,12(r16)
2e70: 90000015 stw zero,0(r18)
2e74: 1080200c andi r2,r2,128
2e78: 10000426 beq r2,zero,2e8c <__swhatbuf_r+0x88>
2e7c: 00801004 movi r2,64
2e80: 88800015 stw r2,0(r17)
2e84: 0005883a mov r2,zero
2e88: 003ff206 br 2e54 <__swhatbuf_r+0x50>
2e8c: 00810004 movi r2,1024
2e90: 88800015 stw r2,0(r17)
2e94: 0005883a mov r2,zero
2e98: 003fee06 br 2e54 <__swhatbuf_r+0x50>
00002e9c <_read_r>:
2e9c: 2807883a mov r3,r5
2ea0: defffe04 addi sp,sp,-8
2ea4: dc000015 stw r16,0(sp)
2ea8: 300b883a mov r5,r6
2eac: 00800034 movhi r2,0
2eb0: 380d883a mov r6,r7
2eb4: 2021883a mov r16,r4
2eb8: 1809883a mov r4,r3
2ebc: dfc00115 stw ra,4(sp)
2ec0: 101c9115 stw zero,29252(r2)
2ec4: 00037000 call 3700 <read>
2ec8: 10ffffd8 cmpnei r3,r2,-1
2ecc: 18000426 beq r3,zero,2ee0 <_read_r+0x44>
2ed0: dfc00117 ldw ra,4(sp)
2ed4: dc000017 ldw r16,0(sp)
2ed8: dec00204 addi sp,sp,8
2edc: f800283a ret
2ee0: 00c00034 movhi r3,0
2ee4: 18dc9117 ldw r3,29252(r3)
2ee8: 183ff926 beq r3,zero,2ed0 <_read_r+0x34>
2eec: 80c00015 stw r3,0(r16)
2ef0: dfc00117 ldw ra,4(sp)
2ef4: dc000017 ldw r16,0(sp)
2ef8: dec00204 addi sp,sp,8
2efc: f800283a ret
00002f00 <_fstat_r>:
2f00: 2807883a mov r3,r5
2f04: defffe04 addi sp,sp,-8
2f08: dc000015 stw r16,0(sp)
2f0c: 00800034 movhi r2,0
2f10: 300b883a mov r5,r6
2f14: 2021883a mov r16,r4
2f18: 1809883a mov r4,r3
2f1c: dfc00115 stw ra,4(sp)
2f20: 101c9115 stw zero,29252(r2)
2f24: 000333c0 call 333c <fstat>
2f28: 10ffffd8 cmpnei r3,r2,-1
2f2c: 18000426 beq r3,zero,2f40 <_fstat_r+0x40>
2f30: dfc00117 ldw ra,4(sp)
2f34: dc000017 ldw r16,0(sp)
2f38: dec00204 addi sp,sp,8
2f3c: f800283a ret
2f40: 00c00034 movhi r3,0
2f44: 18dc9117 ldw r3,29252(r3)
2f48: 183ff926 beq r3,zero,2f30 <_fstat_r+0x30>
2f4c: 80c00015 stw r3,0(r16)
2f50: dfc00117 ldw ra,4(sp)
2f54: dc000017 ldw r16,0(sp)
2f58: dec00204 addi sp,sp,8
2f5c: f800283a ret
00002f60 <_isatty_r>:
2f60: defffe04 addi sp,sp,-8
2f64: dc000015 stw r16,0(sp)
2f68: 00800034 movhi r2,0
2f6c: 2021883a mov r16,r4
2f70: 2809883a mov r4,r5
2f74: dfc00115 stw ra,4(sp)
2f78: 101c9115 stw zero,29252(r2)
2f7c: 00034340 call 3434 <isatty>
2f80: 10ffffd8 cmpnei r3,r2,-1
2f84: 18000426 beq r3,zero,2f98 <_isatty_r+0x38>
2f88: dfc00117 ldw ra,4(sp)
2f8c: dc000017 ldw r16,0(sp)
2f90: dec00204 addi sp,sp,8
2f94: f800283a ret
2f98: 00c00034 movhi r3,0
2f9c: 18dc9117 ldw r3,29252(r3)
2fa0: 183ff926 beq r3,zero,2f88 <_isatty_r+0x28>
2fa4: 80c00015 stw r3,0(r16)
2fa8: dfc00117 ldw ra,4(sp)
2fac: dc000017 ldw r16,0(sp)
2fb0: dec00204 addi sp,sp,8
2fb4: f800283a ret
00002fb8 <__divsi3>:
2fb8: 20001a16 blt r4,zero,3024 <__divsi3+0x6c>
2fbc: 000f883a mov r7,zero
2fc0: 2800020e bge r5,zero,2fcc <__divsi3+0x14>
2fc4: 014bc83a sub r5,zero,r5
2fc8: 39c0005c xori r7,r7,1
2fcc: 200d883a mov r6,r4
2fd0: 00c00044 movi r3,1
2fd4: 2900092e bgeu r5,r4,2ffc <__divsi3+0x44>
2fd8: 00800804 movi r2,32
2fdc: 00c00044 movi r3,1
2fe0: 00000106 br 2fe8 <__divsi3+0x30>
2fe4: 10001226 beq r2,zero,3030 <__divsi3+0x78>
2fe8: 294b883a add r5,r5,r5
2fec: 10bfffc4 addi r2,r2,-1
2ff0: 18c7883a add r3,r3,r3
2ff4: 293ffb36 bltu r5,r4,2fe4 <__divsi3+0x2c>
2ff8: 18000d26 beq r3,zero,3030 <__divsi3+0x78>
2ffc: 0005883a mov r2,zero
3000: 31400236 bltu r6,r5,300c <__divsi3+0x54>
3004: 314dc83a sub r6,r6,r5
3008: 10c4b03a or r2,r2,r3
300c: 1806d07a srli r3,r3,1
3010: 280ad07a srli r5,r5,1
3014: 183ffa1e bne r3,zero,3000 <__divsi3+0x48>
3018: 38000126 beq r7,zero,3020 <__divsi3+0x68>
301c: 0085c83a sub r2,zero,r2
3020: f800283a ret
3024: 0109c83a sub r4,zero,r4
3028: 01c00044 movi r7,1
302c: 003fe406 br 2fc0 <__divsi3+0x8>
3030: 0005883a mov r2,zero
3034: 003ff806 br 3018 <__divsi3+0x60>
00003038 <__modsi3>:
3038: 20001916 blt r4,zero,30a0 <__modsi3+0x68>
303c: 000f883a mov r7,zero
3040: 2005883a mov r2,r4
3044: 2800010e bge r5,zero,304c <__modsi3+0x14>
3048: 014bc83a sub r5,zero,r5
304c: 00c00044 movi r3,1
3050: 2900092e bgeu r5,r4,3078 <__modsi3+0x40>
3054: 01800804 movi r6,32
3058: 00c00044 movi r3,1
305c: 00000106 br 3064 <__modsi3+0x2c>
3060: 30000d26 beq r6,zero,3098 <__modsi3+0x60>
3064: 294b883a add r5,r5,r5
3068: 31bfffc4 addi r6,r6,-1
306c: 18c7883a add r3,r3,r3
3070: 293ffb36 bltu r5,r4,3060 <__modsi3+0x28>
3074: 18000826 beq r3,zero,3098 <__modsi3+0x60>
3078: 1806d07a srli r3,r3,1
307c: 11400136 bltu r2,r5,3084 <__modsi3+0x4c>
3080: 1145c83a sub r2,r2,r5
3084: 280ad07a srli r5,r5,1
3088: 183ffb1e bne r3,zero,3078 <__modsi3+0x40>
308c: 38000126 beq r7,zero,3094 <__modsi3+0x5c>
3090: 0085c83a sub r2,zero,r2
3094: f800283a ret
3098: 2005883a mov r2,r4
309c: 003ffb06 br 308c <__modsi3+0x54>
30a0: 0109c83a sub r4,zero,r4
30a4: 01c00044 movi r7,1
30a8: 003fe506 br 3040 <__modsi3+0x8>
000030ac <__udivsi3>:
30ac: 200d883a mov r6,r4
30b0: 2900152e bgeu r5,r4,3108 <__udivsi3+0x5c>
30b4: 28001416 blt r5,zero,3108 <__udivsi3+0x5c>
30b8: 00800804 movi r2,32
30bc: 00c00044 movi r3,1
30c0: 00000206 br 30cc <__udivsi3+0x20>
30c4: 10000e26 beq r2,zero,3100 <__udivsi3+0x54>
30c8: 28000516 blt r5,zero,30e0 <__udivsi3+0x34>
30cc: 294b883a add r5,r5,r5
30d0: 10bfffc4 addi r2,r2,-1
30d4: 18c7883a add r3,r3,r3
30d8: 293ffa36 bltu r5,r4,30c4 <__udivsi3+0x18>
30dc: 18000826 beq r3,zero,3100 <__udivsi3+0x54>
30e0: 0005883a mov r2,zero
30e4: 31400236 bltu r6,r5,30f0 <__udivsi3+0x44>
30e8: 314dc83a sub r6,r6,r5
30ec: 10c4b03a or r2,r2,r3
30f0: 1806d07a srli r3,r3,1
30f4: 280ad07a srli r5,r5,1
30f8: 183ffa1e bne r3,zero,30e4 <__udivsi3+0x38>
30fc: f800283a ret
3100: 0005883a mov r2,zero
3104: f800283a ret
3108: 00c00044 movi r3,1
310c: 003ff406 br 30e0 <__udivsi3+0x34>
00003110 <__umodsi3>:
3110: 2005883a mov r2,r4
3114: 2900132e bgeu r5,r4,3164 <__umodsi3+0x54>
3118: 28001216 blt r5,zero,3164 <__umodsi3+0x54>
311c: 01800804 movi r6,32
3120: 00c00044 movi r3,1
3124: 00000206 br 3130 <__umodsi3+0x20>
3128: 30000c26 beq r6,zero,315c <__umodsi3+0x4c>
312c: 28000516 blt r5,zero,3144 <__umodsi3+0x34>
3130: 294b883a add r5,r5,r5
3134: 31bfffc4 addi r6,r6,-1
3138: 18c7883a add r3,r3,r3
313c: 293ffa36 bltu r5,r4,3128 <__umodsi3+0x18>
3140: 18000626 beq r3,zero,315c <__umodsi3+0x4c>
3144: 1806d07a srli r3,r3,1
3148: 11400136 bltu r2,r5,3150 <__umodsi3+0x40>
314c: 1145c83a sub r2,r2,r5
3150: 280ad07a srli r5,r5,1
3154: 183ffb1e bne r3,zero,3144 <__umodsi3+0x34>
3158: f800283a ret
315c: 2005883a mov r2,r4
3160: f800283a ret
3164: 00c00044 movi r3,1
3168: 003ff606 br 3144 <__umodsi3+0x34>
0000316c <__mulsi3>:
316c: 0005883a mov r2,zero
3170: 20000726 beq r4,zero,3190 <__mulsi3+0x24>
3174: 20c0004c andi r3,r4,1
3178: 2008d07a srli r4,r4,1
317c: 18000126 beq r3,zero,3184 <__mulsi3+0x18>
3180: 1145883a add r2,r2,r5
3184: 294b883a add r5,r5,r5
3188: 203ffa1e bne r4,zero,3174 <__mulsi3+0x8>
318c: f800283a ret
3190: f800283a ret
00003194 <alt_get_errno>:
#undef errno
extern int errno;
static ALT_INLINE int* alt_get_errno(void)
{
3194: defffe04 addi sp,sp,-8
3198: dfc00115 stw ra,4(sp)
319c: df000015 stw fp,0(sp)
31a0: d839883a mov fp,sp
return ((alt_errno) ? alt_errno() : &errno);
31a4: d0a00917 ldw r2,-32732(gp)
31a8: 10000326 beq r2,zero,31b8 <alt_get_errno+0x24>
31ac: d0a00917 ldw r2,-32732(gp)
31b0: 103ee83a callr r2
31b4: 00000106 br 31bc <alt_get_errno+0x28>
31b8: d0a01104 addi r2,gp,-32700
}
31bc: e037883a mov sp,fp
31c0: dfc00117 ldw ra,4(sp)
31c4: df000017 ldw fp,0(sp)
31c8: dec00204 addi sp,sp,8
31cc: f800283a ret
000031d0 <close>:
*
* ALT_CLOSE is mapped onto the close() system call in alt_syscall.h
*/
int ALT_CLOSE (int fildes)
{
31d0: defffb04 addi sp,sp,-20
31d4: dfc00415 stw ra,16(sp)
31d8: df000315 stw fp,12(sp)
31dc: df000304 addi fp,sp,12
31e0: e13ffd15 stw r4,-12(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];
31e4: e0bffd17 ldw r2,-12(fp)
31e8: 10000916 blt r2,zero,3210 <close+0x40>
31ec: e0fffd17 ldw r3,-12(fp)
31f0: 1805883a mov r2,r3
31f4: 1085883a add r2,r2,r2
31f8: 10c5883a add r2,r2,r3
31fc: 100490ba slli r2,r2,2
3200: 00c00034 movhi r3,0
3204: 18d80804 addi r3,r3,24608
3208: 10c5883a add r2,r2,r3
320c: 00000106 br 3214 <close+0x44>
3210: 0005883a mov r2,zero
3214: e0bfff15 stw r2,-4(fp)
if (fd)
3218: e0bfff17 ldw r2,-4(fp)
321c: 10001926 beq r2,zero,3284 <close+0xb4>
/*
* 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;
3220: e0bfff17 ldw r2,-4(fp)
3224: 10800017 ldw r2,0(r2)
3228: 10800417 ldw r2,16(r2)
322c: 10000626 beq r2,zero,3248 <close+0x78>
3230: e0bfff17 ldw r2,-4(fp)
3234: 10800017 ldw r2,0(r2)
3238: 10800417 ldw r2,16(r2)
323c: e13fff17 ldw r4,-4(fp)
3240: 103ee83a callr r2
3244: 00000106 br 324c <close+0x7c>
3248: 0005883a mov r2,zero
324c: e0bffe15 stw r2,-8(fp)
/* Free the file descriptor structure and return. */
alt_release_fd (fildes);
3250: e13ffd17 ldw r4,-12(fp)
3254: 00038080 call 3808 <alt_release_fd>
if (rval < 0)
3258: e0bffe17 ldw r2,-8(fp)
325c: 1000070e bge r2,zero,327c <close+0xac>
{
ALT_ERRNO = -rval;
3260: 00031940 call 3194 <alt_get_errno>
3264: 1007883a mov r3,r2
3268: e0bffe17 ldw r2,-8(fp)
326c: 0085c83a sub r2,zero,r2
3270: 18800015 stw r2,0(r3)
return -1;
3274: 00bfffc4 movi r2,-1
3278: 00000706 br 3298 <close+0xc8>
}
return 0;
327c: 0005883a mov r2,zero
3280: 00000506 br 3298 <close+0xc8>
}
else
{
ALT_ERRNO = EBADFD;
3284: 00031940 call 3194 <alt_get_errno>
3288: 1007883a mov r3,r2
328c: 00801444 movi r2,81
3290: 18800015 stw r2,0(r3)
return -1;
3294: 00bfffc4 movi r2,-1
}
}
3298: e037883a mov sp,fp
329c: dfc00117 ldw ra,4(sp)
32a0: df000017 ldw fp,0(sp)
32a4: dec00204 addi sp,sp,8
32a8: f800283a ret
000032ac <alt_dcache_flush>:
*
* Any dirty lines in the data cache are written back to memory.
*/
void alt_dcache_flush (void* start, alt_u32 len)
{
32ac: defffd04 addi sp,sp,-12
32b0: df000215 stw fp,8(sp)
32b4: df000204 addi fp,sp,8
32b8: e13fff15 stw r4,-4(fp)
32bc: e17ffe15 stw r5,-8(fp)
{
ALT_FLUSH_DATA(i);
}
#endif /* NIOS2_DCACHE_SIZE > 0 */
}
32c0: 0001883a nop
32c4: e037883a mov sp,fp
32c8: df000017 ldw fp,0(sp)
32cc: dec00104 addi sp,sp,4
32d0: f800283a ret
000032d4 <alt_dev_null_write>:
* 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)
{
32d4: defffc04 addi sp,sp,-16
32d8: df000315 stw fp,12(sp)
32dc: df000304 addi fp,sp,12
32e0: e13fff15 stw r4,-4(fp)
32e4: e17ffe15 stw r5,-8(fp)
32e8: e1bffd15 stw r6,-12(fp)
return len;
32ec: e0bffd17 ldw r2,-12(fp)
}
32f0: e037883a mov sp,fp
32f4: df000017 ldw fp,0(sp)
32f8: dec00104 addi sp,sp,4
32fc: f800283a ret
00003300 <alt_get_errno>:
{
3300: defffe04 addi sp,sp,-8
3304: dfc00115 stw ra,4(sp)
3308: df000015 stw fp,0(sp)
330c: d839883a mov fp,sp
return ((alt_errno) ? alt_errno() : &errno);
3310: d0a00917 ldw r2,-32732(gp)
3314: 10000326 beq r2,zero,3324 <alt_get_errno+0x24>
3318: d0a00917 ldw r2,-32732(gp)
331c: 103ee83a callr r2
3320: 00000106 br 3328 <alt_get_errno+0x28>
3324: d0a01104 addi r2,gp,-32700
}
3328: e037883a mov sp,fp
332c: dfc00117 ldw ra,4(sp)
3330: df000017 ldw fp,0(sp)
3334: dec00204 addi sp,sp,8
3338: f800283a ret
0000333c <fstat>:
}
#else /* !ALT_USE_DIRECT_DRIVERS */
int ALT_FSTAT (int file, struct stat *st)
{
333c: defffb04 addi sp,sp,-20
3340: dfc00415 stw ra,16(sp)
3344: df000315 stw fp,12(sp)
3348: df000304 addi fp,sp,12
334c: e13ffe15 stw r4,-8(fp)
3350: e17ffd15 stw r5,-12(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];
3354: e0bffe17 ldw r2,-8(fp)
3358: 10000916 blt r2,zero,3380 <fstat+0x44>
335c: e0fffe17 ldw r3,-8(fp)
3360: 1805883a mov r2,r3
3364: 1085883a add r2,r2,r2
3368: 10c5883a add r2,r2,r3
336c: 100490ba slli r2,r2,2
3370: 00c00034 movhi r3,0
3374: 18d80804 addi r3,r3,24608
3378: 10c5883a add r2,r2,r3
337c: 00000106 br 3384 <fstat+0x48>
3380: 0005883a mov r2,zero
3384: e0bfff15 stw r2,-4(fp)
if (fd)
3388: e0bfff17 ldw r2,-4(fp)
338c: 10001026 beq r2,zero,33d0 <fstat+0x94>
{
/* Call the drivers fstat() function to fill out the "st" structure. */
if (fd->dev->fstat)
3390: e0bfff17 ldw r2,-4(fp)
3394: 10800017 ldw r2,0(r2)
3398: 10800817 ldw r2,32(r2)
339c: 10000726 beq r2,zero,33bc <fstat+0x80>
{
return fd->dev->fstat(fd, st);
33a0: e0bfff17 ldw r2,-4(fp)
33a4: 10800017 ldw r2,0(r2)
33a8: 10800817 ldw r2,32(r2)
33ac: e17ffd17 ldw r5,-12(fp)
33b0: e13fff17 ldw r4,-4(fp)
33b4: 103ee83a callr r2
33b8: 00000a06 br 33e4 <fstat+0xa8>
* device.
*/
else
{
st->st_mode = _IFCHR;
33bc: e0bffd17 ldw r2,-12(fp)
33c0: 00c80004 movi r3,8192
33c4: 10c00115 stw r3,4(r2)
return 0;
33c8: 0005883a mov r2,zero
33cc: 00000506 br 33e4 <fstat+0xa8>
}
}
else
{
ALT_ERRNO = EBADFD;
33d0: 00033000 call 3300 <alt_get_errno>
33d4: 1007883a mov r3,r2
33d8: 00801444 movi r2,81
33dc: 18800015 stw r2,0(r3)
return -1;
33e0: 00bfffc4 movi r2,-1
}
}
33e4: e037883a mov sp,fp
33e8: dfc00117 ldw ra,4(sp)
33ec: df000017 ldw fp,0(sp)
33f0: dec00204 addi sp,sp,8
33f4: f800283a ret
000033f8 <alt_get_errno>:
{
33f8: defffe04 addi sp,sp,-8
33fc: dfc00115 stw ra,4(sp)
3400: df000015 stw fp,0(sp)
3404: d839883a mov fp,sp
return ((alt_errno) ? alt_errno() : &errno);
3408: d0a00917 ldw r2,-32732(gp)
340c: 10000326 beq r2,zero,341c <alt_get_errno+0x24>
3410: d0a00917 ldw r2,-32732(gp)
3414: 103ee83a callr r2
3418: 00000106 br 3420 <alt_get_errno+0x28>
341c: d0a01104 addi r2,gp,-32700
}
3420: e037883a mov sp,fp
3424: dfc00117 ldw ra,4(sp)
3428: df000017 ldw fp,0(sp)
342c: dec00204 addi sp,sp,8
3430: f800283a ret
00003434 <isatty>:
*
* ALT_ISATTY is mapped onto the isatty() system call in alt_syscall.h
*/
int ALT_ISATTY (int file)
{
3434: deffea04 addi sp,sp,-88
3438: dfc01515 stw ra,84(sp)
343c: df001415 stw fp,80(sp)
3440: df001404 addi fp,sp,80
3444: e13fec15 stw r4,-80(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];
3448: e0bfec17 ldw r2,-80(fp)
344c: 10000916 blt r2,zero,3474 <isatty+0x40>
3450: e0ffec17 ldw r3,-80(fp)
3454: 1805883a mov r2,r3
3458: 1085883a add r2,r2,r2
345c: 10c5883a add r2,r2,r3
3460: 100490ba slli r2,r2,2
3464: 00c00034 movhi r3,0
3468: 18d80804 addi r3,r3,24608
346c: 10c5883a add r2,r2,r3
3470: 00000106 br 3478 <isatty+0x44>
3474: 0005883a mov r2,zero
3478: e0bfff15 stw r2,-4(fp)
if (fd)
347c: e0bfff17 ldw r2,-4(fp)
3480: 10000e26 beq r2,zero,34bc <isatty+0x88>
/*
* If a device driver does not provide an fstat() function, then it is
* treated as a terminal device by default.
*/
if (!fd->dev->fstat)
3484: e0bfff17 ldw r2,-4(fp)
3488: 10800017 ldw r2,0(r2)
348c: 10800817 ldw r2,32(r2)
3490: 1000021e bne r2,zero,349c <isatty+0x68>
{
return 1;
3494: 00800044 movi r2,1
3498: 00000d06 br 34d0 <isatty+0x9c>
* this is called so that the device can identify itself.
*/
else
{
fstat (file, &stat);
349c: e0bfed04 addi r2,fp,-76
34a0: 100b883a mov r5,r2
34a4: e13fec17 ldw r4,-80(fp)
34a8: 000333c0 call 333c <fstat>
return (stat.st_mode == _IFCHR) ? 1 : 0;
34ac: e0bfee17 ldw r2,-72(fp)
34b0: 10880020 cmpeqi r2,r2,8192
34b4: 10803fcc andi r2,r2,255
34b8: 00000506 br 34d0 <isatty+0x9c>
}
}
else
{
ALT_ERRNO = EBADFD;
34bc: 00033f80 call 33f8 <alt_get_errno>
34c0: 1007883a mov r3,r2
34c4: 00801444 movi r2,81
34c8: 18800015 stw r2,0(r3)
return 0;
34cc: 0005883a mov r2,zero
}
}
34d0: e037883a mov sp,fp
34d4: dfc00117 ldw ra,4(sp)
34d8: df000017 ldw fp,0(sp)
34dc: dec00204 addi sp,sp,8
34e0: f800283a ret
000034e4 <alt_get_errno>:
{
34e4: defffe04 addi sp,sp,-8
34e8: dfc00115 stw ra,4(sp)
34ec: df000015 stw fp,0(sp)
34f0: d839883a mov fp,sp
return ((alt_errno) ? alt_errno() : &errno);
34f4: d0a00917 ldw r2,-32732(gp)
34f8: 10000326 beq r2,zero,3508 <alt_get_errno+0x24>
34fc: d0a00917 ldw r2,-32732(gp)
3500: 103ee83a callr r2
3504: 00000106 br 350c <alt_get_errno+0x28>
3508: d0a01104 addi r2,gp,-32700
}
350c: e037883a mov sp,fp
3510: dfc00117 ldw ra,4(sp)
3514: df000017 ldw fp,0(sp)
3518: dec00204 addi sp,sp,8
351c: f800283a ret
00003520 <lseek>:
* ALT_LSEEK is mapped onto the lseek() system call in alt_syscall.h
*
*/
off_t ALT_LSEEK (int file, off_t ptr, int dir)
{
3520: defff904 addi sp,sp,-28
3524: dfc00615 stw ra,24(sp)
3528: df000515 stw fp,20(sp)
352c: df000504 addi fp,sp,20
3530: e13ffd15 stw r4,-12(fp)
3534: e17ffc15 stw r5,-16(fp)
3538: e1bffb15 stw r6,-20(fp)
alt_fd* fd;
off_t rc = 0;
353c: e03fff15 stw zero,-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];
3540: e0bffd17 ldw r2,-12(fp)
3544: 10000916 blt r2,zero,356c <lseek+0x4c>
3548: e0fffd17 ldw r3,-12(fp)
354c: 1805883a mov r2,r3
3550: 1085883a add r2,r2,r2
3554: 10c5883a add r2,r2,r3
3558: 100490ba slli r2,r2,2
355c: 00c00034 movhi r3,0
3560: 18d80804 addi r3,r3,24608
3564: 10c5883a add r2,r2,r3
3568: 00000106 br 3570 <lseek+0x50>
356c: 0005883a mov r2,zero
3570: e0bffe15 stw r2,-8(fp)
if (fd)
3574: e0bffe17 ldw r2,-8(fp)
3578: 10001026 beq r2,zero,35bc <lseek+0x9c>
/*
* If the device driver provides an implementation of the lseek() function,
* then call that to process the request.
*/
if (fd->dev->lseek)
357c: e0bffe17 ldw r2,-8(fp)
3580: 10800017 ldw r2,0(r2)
3584: 10800717 ldw r2,28(r2)
3588: 10000926 beq r2,zero,35b0 <lseek+0x90>
{
rc = fd->dev->lseek(fd, ptr, dir);
358c: e0bffe17 ldw r2,-8(fp)
3590: 10800017 ldw r2,0(r2)
3594: 10800717 ldw r2,28(r2)
3598: e1bffb17 ldw r6,-20(fp)
359c: e17ffc17 ldw r5,-16(fp)
35a0: e13ffe17 ldw r4,-8(fp)
35a4: 103ee83a callr r2
35a8: e0bfff15 stw r2,-4(fp)
35ac: 00000506 br 35c4 <lseek+0xa4>
* Otherwise return an error.
*/
else
{
rc = -ENOTSUP;
35b0: 00bfde84 movi r2,-134
35b4: e0bfff15 stw r2,-4(fp)
35b8: 00000206 br 35c4 <lseek+0xa4>
}
}
else
{
rc = -EBADFD;
35bc: 00bfebc4 movi r2,-81
35c0: e0bfff15 stw r2,-4(fp)
}
if (rc < 0)
35c4: e0bfff17 ldw r2,-4(fp)
35c8: 1000070e bge r2,zero,35e8 <lseek+0xc8>
{
ALT_ERRNO = -rc;
35cc: 00034e40 call 34e4 <alt_get_errno>
35d0: 1007883a mov r3,r2
35d4: e0bfff17 ldw r2,-4(fp)
35d8: 0085c83a sub r2,zero,r2
35dc: 18800015 stw r2,0(r3)
rc = -1;
35e0: 00bfffc4 movi r2,-1
35e4: e0bfff15 stw r2,-4(fp)
}
return rc;
35e8: e0bfff17 ldw r2,-4(fp)
}
35ec: e037883a mov sp,fp
35f0: dfc00117 ldw ra,4(sp)
35f4: df000017 ldw fp,0(sp)
35f8: dec00204 addi sp,sp,8
35fc: f800283a ret
00003600 <alt_main>:
* devices/filesystems/components in the system; and call the entry point for
* the users application, i.e. main().
*/
void alt_main (void)
{
3600: defffd04 addi sp,sp,-12
3604: dfc00215 stw ra,8(sp)
3608: df000115 stw fp,4(sp)
360c: 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);
3610: 0009883a mov r4,zero
3614: 0003aa40 call 3aa4 <alt_irq_init>
/* Initialize the operating system */
ALT_LOG_PRINT_BOOT("[alt_main.c] Done alt_irq_init, calling alt_os_init.\r\n");
ALT_OS_INIT();
3618: 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();
361c: 0003ae00 call 3ae0 <alt_sys_init>
* 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);
3620: 01800034 movhi r6,0
3624: 3195eb04 addi r6,r6,22444
3628: 01400034 movhi r5,0
362c: 2955eb04 addi r5,r5,22444
3630: 01000034 movhi r4,0
3634: 2115eb04 addi r4,r4,22444
3638: 0004d000 call 4d00 <alt_io_redirect>
/*
* Call the C++ constructors
*/
ALT_LOG_PRINT_BOOT("[alt_main.c] Calling C++ constructors.\r\n");
_do_ctors ();
363c: 00048cc0 call 48cc <_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);
3640: 01000034 movhi r4,0
3644: 21124c04 addi r4,r4,18736
3648: 00054ac0 call 54ac <atexit>
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);
364c: d0a01217 ldw r2,-32696(gp)
3650: d0e01317 ldw r3,-32692(gp)
3654: d1201417 ldw r4,-32688(gp)
3658: 200d883a mov r6,r4
365c: 180b883a mov r5,r3
3660: 1009883a mov r4,r2
3664: 000025c0 call 25c <main>
3668: e0bfff15 stw r2,-4(fp)
close(STDOUT_FILENO);
366c: 01000044 movi r4,1
3670: 00031d00 call 31d0 <close>
exit (result);
3674: e13fff17 ldw r4,-4(fp)
3678: 00054c00 call 54c0 <exit>
0000367c <__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 )
{
367c: defffe04 addi sp,sp,-8
3680: df000115 stw fp,4(sp)
3684: df000104 addi fp,sp,4
3688: e13fff15 stw r4,-4(fp)
}
368c: 0001883a nop
3690: e037883a mov sp,fp
3694: df000017 ldw fp,0(sp)
3698: dec00104 addi sp,sp,4
369c: f800283a ret
000036a0 <__malloc_unlock>:
/*
*
*/
void __malloc_unlock ( struct _reent *_r )
{
36a0: defffe04 addi sp,sp,-8
36a4: df000115 stw fp,4(sp)
36a8: df000104 addi fp,sp,4
36ac: e13fff15 stw r4,-4(fp)
}
36b0: 0001883a nop
36b4: e037883a mov sp,fp
36b8: df000017 ldw fp,0(sp)
36bc: dec00104 addi sp,sp,4
36c0: f800283a ret
000036c4 <alt_get_errno>:
{
36c4: defffe04 addi sp,sp,-8
36c8: dfc00115 stw ra,4(sp)
36cc: df000015 stw fp,0(sp)
36d0: d839883a mov fp,sp
return ((alt_errno) ? alt_errno() : &errno);
36d4: d0a00917 ldw r2,-32732(gp)
36d8: 10000326 beq r2,zero,36e8 <alt_get_errno+0x24>
36dc: d0a00917 ldw r2,-32732(gp)
36e0: 103ee83a callr r2
36e4: 00000106 br 36ec <alt_get_errno+0x28>
36e8: d0a01104 addi r2,gp,-32700
}
36ec: e037883a mov sp,fp
36f0: dfc00117 ldw ra,4(sp)
36f4: df000017 ldw fp,0(sp)
36f8: dec00204 addi sp,sp,8
36fc: f800283a ret
00003700 <read>:
}
#else /* !ALT_USE_DIRECT_DRIVERS */
int ALT_READ (int file, void *ptr, size_t len)
{
3700: defff904 addi sp,sp,-28
3704: dfc00615 stw ra,24(sp)
3708: df000515 stw fp,20(sp)
370c: df000504 addi fp,sp,20
3710: e13ffd15 stw r4,-12(fp)
3714: e17ffc15 stw r5,-16(fp)
3718: e1bffb15 stw r6,-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];
371c: e0bffd17 ldw r2,-12(fp)
3720: 10000916 blt r2,zero,3748 <read+0x48>
3724: e0fffd17 ldw r3,-12(fp)
3728: 1805883a mov r2,r3
372c: 1085883a add r2,r2,r2
3730: 10c5883a add r2,r2,r3
3734: 100490ba slli r2,r2,2
3738: 00c00034 movhi r3,0
373c: 18d80804 addi r3,r3,24608
3740: 10c5883a add r2,r2,r3
3744: 00000106 br 374c <read+0x4c>
3748: 0005883a mov r2,zero
374c: e0bfff15 stw r2,-4(fp)
if (fd)
3750: e0bfff17 ldw r2,-4(fp)
3754: 10002226 beq r2,zero,37e0 <read+0xe0>
* 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) &&
3758: e0bfff17 ldw r2,-4(fp)
375c: 10800217 ldw r2,8(r2)
3760: 108000cc andi r2,r2,3
3764: 10800060 cmpeqi r2,r2,1
3768: 1000181e bne r2,zero,37cc <read+0xcc>
(fd->dev->read))
376c: e0bfff17 ldw r2,-4(fp)
3770: 10800017 ldw r2,0(r2)
3774: 10800517 ldw r2,20(r2)
if (((fd->fd_flags & O_ACCMODE) != O_WRONLY) &&
3778: 10001426 beq r2,zero,37cc <read+0xcc>
{
if ((rval = fd->dev->read(fd, ptr, len)) < 0)
377c: e0bfff17 ldw r2,-4(fp)
3780: 10800017 ldw r2,0(r2)
3784: 10800517 ldw r2,20(r2)
3788: e0fffb17 ldw r3,-20(fp)
378c: 180d883a mov r6,r3
3790: e17ffc17 ldw r5,-16(fp)
3794: e13fff17 ldw r4,-4(fp)
3798: 103ee83a callr r2
379c: e0bffe15 stw r2,-8(fp)
37a0: e0bffe17 ldw r2,-8(fp)
37a4: 1000070e bge r2,zero,37c4 <read+0xc4>
{
ALT_ERRNO = -rval;
37a8: 00036c40 call 36c4 <alt_get_errno>
37ac: 1007883a mov r3,r2
37b0: e0bffe17 ldw r2,-8(fp)
37b4: 0085c83a sub r2,zero,r2
37b8: 18800015 stw r2,0(r3)
return -1;
37bc: 00bfffc4 movi r2,-1
37c0: 00000c06 br 37f4 <read+0xf4>
}
return rval;
37c4: e0bffe17 ldw r2,-8(fp)
37c8: 00000a06 br 37f4 <read+0xf4>
}
else
{
ALT_ERRNO = EACCES;
37cc: 00036c40 call 36c4 <alt_get_errno>
37d0: 1007883a mov r3,r2
37d4: 00800344 movi r2,13
37d8: 18800015 stw r2,0(r3)
37dc: 00000406 br 37f0 <read+0xf0>
}
}
else
{
ALT_ERRNO = EBADFD;
37e0: 00036c40 call 36c4 <alt_get_errno>
37e4: 1007883a mov r3,r2
37e8: 00801444 movi r2,81
37ec: 18800015 stw r2,0(r3)
}
return -1;
37f0: 00bfffc4 movi r2,-1
}
37f4: e037883a mov sp,fp
37f8: dfc00117 ldw ra,4(sp)
37fc: df000017 ldw fp,0(sp)
3800: dec00204 addi sp,sp,8
3804: f800283a ret
00003808 <alt_release_fd>:
* 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)
{
3808: defffe04 addi sp,sp,-8
380c: df000115 stw fp,4(sp)
3810: df000104 addi fp,sp,4
3814: e13fff15 stw r4,-4(fp)
if (fd > 2)
3818: e0bfff17 ldw r2,-4(fp)
381c: 108000d0 cmplti r2,r2,3
3820: 1000101e bne r2,zero,3864 <alt_release_fd+0x5c>
{
alt_fd_list[fd].fd_flags = 0;
3824: e0ffff17 ldw r3,-4(fp)
3828: 1805883a mov r2,r3
382c: 1085883a add r2,r2,r2
3830: 10c5883a add r2,r2,r3
3834: 100490ba slli r2,r2,2
3838: 00c00034 movhi r3,0
383c: 10c7883a add r3,r2,r3
3840: 18180a15 stw zero,24616(r3)
alt_fd_list[fd].dev = 0;
3844: e0ffff17 ldw r3,-4(fp)
3848: 1805883a mov r2,r3
384c: 1085883a add r2,r2,r2
3850: 10c5883a add r2,r2,r3
3854: 100490ba slli r2,r2,2
3858: 00c00034 movhi r3,0
385c: 10c7883a add r3,r2,r3
3860: 18180815 stw zero,24608(r3)
}
}
3864: 0001883a nop
3868: e037883a mov sp,fp
386c: df000017 ldw fp,0(sp)
3870: dec00104 addi sp,sp,4
3874: f800283a ret
00003878 <sbrk>:
#endif
caddr_t ALT_SBRK (int incr) __attribute__ ((no_instrument_function ));
caddr_t ALT_SBRK (int incr)
{
3878: defff904 addi sp,sp,-28
387c: df000615 stw fp,24(sp)
3880: df000604 addi fp,sp,24
3884: e13ffa15 stw r4,-24(fp)
NIOS2_READ_STATUS (context);
3888: 0005303a rdctl r2,status
388c: e0bffd15 stw r2,-12(fp)
NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK);
3890: e0fffd17 ldw r3,-12(fp)
3894: 00bfff84 movi r2,-2
3898: 1884703a and r2,r3,r2
389c: 1001703a wrctl status,r2
return context;
38a0: e0bffd17 ldw r2,-12(fp)
alt_irq_context context;
char *prev_heap_end;
context = alt_irq_disable_all();
38a4: e0bfff15 stw r2,-4(fp)
/* Always return data aligned on a word boundary */
heap_end = (char *)(((unsigned int)heap_end + 3) & ~3);
38a8: d0a00a17 ldw r2,-32728(gp)
38ac: 10c000c4 addi r3,r2,3
38b0: 00bfff04 movi r2,-4
38b4: 1884703a and r2,r3,r2
38b8: d0a00a15 stw r2,-32728(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) {
38bc: d0e00a17 ldw r3,-32728(gp)
38c0: e0bffa17 ldw r2,-24(fp)
38c4: 1887883a add r3,r3,r2
38c8: 008000b4 movhi r2,2
38cc: 10800004 addi r2,r2,0
38d0: 10c0072e bgeu r2,r3,38f0 <sbrk+0x78>
38d4: e0bfff17 ldw r2,-4(fp)
38d8: e0bffc15 stw r2,-16(fp)
NIOS2_WRITE_STATUS (context);
38dc: e0bffc17 ldw r2,-16(fp)
38e0: 1001703a wrctl status,r2
}
38e4: 0001883a nop
alt_irq_enable_all(context);
return (caddr_t)-1;
38e8: 00bfffc4 movi r2,-1
38ec: 00000c06 br 3920 <sbrk+0xa8>
}
#endif
prev_heap_end = heap_end;
38f0: d0a00a17 ldw r2,-32728(gp)
38f4: e0bffe15 stw r2,-8(fp)
heap_end += incr;
38f8: d0e00a17 ldw r3,-32728(gp)
38fc: e0bffa17 ldw r2,-24(fp)
3900: 1885883a add r2,r3,r2
3904: d0a00a15 stw r2,-32728(gp)
3908: e0bfff17 ldw r2,-4(fp)
390c: e0bffb15 stw r2,-20(fp)
NIOS2_WRITE_STATUS (context);
3910: e0bffb17 ldw r2,-20(fp)
3914: 1001703a wrctl status,r2
}
3918: 0001883a nop
#endif
alt_irq_enable_all(context);
return (caddr_t) prev_heap_end;
391c: e0bffe17 ldw r2,-8(fp)
}
3920: e037883a mov sp,fp
3924: df000017 ldw fp,0(sp)
3928: dec00104 addi sp,sp,4
392c: f800283a ret
00003930 <alt_get_errno>:
{
3930: defffe04 addi sp,sp,-8
3934: dfc00115 stw ra,4(sp)
3938: df000015 stw fp,0(sp)
393c: d839883a mov fp,sp
return ((alt_errno) ? alt_errno() : &errno);
3940: d0a00917 ldw r2,-32732(gp)
3944: 10000326 beq r2,zero,3954 <alt_get_errno+0x24>
3948: d0a00917 ldw r2,-32732(gp)
394c: 103ee83a callr r2
3950: 00000106 br 3958 <alt_get_errno+0x28>
3954: d0a01104 addi r2,gp,-32700
}
3958: e037883a mov sp,fp
395c: dfc00117 ldw ra,4(sp)
3960: df000017 ldw fp,0(sp)
3964: dec00204 addi sp,sp,8
3968: f800283a ret
0000396c <write>:
}
#else /* !ALT_USE_DIRECT_DRIVERS */
int ALT_WRITE (int file, const void *ptr, size_t len)
{
396c: defff904 addi sp,sp,-28
3970: dfc00615 stw ra,24(sp)
3974: df000515 stw fp,20(sp)
3978: df000504 addi fp,sp,20
397c: e13ffd15 stw r4,-12(fp)
3980: e17ffc15 stw r5,-16(fp)
3984: e1bffb15 stw r6,-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];
3988: e0bffd17 ldw r2,-12(fp)
398c: 10000916 blt r2,zero,39b4 <write+0x48>
3990: e0fffd17 ldw r3,-12(fp)
3994: 1805883a mov r2,r3
3998: 1085883a add r2,r2,r2
399c: 10c5883a add r2,r2,r3
39a0: 100490ba slli r2,r2,2
39a4: 00c00034 movhi r3,0
39a8: 18d80804 addi r3,r3,24608
39ac: 10c5883a add r2,r2,r3
39b0: 00000106 br 39b8 <write+0x4c>
39b4: 0005883a mov r2,zero
39b8: e0bfff15 stw r2,-4(fp)
if (fd)
39bc: e0bfff17 ldw r2,-4(fp)
39c0: 10002126 beq r2,zero,3a48 <write+0xdc>
* 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)
39c4: e0bfff17 ldw r2,-4(fp)
39c8: 10800217 ldw r2,8(r2)
39cc: 108000cc andi r2,r2,3
39d0: 10001826 beq r2,zero,3a34 <write+0xc8>
39d4: e0bfff17 ldw r2,-4(fp)
39d8: 10800017 ldw r2,0(r2)
39dc: 10800617 ldw r2,24(r2)
39e0: 10001426 beq r2,zero,3a34 <write+0xc8>
{
/* 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)
39e4: e0bfff17 ldw r2,-4(fp)
39e8: 10800017 ldw r2,0(r2)
39ec: 10800617 ldw r2,24(r2)
39f0: e0fffb17 ldw r3,-20(fp)
39f4: 180d883a mov r6,r3
39f8: e17ffc17 ldw r5,-16(fp)
39fc: e13fff17 ldw r4,-4(fp)
3a00: 103ee83a callr r2
3a04: e0bffe15 stw r2,-8(fp)
3a08: e0bffe17 ldw r2,-8(fp)
3a0c: 1000070e bge r2,zero,3a2c <write+0xc0>
{
ALT_ERRNO = -rval;
3a10: 00039300 call 3930 <alt_get_errno>
3a14: 1007883a mov r3,r2
3a18: e0bffe17 ldw r2,-8(fp)
3a1c: 0085c83a sub r2,zero,r2
3a20: 18800015 stw r2,0(r3)
return -1;
3a24: 00bfffc4 movi r2,-1
3a28: 00000c06 br 3a5c <write+0xf0>
}
return rval;
3a2c: e0bffe17 ldw r2,-8(fp)
3a30: 00000a06 br 3a5c <write+0xf0>
}
else
{
ALT_ERRNO = EACCES;
3a34: 00039300 call 3930 <alt_get_errno>
3a38: 1007883a mov r3,r2
3a3c: 00800344 movi r2,13
3a40: 18800015 stw r2,0(r3)
3a44: 00000406 br 3a58 <write+0xec>
}
}
else
{
ALT_ERRNO = EBADFD;
3a48: 00039300 call 3930 <alt_get_errno>
3a4c: 1007883a mov r3,r2
3a50: 00801444 movi r2,81
3a54: 18800015 stw r2,0(r3)
}
return -1;
3a58: 00bfffc4 movi r2,-1
}
3a5c: e037883a mov sp,fp
3a60: dfc00117 ldw ra,4(sp)
3a64: df000017 ldw fp,0(sp)
3a68: dec00204 addi sp,sp,8
3a6c: f800283a ret
00003a70 <alt_dev_reg>:
*/
extern int alt_fs_reg (alt_dev* dev);
static ALT_INLINE int alt_dev_reg (alt_dev* dev)
{
3a70: defffd04 addi sp,sp,-12
3a74: dfc00215 stw ra,8(sp)
3a78: df000115 stw fp,4(sp)
3a7c: df000104 addi fp,sp,4
3a80: e13fff15 stw r4,-4(fp)
extern alt_llist alt_dev_list;
return alt_dev_llist_insert ((alt_dev_llist*) dev, &alt_dev_list);
3a84: d1600604 addi r5,gp,-32744
3a88: e13fff17 ldw r4,-4(fp)
3a8c: 00048240 call 4824 <alt_dev_llist_insert>
}
3a90: e037883a mov sp,fp
3a94: dfc00117 ldw ra,4(sp)
3a98: df000017 ldw fp,0(sp)
3a9c: dec00204 addi sp,sp,8
3aa0: f800283a ret
00003aa4 <alt_irq_init>:
* The "base" parameter is ignored and only
* present for backwards-compatibility.
*/
void alt_irq_init ( const void* base )
{
3aa4: defffd04 addi sp,sp,-12
3aa8: dfc00215 stw ra,8(sp)
3aac: df000115 stw fp,4(sp)
3ab0: df000104 addi fp,sp,4
3ab4: e13fff15 stw r4,-4(fp)
ALTERA_NIOS2_GEN2_IRQ_INIT ( CPU, cpu);
3ab8: 00051a00 call 51a0 <altera_nios2_gen2_irq_init>
NIOS2_WRITE_STATUS(NIOS2_STATUS_PIE_MSK
3abc: 00800044 movi r2,1
3ac0: 1001703a wrctl status,r2
}
3ac4: 0001883a nop
alt_irq_cpu_enable_interrupts();
}
3ac8: 0001883a nop
3acc: e037883a mov sp,fp
3ad0: dfc00117 ldw ra,4(sp)
3ad4: df000017 ldw fp,0(sp)
3ad8: dec00204 addi sp,sp,8
3adc: f800283a ret
00003ae0 <alt_sys_init>:
* Initialize the non-interrupt controller devices.
* Called after alt_irq_init().
*/
void alt_sys_init( void )
{
3ae0: defffe04 addi sp,sp,-8
3ae4: dfc00115 stw ra,4(sp)
3ae8: df000015 stw fp,0(sp)
3aec: d839883a mov fp,sp
ALTERA_AVALON_TIMER_INIT ( SYS_CLK_TIMER, sys_clk_timer);
3af0: 01c0fa04 movi r7,1000
3af4: 000d883a mov r6,zero
3af8: 000b883a mov r5,zero
3afc: 010000b4 movhi r4,2
3b00: 21041004 addi r4,r4,4160
3b04: 00046300 call 4630 <alt_avalon_timer_sc_init>
ALTERA_AVALON_JTAG_UART_INIT ( JTAG_UART, jtag_uart);
3b08: 01800044 movi r6,1
3b0c: 000b883a mov r5,zero
3b10: 01000034 movhi r4,0
3b14: 21187204 addi r4,r4,25032
3b18: 0003ca40 call 3ca4 <altera_avalon_jtag_uart_init>
3b1c: 01000034 movhi r4,0
3b20: 21186804 addi r4,r4,24992
3b24: 0003a700 call 3a70 <alt_dev_reg>
}
3b28: 0001883a nop
3b2c: e037883a mov sp,fp
3b30: dfc00117 ldw ra,4(sp)
3b34: df000017 ldw fp,0(sp)
3b38: dec00204 addi sp,sp,8
3b3c: f800283a ret
00003b40 <altera_avalon_jtag_uart_read_fd>:
*
*/
int
altera_avalon_jtag_uart_read_fd(alt_fd* fd, char* buffer, int space)
{
3b40: defffa04 addi sp,sp,-24
3b44: dfc00515 stw ra,20(sp)
3b48: df000415 stw fp,16(sp)
3b4c: df000404 addi fp,sp,16
3b50: e13ffe15 stw r4,-8(fp)
3b54: e17ffd15 stw r5,-12(fp)
3b58: e1bffc15 stw r6,-16(fp)
altera_avalon_jtag_uart_dev* dev = (altera_avalon_jtag_uart_dev*) fd->dev;
3b5c: e0bffe17 ldw r2,-8(fp)
3b60: 10800017 ldw r2,0(r2)
3b64: e0bfff15 stw r2,-4(fp)
return altera_avalon_jtag_uart_read(&dev->state, buffer, space,
3b68: e0bfff17 ldw r2,-4(fp)
3b6c: 10c00a04 addi r3,r2,40
3b70: e0bffe17 ldw r2,-8(fp)
3b74: 10800217 ldw r2,8(r2)
3b78: 100f883a mov r7,r2
3b7c: e1bffc17 ldw r6,-16(fp)
3b80: e17ffd17 ldw r5,-12(fp)
3b84: 1809883a mov r4,r3
3b88: 000416c0 call 416c <altera_avalon_jtag_uart_read>
fd->fd_flags);
}
3b8c: e037883a mov sp,fp
3b90: dfc00117 ldw ra,4(sp)
3b94: df000017 ldw fp,0(sp)
3b98: dec00204 addi sp,sp,8
3b9c: f800283a ret
00003ba0 <altera_avalon_jtag_uart_write_fd>:
int
altera_avalon_jtag_uart_write_fd(alt_fd* fd, const char* buffer, int space)
{
3ba0: defffa04 addi sp,sp,-24
3ba4: dfc00515 stw ra,20(sp)
3ba8: df000415 stw fp,16(sp)
3bac: df000404 addi fp,sp,16
3bb0: e13ffe15 stw r4,-8(fp)
3bb4: e17ffd15 stw r5,-12(fp)
3bb8: e1bffc15 stw r6,-16(fp)
altera_avalon_jtag_uart_dev* dev = (altera_avalon_jtag_uart_dev*) fd->dev;
3bbc: e0bffe17 ldw r2,-8(fp)
3bc0: 10800017 ldw r2,0(r2)
3bc4: e0bfff15 stw r2,-4(fp)
return altera_avalon_jtag_uart_write(&dev->state, buffer, space,
3bc8: e0bfff17 ldw r2,-4(fp)
3bcc: 10c00a04 addi r3,r2,40
3bd0: e0bffe17 ldw r2,-8(fp)
3bd4: 10800217 ldw r2,8(r2)
3bd8: 100f883a mov r7,r2
3bdc: e1bffc17 ldw r6,-16(fp)
3be0: e17ffd17 ldw r5,-12(fp)
3be4: 1809883a mov r4,r3
3be8: 000438c0 call 438c <altera_avalon_jtag_uart_write>
fd->fd_flags);
}
3bec: e037883a mov sp,fp
3bf0: dfc00117 ldw ra,4(sp)
3bf4: df000017 ldw fp,0(sp)
3bf8: dec00204 addi sp,sp,8
3bfc: f800283a ret
00003c00 <altera_avalon_jtag_uart_close_fd>:
#ifndef ALTERA_AVALON_JTAG_UART_SMALL
int
altera_avalon_jtag_uart_close_fd(alt_fd* fd)
{
3c00: defffc04 addi sp,sp,-16
3c04: dfc00315 stw ra,12(sp)
3c08: df000215 stw fp,8(sp)
3c0c: df000204 addi fp,sp,8
3c10: e13ffe15 stw r4,-8(fp)
altera_avalon_jtag_uart_dev* dev = (altera_avalon_jtag_uart_dev*) fd->dev;
3c14: e0bffe17 ldw r2,-8(fp)
3c18: 10800017 ldw r2,0(r2)
3c1c: e0bfff15 stw r2,-4(fp)
return altera_avalon_jtag_uart_close(&dev->state, fd->fd_flags);
3c20: e0bfff17 ldw r2,-4(fp)
3c24: 10c00a04 addi r3,r2,40
3c28: e0bffe17 ldw r2,-8(fp)
3c2c: 10800217 ldw r2,8(r2)
3c30: 100b883a mov r5,r2
3c34: 1809883a mov r4,r3
3c38: 00040100 call 4010 <altera_avalon_jtag_uart_close>
}
3c3c: e037883a mov sp,fp
3c40: dfc00117 ldw ra,4(sp)
3c44: df000017 ldw fp,0(sp)
3c48: dec00204 addi sp,sp,8
3c4c: f800283a ret
00003c50 <altera_avalon_jtag_uart_ioctl_fd>:
int
altera_avalon_jtag_uart_ioctl_fd(alt_fd* fd, int req, void* arg)
{
3c50: defffa04 addi sp,sp,-24
3c54: dfc00515 stw ra,20(sp)
3c58: df000415 stw fp,16(sp)
3c5c: df000404 addi fp,sp,16
3c60: e13ffe15 stw r4,-8(fp)
3c64: e17ffd15 stw r5,-12(fp)
3c68: e1bffc15 stw r6,-16(fp)
altera_avalon_jtag_uart_dev* dev = (altera_avalon_jtag_uart_dev*) fd->dev;
3c6c: e0bffe17 ldw r2,-8(fp)
3c70: 10800017 ldw r2,0(r2)
3c74: e0bfff15 stw r2,-4(fp)
return altera_avalon_jtag_uart_ioctl(&dev->state, req, arg);
3c78: e0bfff17 ldw r2,-4(fp)
3c7c: 10800a04 addi r2,r2,40
3c80: e1bffc17 ldw r6,-16(fp)
3c84: e17ffd17 ldw r5,-12(fp)
3c88: 1009883a mov r4,r2
3c8c: 00040780 call 4078 <altera_avalon_jtag_uart_ioctl>
}
3c90: e037883a mov sp,fp
3c94: dfc00117 ldw ra,4(sp)
3c98: df000017 ldw fp,0(sp)
3c9c: dec00204 addi sp,sp,8
3ca0: f800283a ret
00003ca4 <altera_avalon_jtag_uart_init>:
* 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)
{
3ca4: defffa04 addi sp,sp,-24
3ca8: dfc00515 stw ra,20(sp)
3cac: df000415 stw fp,16(sp)
3cb0: df000404 addi fp,sp,16
3cb4: e13fff15 stw r4,-4(fp)
3cb8: e17ffe15 stw r5,-8(fp)
3cbc: e1bffd15 stw r6,-12(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;
3cc0: e0bfff17 ldw r2,-4(fp)
3cc4: 00c00044 movi r3,1
3cc8: 10c00815 stw r3,32(r2)
IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base, sp->irq_enable);
3ccc: e0bfff17 ldw r2,-4(fp)
3cd0: 10800017 ldw r2,0(r2)
3cd4: 10800104 addi r2,r2,4
3cd8: 1007883a mov r3,r2
3cdc: e0bfff17 ldw r2,-4(fp)
3ce0: 10800817 ldw r2,32(r2)
3ce4: 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,
3ce8: e0bffe17 ldw r2,-8(fp)
3cec: e0fffd17 ldw r3,-12(fp)
3cf0: d8000015 stw zero,0(sp)
3cf4: e1ffff17 ldw r7,-4(fp)
3cf8: 01800034 movhi r6,0
3cfc: 318f5904 addi r6,r6,15716
3d00: 180b883a mov r5,r3
3d04: 1009883a mov r4,r2
3d08: 00049940 call 4994 <alt_ic_isr_register>
#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;
3d0c: e0bfff17 ldw r2,-4(fp)
3d10: 10000915 stw zero,36(r2)
if (alt_alarm_start(&sp->alarm, alt_ticks_per_second(),
3d14: e0bfff17 ldw r2,-4(fp)
3d18: 10800204 addi r2,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;
3d1c: d0e01617 ldw r3,-32680(gp)
3d20: e1ffff17 ldw r7,-4(fp)
3d24: 01800034 movhi r6,0
3d28: 318fdc04 addi r6,r6,16240
3d2c: 180b883a mov r5,r3
3d30: 1009883a mov r4,r2
3d34: 00046b40 call 46b4 <alt_alarm_start>
3d38: 1000040e bge r2,zero,3d4c <altera_avalon_jtag_uart_init+0xa8>
&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;
3d3c: e0ffff17 ldw r3,-4(fp)
3d40: 00a00034 movhi r2,32768
3d44: 10bfffc4 addi r2,r2,-1
3d48: 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);
}
3d4c: 0001883a nop
3d50: e037883a mov sp,fp
3d54: dfc00117 ldw ra,4(sp)
3d58: df000017 ldw fp,0(sp)
3d5c: dec00204 addi sp,sp,8
3d60: f800283a ret
00003d64 <altera_avalon_jtag_uart_irq>:
#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
{
3d64: defff804 addi sp,sp,-32
3d68: df000715 stw fp,28(sp)
3d6c: df000704 addi fp,sp,28
3d70: e13ff915 stw r4,-28(fp)
altera_avalon_jtag_uart_state* sp = (altera_avalon_jtag_uart_state*) context;
3d74: e0bff917 ldw r2,-28(fp)
3d78: e0bffd15 stw r2,-12(fp)
unsigned int base = sp->base;
3d7c: e0bffd17 ldw r2,-12(fp)
3d80: 10800017 ldw r2,0(r2)
3d84: 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);
3d88: e0bffc17 ldw r2,-16(fp)
3d8c: 10800104 addi r2,r2,4
3d90: 10800037 ldwio r2,0(r2)
3d94: e0bffb15 stw r2,-20(fp)
/* Return once nothing more to do */
if ((control & (ALTERA_AVALON_JTAG_UART_CONTROL_RI_MSK | ALTERA_AVALON_JTAG_UART_CONTROL_WI_MSK)) == 0)
3d98: e0bffb17 ldw r2,-20(fp)
3d9c: 1080c00c andi r2,r2,768
3da0: 10006d26 beq r2,zero,3f58 <altera_avalon_jtag_uart_irq+0x1f4>
break;
if (control & ALTERA_AVALON_JTAG_UART_CONTROL_RI_MSK)
3da4: e0bffb17 ldw r2,-20(fp)
3da8: 1080400c andi r2,r2,256
3dac: 10003526 beq r2,zero,3e84 <altera_avalon_jtag_uart_irq+0x120>
{
/* 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;
3db0: 00800074 movhi r2,1
3db4: e0bfff15 stw r2,-4(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;
3db8: e0bffd17 ldw r2,-12(fp)
3dbc: 10800a17 ldw r2,40(r2)
3dc0: 10800044 addi r2,r2,1
3dc4: 1081ffcc andi r2,r2,2047
3dc8: e0bffa15 stw r2,-24(fp)
if (next == sp->rx_out)
3dcc: e0bffd17 ldw r2,-12(fp)
3dd0: 10800b17 ldw r2,44(r2)
3dd4: e0fffa17 ldw r3,-24(fp)
3dd8: 18801526 beq r3,r2,3e30 <altera_avalon_jtag_uart_irq+0xcc>
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);
3ddc: e0bffc17 ldw r2,-16(fp)
3de0: 10800037 ldwio r2,0(r2)
3de4: e0bfff15 stw r2,-4(fp)
if ((data & ALTERA_AVALON_JTAG_UART_DATA_RVALID_MSK) == 0)
3de8: e0bfff17 ldw r2,-4(fp)
3dec: 10a0000c andi r2,r2,32768
3df0: 10001126 beq r2,zero,3e38 <altera_avalon_jtag_uart_irq+0xd4>
break;
sp->rx_buf[sp->rx_in] = (data & ALTERA_AVALON_JTAG_UART_DATA_DATA_MSK) >> ALTERA_AVALON_JTAG_UART_DATA_DATA_OFST;
3df4: e0bffd17 ldw r2,-12(fp)
3df8: 10800a17 ldw r2,40(r2)
3dfc: e0ffff17 ldw r3,-4(fp)
3e00: 1809883a mov r4,r3
3e04: e0fffd17 ldw r3,-12(fp)
3e08: 1885883a add r2,r3,r2
3e0c: 11000e05 stb r4,56(r2)
sp->rx_in = (sp->rx_in + 1) % ALTERA_AVALON_JTAG_UART_BUF_LEN;
3e10: e0bffd17 ldw r2,-12(fp)
3e14: 10800a17 ldw r2,40(r2)
3e18: 10800044 addi r2,r2,1
3e1c: 10c1ffcc andi r3,r2,2047
3e20: e0bffd17 ldw r2,-12(fp)
3e24: 10c00a15 stw r3,40(r2)
* HAL.
*/
static ALT_INLINE int ALT_ALWAYS_INLINE alt_no_error (void)
{
return 0;
3e28: 0001883a nop
{
3e2c: 003fe206 br 3db8 <altera_avalon_jtag_uart_irq+0x54>
break;
3e30: 0001883a nop
3e34: 00000106 br 3e3c <altera_avalon_jtag_uart_irq+0xd8>
break;
3e38: 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)
3e3c: e0bfff17 ldw r2,-4(fp)
3e40: 10bfffec andhi r2,r2,65535
3e44: 10000f26 beq r2,zero,3e84 <altera_avalon_jtag_uart_irq+0x120>
{
/* 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;
3e48: e0bffd17 ldw r2,-12(fp)
3e4c: 10c00817 ldw r3,32(r2)
3e50: 00bfff84 movi r2,-2
3e54: 1886703a and r3,r3,r2
3e58: e0bffd17 ldw r2,-12(fp)
3e5c: 10c00815 stw r3,32(r2)
IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(base, sp->irq_enable);
3e60: e0bffc17 ldw r2,-16(fp)
3e64: 10800104 addi r2,r2,4
3e68: 1007883a mov r3,r2
3e6c: e0bffd17 ldw r2,-12(fp)
3e70: 10800817 ldw r2,32(r2)
3e74: 18800035 stwio r2,0(r3)
/* Dummy read to ensure IRQ is cleared prior to ISR completion */
IORD_ALTERA_AVALON_JTAG_UART_CONTROL(base);
3e78: e0bffc17 ldw r2,-16(fp)
3e7c: 10800104 addi r2,r2,4
3e80: 10800037 ldwio r2,0(r2)
}
}
if (control & ALTERA_AVALON_JTAG_UART_CONTROL_WI_MSK)
3e84: e0bffb17 ldw r2,-20(fp)
3e88: 1080800c andi r2,r2,512
3e8c: 103fbe26 beq r2,zero,3d88 <altera_avalon_jtag_uart_irq+0x24>
{
/* process a write irq */
unsigned int space = (control & ALTERA_AVALON_JTAG_UART_CONTROL_WSPACE_MSK) >> ALTERA_AVALON_JTAG_UART_CONTROL_WSPACE_OFST;
3e90: e0bffb17 ldw r2,-20(fp)
3e94: 1004d43a srli r2,r2,16
3e98: e0bffe15 stw r2,-8(fp)
while (space > 0 && sp->tx_out != sp->tx_in)
3e9c: 00001406 br 3ef0 <altera_avalon_jtag_uart_irq+0x18c>
{
IOWR_ALTERA_AVALON_JTAG_UART_DATA(base, sp->tx_buf[sp->tx_out]);
3ea0: e0bffc17 ldw r2,-16(fp)
3ea4: e0fffd17 ldw r3,-12(fp)
3ea8: 18c00d17 ldw r3,52(r3)
3eac: e13ffd17 ldw r4,-12(fp)
3eb0: 20c7883a add r3,r4,r3
3eb4: 18c20e03 ldbu r3,2104(r3)
3eb8: 18c03fcc andi r3,r3,255
3ebc: 18c0201c xori r3,r3,128
3ec0: 18ffe004 addi r3,r3,-128
3ec4: 10c00035 stwio r3,0(r2)
sp->tx_out = (sp->tx_out + 1) % ALTERA_AVALON_JTAG_UART_BUF_LEN;
3ec8: e0bffd17 ldw r2,-12(fp)
3ecc: 10800d17 ldw r2,52(r2)
3ed0: 10800044 addi r2,r2,1
3ed4: 10c1ffcc andi r3,r2,2047
3ed8: e0bffd17 ldw r2,-12(fp)
3edc: 10c00d15 stw r3,52(r2)
3ee0: 0001883a nop
/* 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--;
3ee4: e0bffe17 ldw r2,-8(fp)
3ee8: 10bfffc4 addi r2,r2,-1
3eec: e0bffe15 stw r2,-8(fp)
while (space > 0 && sp->tx_out != sp->tx_in)
3ef0: e0bffe17 ldw r2,-8(fp)
3ef4: 10000526 beq r2,zero,3f0c <altera_avalon_jtag_uart_irq+0x1a8>
3ef8: e0bffd17 ldw r2,-12(fp)
3efc: 10c00d17 ldw r3,52(r2)
3f00: e0bffd17 ldw r2,-12(fp)
3f04: 10800c17 ldw r2,48(r2)
3f08: 18bfe51e bne r3,r2,3ea0 <altera_avalon_jtag_uart_irq+0x13c>
}
if (space > 0)
3f0c: e0bffe17 ldw r2,-8(fp)
3f10: 103f9d26 beq r2,zero,3d88 <altera_avalon_jtag_uart_irq+0x24>
{
/* 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;
3f14: e0bffd17 ldw r2,-12(fp)
3f18: 10c00817 ldw r3,32(r2)
3f1c: 00bfff44 movi r2,-3
3f20: 1886703a and r3,r3,r2
3f24: e0bffd17 ldw r2,-12(fp)
3f28: 10c00815 stw r3,32(r2)
IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base, sp->irq_enable);
3f2c: e0bffd17 ldw r2,-12(fp)
3f30: 10800017 ldw r2,0(r2)
3f34: 10800104 addi r2,r2,4
3f38: 1007883a mov r3,r2
3f3c: e0bffd17 ldw r2,-12(fp)
3f40: 10800817 ldw r2,32(r2)
3f44: 18800035 stwio r2,0(r3)
/* Dummy read to ensure IRQ is cleared prior to ISR completion */
IORD_ALTERA_AVALON_JTAG_UART_CONTROL(base);
3f48: e0bffc17 ldw r2,-16(fp)
3f4c: 10800104 addi r2,r2,4
3f50: 10800037 ldwio r2,0(r2)
{
3f54: 003f8c06 br 3d88 <altera_avalon_jtag_uart_irq+0x24>
break;
3f58: 0001883a nop
}
}
}
}
3f5c: 0001883a nop
3f60: e037883a mov sp,fp
3f64: df000017 ldw fp,0(sp)
3f68: dec00104 addi sp,sp,4
3f6c: f800283a ret
00003f70 <altera_avalon_jtag_uart_timeout>:
* Timeout routine is called every second
*/
static alt_u32
altera_avalon_jtag_uart_timeout(void* context)
{
3f70: defffc04 addi sp,sp,-16
3f74: df000315 stw fp,12(sp)
3f78: df000304 addi fp,sp,12
3f7c: e13ffd15 stw r4,-12(fp)
altera_avalon_jtag_uart_state* sp = (altera_avalon_jtag_uart_state *) context;
3f80: e0bffd17 ldw r2,-12(fp)
3f84: e0bfff15 stw r2,-4(fp)
unsigned int control = IORD_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base);
3f88: e0bfff17 ldw r2,-4(fp)
3f8c: 10800017 ldw r2,0(r2)
3f90: 10800104 addi r2,r2,4
3f94: 10800037 ldwio r2,0(r2)
3f98: e0bffe15 stw r2,-8(fp)
if (control & ALTERA_AVALON_JTAG_UART_CONTROL_AC_MSK)
3f9c: e0bffe17 ldw r2,-8(fp)
3fa0: 1081000c andi r2,r2,1024
3fa4: 10000b26 beq r2,zero,3fd4 <altera_avalon_jtag_uart_timeout+0x64>
{
IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base, sp->irq_enable | ALTERA_AVALON_JTAG_UART_CONTROL_AC_MSK);
3fa8: e0bfff17 ldw r2,-4(fp)
3fac: 10800017 ldw r2,0(r2)
3fb0: 10800104 addi r2,r2,4
3fb4: 1007883a mov r3,r2
3fb8: e0bfff17 ldw r2,-4(fp)
3fbc: 10800817 ldw r2,32(r2)
3fc0: 10810014 ori r2,r2,1024
3fc4: 18800035 stwio r2,0(r3)
sp->host_inactive = 0;
3fc8: e0bfff17 ldw r2,-4(fp)
3fcc: 10000915 stw zero,36(r2)
3fd0: 00000a06 br 3ffc <altera_avalon_jtag_uart_timeout+0x8c>
}
else if (sp->host_inactive < INT_MAX - 2) {
3fd4: e0bfff17 ldw r2,-4(fp)
3fd8: 10c00917 ldw r3,36(r2)
3fdc: 00a00034 movhi r2,32768
3fe0: 10bfff04 addi r2,r2,-4
3fe4: 10c00536 bltu r2,r3,3ffc <altera_avalon_jtag_uart_timeout+0x8c>
sp->host_inactive++;
3fe8: e0bfff17 ldw r2,-4(fp)
3fec: 10800917 ldw r2,36(r2)
3ff0: 10c00044 addi r3,r2,1
3ff4: e0bfff17 ldw r2,-4(fp)
3ff8: 10c00915 stw r3,36(r2)
3ffc: d0a01617 ldw r2,-32680(gp)
ALT_FLAG_POST (sp->events, ALT_JTAG_UART_TIMEOUT, OS_FLAG_SET);
}
}
return alt_ticks_per_second();
}
4000: e037883a mov sp,fp
4004: df000017 ldw fp,0(sp)
4008: dec00104 addi sp,sp,4
400c: f800283a ret
00004010 <altera_avalon_jtag_uart_close>:
* 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)
{
4010: defffd04 addi sp,sp,-12
4014: df000215 stw fp,8(sp)
4018: df000204 addi fp,sp,8
401c: e13fff15 stw r4,-4(fp)
4020: e17ffe15 stw r5,-8(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) ) {
4024: 00000506 br 403c <altera_avalon_jtag_uart_close+0x2c>
if (flags & O_NONBLOCK) {
4028: e0bffe17 ldw r2,-8(fp)
402c: 1090000c andi r2,r2,16384
4030: 10000226 beq r2,zero,403c <altera_avalon_jtag_uart_close+0x2c>
return -EWOULDBLOCK;
4034: 00bffd44 movi r2,-11
4038: 00000b06 br 4068 <altera_avalon_jtag_uart_close+0x58>
while ( (sp->tx_out != sp->tx_in) && (sp->host_inactive < sp->timeout) ) {
403c: e0bfff17 ldw r2,-4(fp)
4040: 10c00d17 ldw r3,52(r2)
4044: e0bfff17 ldw r2,-4(fp)
4048: 10800c17 ldw r2,48(r2)
404c: 18800526 beq r3,r2,4064 <altera_avalon_jtag_uart_close+0x54>
4050: e0bfff17 ldw r2,-4(fp)
4054: 10c00917 ldw r3,36(r2)
4058: e0bfff17 ldw r2,-4(fp)
405c: 10800117 ldw r2,4(r2)
4060: 18bff136 bltu r3,r2,4028 <altera_avalon_jtag_uart_close+0x18>
}
}
return 0;
4064: 0005883a mov r2,zero
}
4068: e037883a mov sp,fp
406c: df000017 ldw fp,0(sp)
4070: dec00104 addi sp,sp,4
4074: f800283a ret
00004078 <altera_avalon_jtag_uart_ioctl>:
/* ----------------------------------------------------------- */
int
altera_avalon_jtag_uart_ioctl(altera_avalon_jtag_uart_state* sp, int req,
void* arg)
{
4078: defffa04 addi sp,sp,-24
407c: df000515 stw fp,20(sp)
4080: df000504 addi fp,sp,20
4084: e13ffd15 stw r4,-12(fp)
4088: e17ffc15 stw r5,-16(fp)
408c: e1bffb15 stw r6,-20(fp)
int rc = -ENOTTY;
4090: 00bff9c4 movi r2,-25
4094: e0bfff15 stw r2,-4(fp)
switch (req)
4098: e0bffc17 ldw r2,-16(fp)
409c: 109a8060 cmpeqi r2,r2,27137
40a0: 1000041e bne r2,zero,40b4 <altera_avalon_jtag_uart_ioctl+0x3c>
40a4: e0bffc17 ldw r2,-16(fp)
40a8: 109a80a0 cmpeqi r2,r2,27138
40ac: 1000181e bne r2,zero,4110 <altera_avalon_jtag_uart_ioctl+0x98>
rc = 0;
}
break;
default:
break;
40b0: 00002906 br 4158 <altera_avalon_jtag_uart_ioctl+0xe0>
if (sp->timeout != INT_MAX)
40b4: e0bffd17 ldw r2,-12(fp)
40b8: 10c00117 ldw r3,4(r2)
40bc: 00a00034 movhi r2,32768
40c0: 10bfffc4 addi r2,r2,-1
40c4: 18802126 beq r3,r2,414c <altera_avalon_jtag_uart_ioctl+0xd4>
int timeout = *((int *)arg);
40c8: e0bffb17 ldw r2,-20(fp)
40cc: 10800017 ldw r2,0(r2)
40d0: e0bffe15 stw r2,-8(fp)
sp->timeout = (timeout >= 2 && timeout < INT_MAX) ? timeout : INT_MAX - 1;
40d4: e0bffe17 ldw r2,-8(fp)
40d8: 10800090 cmplti r2,r2,2
40dc: 1000061e bne r2,zero,40f8 <altera_avalon_jtag_uart_ioctl+0x80>
40e0: e0fffe17 ldw r3,-8(fp)
40e4: 00a00034 movhi r2,32768
40e8: 10bfffc4 addi r2,r2,-1
40ec: 18800226 beq r3,r2,40f8 <altera_avalon_jtag_uart_ioctl+0x80>
40f0: e0bffe17 ldw r2,-8(fp)
40f4: 00000206 br 4100 <altera_avalon_jtag_uart_ioctl+0x88>
40f8: 00a00034 movhi r2,32768
40fc: 10bfff84 addi r2,r2,-2
4100: e0fffd17 ldw r3,-12(fp)
4104: 18800115 stw r2,4(r3)
rc = 0;
4108: e03fff15 stw zero,-4(fp)
break;
410c: 00000f06 br 414c <altera_avalon_jtag_uart_ioctl+0xd4>
if (sp->timeout != INT_MAX)
4110: e0bffd17 ldw r2,-12(fp)
4114: 10c00117 ldw r3,4(r2)
4118: 00a00034 movhi r2,32768
411c: 10bfffc4 addi r2,r2,-1
4120: 18800c26 beq r3,r2,4154 <altera_avalon_jtag_uart_ioctl+0xdc>
*((int *)arg) = (sp->host_inactive < sp->timeout) ? 1 : 0;
4124: e0bffd17 ldw r2,-12(fp)
4128: 10c00917 ldw r3,36(r2)
412c: e0bffd17 ldw r2,-12(fp)
4130: 10800117 ldw r2,4(r2)
4134: 1885803a cmpltu r2,r3,r2
4138: 10c03fcc andi r3,r2,255
413c: e0bffb17 ldw r2,-20(fp)
4140: 10c00015 stw r3,0(r2)
rc = 0;
4144: e03fff15 stw zero,-4(fp)
break;
4148: 00000206 br 4154 <altera_avalon_jtag_uart_ioctl+0xdc>
break;
414c: 0001883a nop
4150: 00000106 br 4158 <altera_avalon_jtag_uart_ioctl+0xe0>
break;
4154: 0001883a nop
}
return rc;
4158: e0bfff17 ldw r2,-4(fp)
}
415c: e037883a mov sp,fp
4160: df000017 ldw fp,0(sp)
4164: dec00104 addi sp,sp,4
4168: f800283a ret
0000416c <altera_avalon_jtag_uart_read>:
/* ----------------------------------------------------------- */
int
altera_avalon_jtag_uart_read(altera_avalon_jtag_uart_state* sp,
char * buffer, int space, int flags)
{
416c: defff304 addi sp,sp,-52
4170: dfc00c15 stw ra,48(sp)
4174: df000b15 stw fp,44(sp)
4178: df000b04 addi fp,sp,44
417c: e13ff815 stw r4,-32(fp)
4180: e17ff715 stw r5,-36(fp)
4184: e1bff615 stw r6,-40(fp)
4188: e1fff515 stw r7,-44(fp)
char * ptr = buffer;
418c: e0bff717 ldw r2,-36(fp)
4190: e0bfff15 stw r2,-4(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)
4194: 00004706 br 42b4 <altera_avalon_jtag_uart_read+0x148>
unsigned int in, out;
/* Read as much data as possible */
do
{
in = sp->rx_in;
4198: e0bff817 ldw r2,-32(fp)
419c: 10800a17 ldw r2,40(r2)
41a0: e0bffd15 stw r2,-12(fp)
out = sp->rx_out;
41a4: e0bff817 ldw r2,-32(fp)
41a8: 10800b17 ldw r2,44(r2)
41ac: e0bffc15 stw r2,-16(fp)
if (in >= out)
41b0: e0fffd17 ldw r3,-12(fp)
41b4: e0bffc17 ldw r2,-16(fp)
41b8: 18800536 bltu r3,r2,41d0 <altera_avalon_jtag_uart_read+0x64>
n = in - out;
41bc: e0fffd17 ldw r3,-12(fp)
41c0: e0bffc17 ldw r2,-16(fp)
41c4: 1885c83a sub r2,r3,r2
41c8: e0bffe15 stw r2,-8(fp)
41cc: 00000406 br 41e0 <altera_avalon_jtag_uart_read+0x74>
else
n = ALTERA_AVALON_JTAG_UART_BUF_LEN - out;
41d0: 00c20004 movi r3,2048
41d4: e0bffc17 ldw r2,-16(fp)
41d8: 1885c83a sub r2,r3,r2
41dc: e0bffe15 stw r2,-8(fp)
if (n == 0)
41e0: e0bffe17 ldw r2,-8(fp)
41e4: 10001e26 beq r2,zero,4260 <altera_avalon_jtag_uart_read+0xf4>
break; /* No more data available */
if (n > space)
41e8: e0fff617 ldw r3,-40(fp)
41ec: e0bffe17 ldw r2,-8(fp)
41f0: 1880022e bgeu r3,r2,41fc <altera_avalon_jtag_uart_read+0x90>
n = space;
41f4: e0bff617 ldw r2,-40(fp)
41f8: e0bffe15 stw r2,-8(fp)
memcpy(ptr, sp->rx_buf + out, n);
41fc: e0bff817 ldw r2,-32(fp)
4200: 10c00e04 addi r3,r2,56
4204: e0bffc17 ldw r2,-16(fp)
4208: 1885883a add r2,r3,r2
420c: e1bffe17 ldw r6,-8(fp)
4210: 100b883a mov r5,r2
4214: e13fff17 ldw r4,-4(fp)
4218: 00016f40 call 16f4 <memcpy>
ptr += n;
421c: e0ffff17 ldw r3,-4(fp)
4220: e0bffe17 ldw r2,-8(fp)
4224: 1885883a add r2,r3,r2
4228: e0bfff15 stw r2,-4(fp)
space -= n;
422c: e0fff617 ldw r3,-40(fp)
4230: e0bffe17 ldw r2,-8(fp)
4234: 1885c83a sub r2,r3,r2
4238: e0bff615 stw r2,-40(fp)
sp->rx_out = (out + n) % ALTERA_AVALON_JTAG_UART_BUF_LEN;
423c: e0fffc17 ldw r3,-16(fp)
4240: e0bffe17 ldw r2,-8(fp)
4244: 1885883a add r2,r3,r2
4248: 10c1ffcc andi r3,r2,2047
424c: e0bff817 ldw r2,-32(fp)
4250: 10c00b15 stw r3,44(r2)
}
while (space > 0);
4254: e0bff617 ldw r2,-40(fp)
4258: 00bfcf16 blt zero,r2,4198 <altera_avalon_jtag_uart_read+0x2c>
425c: 00000106 br 4264 <altera_avalon_jtag_uart_read+0xf8>
break; /* No more data available */
4260: 0001883a nop
/* If we read any data then return it */
if (ptr != buffer)
4264: e0ffff17 ldw r3,-4(fp)
4268: e0bff717 ldw r2,-36(fp)
426c: 1880141e bne r3,r2,42c0 <altera_avalon_jtag_uart_read+0x154>
break;
/* If in non-blocking mode then return error */
if (flags & O_NONBLOCK)
4270: e0bff517 ldw r2,-44(fp)
4274: 1090000c andi r2,r2,16384
4278: 1000131e bne r2,zero,42c8 <altera_avalon_jtag_uart_read+0x15c>
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)
427c: 0001883a nop
4280: e0bff817 ldw r2,-32(fp)
4284: 10800a17 ldw r2,40(r2)
4288: e0fffd17 ldw r3,-12(fp)
428c: 1880051e bne r3,r2,42a4 <altera_avalon_jtag_uart_read+0x138>
4290: e0bff817 ldw r2,-32(fp)
4294: 10c00917 ldw r3,36(r2)
4298: e0bff817 ldw r2,-32(fp)
429c: 10800117 ldw r2,4(r2)
42a0: 18bff736 bltu r3,r2,4280 <altera_avalon_jtag_uart_read+0x114>
;
#endif /* __ucosii__ */
if (in == sp->rx_in)
42a4: e0bff817 ldw r2,-32(fp)
42a8: 10800a17 ldw r2,40(r2)
42ac: e0fffd17 ldw r3,-12(fp)
42b0: 18800726 beq r3,r2,42d0 <altera_avalon_jtag_uart_read+0x164>
while (space > 0)
42b4: e0bff617 ldw r2,-40(fp)
42b8: 00bfb716 blt zero,r2,4198 <altera_avalon_jtag_uart_read+0x2c>
42bc: 00000506 br 42d4 <altera_avalon_jtag_uart_read+0x168>
break;
42c0: 0001883a nop
42c4: 00000306 br 42d4 <altera_avalon_jtag_uart_read+0x168>
break;
42c8: 0001883a nop
42cc: 00000106 br 42d4 <altera_avalon_jtag_uart_read+0x168>
break;
42d0: 0001883a nop
* semaphore so that other threads can access the buffer.
*/
ALT_SEM_POST (sp->read_lock);
if (ptr != buffer)
42d4: e0ffff17 ldw r3,-4(fp)
42d8: e0bff717 ldw r2,-36(fp)
42dc: 18801926 beq r3,r2,4344 <altera_avalon_jtag_uart_read+0x1d8>
NIOS2_READ_STATUS (context);
42e0: 0005303a rdctl r2,status
42e4: e0bff915 stw r2,-28(fp)
NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK);
42e8: e0fff917 ldw r3,-28(fp)
42ec: 00bfff84 movi r2,-2
42f0: 1884703a and r2,r3,r2
42f4: 1001703a wrctl status,r2
return context;
42f8: e0bff917 ldw r2,-28(fp)
{
/* If we read any data then there is space in the buffer so enable interrupts */
context = alt_irq_disable_all();
42fc: e0bffb15 stw r2,-20(fp)
sp->irq_enable |= ALTERA_AVALON_JTAG_UART_CONTROL_RE_MSK;
4300: e0bff817 ldw r2,-32(fp)
4304: 10800817 ldw r2,32(r2)
4308: 10c00054 ori r3,r2,1
430c: e0bff817 ldw r2,-32(fp)
4310: 10c00815 stw r3,32(r2)
IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base, sp->irq_enable);
4314: e0bff817 ldw r2,-32(fp)
4318: 10800017 ldw r2,0(r2)
431c: 10800104 addi r2,r2,4
4320: 1007883a mov r3,r2
4324: e0bff817 ldw r2,-32(fp)
4328: 10800817 ldw r2,32(r2)
432c: 18800035 stwio r2,0(r3)
4330: e0bffb17 ldw r2,-20(fp)
4334: e0bffa15 stw r2,-24(fp)
NIOS2_WRITE_STATUS (context);
4338: e0bffa17 ldw r2,-24(fp)
433c: 1001703a wrctl status,r2
}
4340: 0001883a nop
alt_irq_enable_all(context);
}
if (ptr != buffer)
4344: e0ffff17 ldw r3,-4(fp)
4348: e0bff717 ldw r2,-36(fp)
434c: 18800426 beq r3,r2,4360 <altera_avalon_jtag_uart_read+0x1f4>
return ptr - buffer;
4350: e0ffff17 ldw r3,-4(fp)
4354: e0bff717 ldw r2,-36(fp)
4358: 1885c83a sub r2,r3,r2
435c: 00000606 br 4378 <altera_avalon_jtag_uart_read+0x20c>
else if (flags & O_NONBLOCK)
4360: e0bff517 ldw r2,-44(fp)
4364: 1090000c andi r2,r2,16384
4368: 10000226 beq r2,zero,4374 <altera_avalon_jtag_uart_read+0x208>
return -EWOULDBLOCK;
436c: 00bffd44 movi r2,-11
4370: 00000106 br 4378 <altera_avalon_jtag_uart_read+0x20c>
else
return -EIO;
4374: 00bffec4 movi r2,-5
}
4378: e037883a mov sp,fp
437c: dfc00117 ldw ra,4(sp)
4380: df000017 ldw fp,0(sp)
4384: dec00204 addi sp,sp,8
4388: f800283a ret
0000438c <altera_avalon_jtag_uart_write>:
/* ----------------------------------------------------------- */
int
altera_avalon_jtag_uart_write(altera_avalon_jtag_uart_state* sp,
const char * ptr, int count, int flags)
{
438c: defff304 addi sp,sp,-52
4390: dfc00c15 stw ra,48(sp)
4394: df000b15 stw fp,44(sp)
4398: df000b04 addi fp,sp,44
439c: e13ff815 stw r4,-32(fp)
43a0: e17ff715 stw r5,-36(fp)
43a4: e1bff615 stw r6,-40(fp)
43a8: e1fff515 stw r7,-44(fp)
/* Remove warning at optimisation level 03 by seting out to 0 */
unsigned int in, out=0;
43ac: e03fff15 stw zero,-4(fp)
unsigned int n;
alt_irq_context context;
const char * start = ptr;
43b0: e0bff717 ldw r2,-36(fp)
43b4: e0bffd15 stw r2,-12(fp)
ALT_SEM_PEND (sp->write_lock, 0);
do
{
/* Copy as much as we can into the transmit buffer */
while (count > 0)
43b8: 00003706 br 4498 <altera_avalon_jtag_uart_write+0x10c>
{
/* We need a stable value of the out pointer to calculate the space available */
in = sp->tx_in;
43bc: e0bff817 ldw r2,-32(fp)
43c0: 10800c17 ldw r2,48(r2)
43c4: e0bffc15 stw r2,-16(fp)
out = sp->tx_out;
43c8: e0bff817 ldw r2,-32(fp)
43cc: 10800d17 ldw r2,52(r2)
43d0: e0bfff15 stw r2,-4(fp)
if (in < out)
43d4: e0fffc17 ldw r3,-16(fp)
43d8: e0bfff17 ldw r2,-4(fp)
43dc: 1880062e bgeu r3,r2,43f8 <altera_avalon_jtag_uart_write+0x6c>
n = out - 1 - in;
43e0: e0ffff17 ldw r3,-4(fp)
43e4: e0bffc17 ldw r2,-16(fp)
43e8: 1885c83a sub r2,r3,r2
43ec: 10bfffc4 addi r2,r2,-1
43f0: e0bffe15 stw r2,-8(fp)
43f4: 00000b06 br 4424 <altera_avalon_jtag_uart_write+0x98>
else if (out > 0)
43f8: e0bfff17 ldw r2,-4(fp)
43fc: 10000526 beq r2,zero,4414 <altera_avalon_jtag_uart_write+0x88>
n = ALTERA_AVALON_JTAG_UART_BUF_LEN - in;
4400: 00c20004 movi r3,2048
4404: e0bffc17 ldw r2,-16(fp)
4408: 1885c83a sub r2,r3,r2
440c: e0bffe15 stw r2,-8(fp)
4410: 00000406 br 4424 <altera_avalon_jtag_uart_write+0x98>
else
n = ALTERA_AVALON_JTAG_UART_BUF_LEN - 1 - in;
4414: 00c1ffc4 movi r3,2047
4418: e0bffc17 ldw r2,-16(fp)
441c: 1885c83a sub r2,r3,r2
4420: e0bffe15 stw r2,-8(fp)
if (n == 0)
4424: e0bffe17 ldw r2,-8(fp)
4428: 10001e26 beq r2,zero,44a4 <altera_avalon_jtag_uart_write+0x118>
break;
if (n > count)
442c: e0fff617 ldw r3,-40(fp)
4430: e0bffe17 ldw r2,-8(fp)
4434: 1880022e bgeu r3,r2,4440 <altera_avalon_jtag_uart_write+0xb4>
n = count;
4438: e0bff617 ldw r2,-40(fp)
443c: e0bffe15 stw r2,-8(fp)
memcpy(sp->tx_buf + in, ptr, n);
4440: e0bff817 ldw r2,-32(fp)
4444: 10c20e04 addi r3,r2,2104
4448: e0bffc17 ldw r2,-16(fp)
444c: 1885883a add r2,r3,r2
4450: e1bffe17 ldw r6,-8(fp)
4454: e17ff717 ldw r5,-36(fp)
4458: 1009883a mov r4,r2
445c: 00016f40 call 16f4 <memcpy>
ptr += n;
4460: e0fff717 ldw r3,-36(fp)
4464: e0bffe17 ldw r2,-8(fp)
4468: 1885883a add r2,r3,r2
446c: e0bff715 stw r2,-36(fp)
count -= n;
4470: e0fff617 ldw r3,-40(fp)
4474: e0bffe17 ldw r2,-8(fp)
4478: 1885c83a sub r2,r3,r2
447c: e0bff615 stw r2,-40(fp)
sp->tx_in = (in + n) % ALTERA_AVALON_JTAG_UART_BUF_LEN;
4480: e0fffc17 ldw r3,-16(fp)
4484: e0bffe17 ldw r2,-8(fp)
4488: 1885883a add r2,r3,r2
448c: 10c1ffcc andi r3,r2,2047
4490: e0bff817 ldw r2,-32(fp)
4494: 10c00c15 stw r3,48(r2)
while (count > 0)
4498: e0bff617 ldw r2,-40(fp)
449c: 00bfc716 blt zero,r2,43bc <altera_avalon_jtag_uart_write+0x30>
44a0: 00000106 br 44a8 <altera_avalon_jtag_uart_write+0x11c>
break;
44a4: 0001883a nop
NIOS2_READ_STATUS (context);
44a8: 0005303a rdctl r2,status
44ac: e0bff915 stw r2,-28(fp)
NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK);
44b0: e0fff917 ldw r3,-28(fp)
44b4: 00bfff84 movi r2,-2
44b8: 1884703a and r2,r3,r2
44bc: 1001703a wrctl status,r2
return context;
44c0: e0bff917 ldw r2,-28(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();
44c4: e0bffb15 stw r2,-20(fp)
sp->irq_enable |= ALTERA_AVALON_JTAG_UART_CONTROL_WE_MSK;
44c8: e0bff817 ldw r2,-32(fp)
44cc: 10800817 ldw r2,32(r2)
44d0: 10c00094 ori r3,r2,2
44d4: e0bff817 ldw r2,-32(fp)
44d8: 10c00815 stw r3,32(r2)
IOWR_ALTERA_AVALON_JTAG_UART_CONTROL(sp->base, sp->irq_enable);
44dc: e0bff817 ldw r2,-32(fp)
44e0: 10800017 ldw r2,0(r2)
44e4: 10800104 addi r2,r2,4
44e8: 1007883a mov r3,r2
44ec: e0bff817 ldw r2,-32(fp)
44f0: 10800817 ldw r2,32(r2)
44f4: 18800035 stwio r2,0(r3)
44f8: e0bffb17 ldw r2,-20(fp)
44fc: e0bffa15 stw r2,-24(fp)
NIOS2_WRITE_STATUS (context);
4500: e0bffa17 ldw r2,-24(fp)
4504: 1001703a wrctl status,r2
}
4508: 0001883a nop
/*
* 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)
450c: e0bff617 ldw r2,-40(fp)
4510: 0080100e bge zero,r2,4554 <altera_avalon_jtag_uart_write+0x1c8>
{
if (flags & O_NONBLOCK)
4514: e0bff517 ldw r2,-44(fp)
4518: 1090000c andi r2,r2,16384
451c: 1000101e bne r2,zero,4560 <altera_avalon_jtag_uart_write+0x1d4>
/*
* 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)
4520: 0001883a nop
4524: e0bff817 ldw r2,-32(fp)
4528: 10800d17 ldw r2,52(r2)
452c: e0ffff17 ldw r3,-4(fp)
4530: 1880051e bne r3,r2,4548 <altera_avalon_jtag_uart_write+0x1bc>
4534: e0bff817 ldw r2,-32(fp)
4538: 10c00917 ldw r3,36(r2)
453c: e0bff817 ldw r2,-32(fp)
4540: 10800117 ldw r2,4(r2)
4544: 18bff736 bltu r3,r2,4524 <altera_avalon_jtag_uart_write+0x198>
;
#endif /* __ucosii__ */
if (sp->host_inactive)
4548: e0bff817 ldw r2,-32(fp)
454c: 10800917 ldw r2,36(r2)
4550: 1000051e bne r2,zero,4568 <altera_avalon_jtag_uart_write+0x1dc>
break;
}
}
while (count > 0);
4554: e0bff617 ldw r2,-40(fp)
4558: 00bfcf16 blt zero,r2,4498 <altera_avalon_jtag_uart_write+0x10c>
455c: 00000306 br 456c <altera_avalon_jtag_uart_write+0x1e0>
break;
4560: 0001883a nop
4564: 00000106 br 456c <altera_avalon_jtag_uart_write+0x1e0>
break;
4568: 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)
456c: e0fff717 ldw r3,-36(fp)
4570: e0bffd17 ldw r2,-12(fp)
4574: 18800426 beq r3,r2,4588 <altera_avalon_jtag_uart_write+0x1fc>
return ptr - start;
4578: e0fff717 ldw r3,-36(fp)
457c: e0bffd17 ldw r2,-12(fp)
4580: 1885c83a sub r2,r3,r2
4584: 00000606 br 45a0 <altera_avalon_jtag_uart_write+0x214>
else if (flags & O_NONBLOCK)
4588: e0bff517 ldw r2,-44(fp)
458c: 1090000c andi r2,r2,16384
4590: 10000226 beq r2,zero,459c <altera_avalon_jtag_uart_write+0x210>
return -EWOULDBLOCK;
4594: 00bffd44 movi r2,-11
4598: 00000106 br 45a0 <altera_avalon_jtag_uart_write+0x214>
sp->tx_out = sp->tx_in = 0;
return ptr - start + count;
}
#endif
else
return -EIO; /* Host not connected */
459c: 00bffec4 movi r2,-5
}
45a0: e037883a mov sp,fp
45a4: dfc00117 ldw ra,4(sp)
45a8: df000017 ldw fp,0(sp)
45ac: dec00204 addi sp,sp,8
45b0: f800283a ret
000045b4 <alt_avalon_timer_sc_irq>:
#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
{
45b4: defffa04 addi sp,sp,-24
45b8: dfc00515 stw ra,20(sp)
45bc: df000415 stw fp,16(sp)
45c0: df000404 addi fp,sp,16
45c4: e13ffc15 stw r4,-16(fp)
alt_irq_context cpu_sr;
/* clear the interrupt */
IOWR_ALTERA_AVALON_TIMER_STATUS (base, 0);
45c8: 0007883a mov r3,zero
45cc: e0bffc17 ldw r2,-16(fp)
45d0: 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);
45d4: e0bffc17 ldw r2,-16(fp)
45d8: 10800104 addi r2,r2,4
45dc: 10800037 ldwio r2,0(r2)
NIOS2_READ_STATUS (context);
45e0: 0005303a rdctl r2,status
45e4: e0bffd15 stw r2,-12(fp)
NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK);
45e8: e0fffd17 ldw r3,-12(fp)
45ec: 00bfff84 movi r2,-2
45f0: 1884703a and r2,r3,r2
45f4: 1001703a wrctl status,r2
return context;
45f8: 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();
45fc: e0bfff15 stw r2,-4(fp)
alt_tick ();
4600: 00050980 call 5098 <alt_tick>
4604: e0bfff17 ldw r2,-4(fp)
4608: e0bffe15 stw r2,-8(fp)
NIOS2_WRITE_STATUS (context);
460c: e0bffe17 ldw r2,-8(fp)
4610: 1001703a wrctl status,r2
}
4614: 0001883a nop
alt_irq_enable_all(cpu_sr);
}
4618: 0001883a nop
461c: e037883a mov sp,fp
4620: dfc00117 ldw ra,4(sp)
4624: df000017 ldw fp,0(sp)
4628: dec00204 addi sp,sp,8
462c: f800283a ret
00004630 <alt_avalon_timer_sc_init>:
* 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)
{
4630: defff804 addi sp,sp,-32
4634: dfc00715 stw ra,28(sp)
4638: df000615 stw fp,24(sp)
463c: df000604 addi fp,sp,24
4640: e13ffe15 stw r4,-8(fp)
4644: e17ffd15 stw r5,-12(fp)
4648: e1bffc15 stw r6,-16(fp)
464c: e1fffb15 stw r7,-20(fp)
4650: e0bffb17 ldw r2,-20(fp)
4654: e0bfff15 stw r2,-4(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)
4658: d0a01617 ldw r2,-32680(gp)
465c: 1000031e bne r2,zero,466c <alt_avalon_timer_sc_init+0x3c>
{
_alt_tick_rate = nticks;
4660: e0bfff17 ldw r2,-4(fp)
4664: d0a01615 stw r2,-32680(gp)
return 0;
4668: 00000106 br 4670 <alt_avalon_timer_sc_init+0x40>
}
else
{
return -1;
466c: 0001883a nop
alt_sysclk_init (freq);
/* set to free running mode */
IOWR_ALTERA_AVALON_TIMER_CONTROL (base,
4670: e0bffe17 ldw r2,-8(fp)
4674: 10800104 addi r2,r2,4
4678: 00c001c4 movi r3,7
467c: 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,
4680: d8000015 stw zero,0(sp)
4684: e1fffe17 ldw r7,-8(fp)
4688: 01800034 movhi r6,0
468c: 31916d04 addi r6,r6,17844
4690: e17ffc17 ldw r5,-16(fp)
4694: e13ffd17 ldw r4,-12(fp)
4698: 00049940 call 4994 <alt_ic_isr_register>
base, NULL);
#else
alt_irq_register (irq, base, alt_avalon_timer_sc_irq);
#endif
}
469c: 0001883a nop
46a0: e037883a mov sp,fp
46a4: dfc00117 ldw ra,4(sp)
46a8: df000017 ldw fp,0(sp)
46ac: dec00204 addi sp,sp,8
46b0: f800283a ret
000046b4 <alt_alarm_start>:
*/
int alt_alarm_start (alt_alarm* alarm, alt_u32 nticks,
alt_u32 (*callback) (void* context),
void* context)
{
46b4: defff504 addi sp,sp,-44
46b8: df000a15 stw fp,40(sp)
46bc: df000a04 addi fp,sp,40
46c0: e13ff915 stw r4,-28(fp)
46c4: e17ff815 stw r5,-32(fp)
46c8: e1bff715 stw r6,-36(fp)
46cc: e1fff615 stw r7,-40(fp)
alt_irq_context irq_context;
alt_u32 current_nticks = 0;
46d0: e03fff15 stw zero,-4(fp)
return _alt_tick_rate;
46d4: d0a01617 ldw r2,-32680(gp)
if (alt_ticks_per_second ())
46d8: 10003e26 beq r2,zero,47d4 <alt_alarm_start+0x120>
{
if (alarm)
46dc: e0bff917 ldw r2,-28(fp)
46e0: 10003a26 beq r2,zero,47cc <alt_alarm_start+0x118>
{
alarm->callback = callback;
46e4: e0bff917 ldw r2,-28(fp)
46e8: e0fff717 ldw r3,-36(fp)
46ec: 10c00315 stw r3,12(r2)
alarm->context = context;
46f0: e0bff917 ldw r2,-28(fp)
46f4: e0fff617 ldw r3,-40(fp)
46f8: 10c00515 stw r3,20(r2)
NIOS2_READ_STATUS (context);
46fc: 0005303a rdctl r2,status
4700: e0bffd15 stw r2,-12(fp)
NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK);
4704: e0fffd17 ldw r3,-12(fp)
4708: 00bfff84 movi r2,-2
470c: 1884703a and r2,r3,r2
4710: 1001703a wrctl status,r2
return context;
4714: e0bffd17 ldw r2,-12(fp)
irq_context = alt_irq_disable_all ();
4718: e0bffe15 stw r2,-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;
471c: d0a01717 ldw r2,-32676(gp)
current_nticks = alt_nticks();
4720: e0bfff15 stw r2,-4(fp)
alarm->time = nticks + current_nticks + 1;
4724: e0fff817 ldw r3,-32(fp)
4728: e0bfff17 ldw r2,-4(fp)
472c: 1885883a add r2,r3,r2
4730: 10c00044 addi r3,r2,1
4734: e0bff917 ldw r2,-28(fp)
4738: 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)
473c: e0bff917 ldw r2,-28(fp)
4740: 10c00217 ldw r3,8(r2)
4744: e0bfff17 ldw r2,-4(fp)
4748: 1880042e bgeu r3,r2,475c <alt_alarm_start+0xa8>
{
alarm->rollover = 1;
474c: e0bff917 ldw r2,-28(fp)
4750: 00c00044 movi r3,1
4754: 10c00405 stb r3,16(r2)
4758: 00000206 br 4764 <alt_alarm_start+0xb0>
}
else
{
alarm->rollover = 0;
475c: e0bff917 ldw r2,-28(fp)
4760: 10000405 stb zero,16(r2)
}
alt_llist_insert (&alt_alarm_list, &alarm->llist);
4764: e0bff917 ldw r2,-28(fp)
4768: d0e00c04 addi r3,gp,-32720
476c: e0fffb15 stw r3,-20(fp)
4770: e0bffa15 stw r2,-24(fp)
*/
static ALT_INLINE void ALT_ALWAYS_INLINE alt_llist_insert(alt_llist* list,
alt_llist* entry)
{
entry->previous = list;
4774: e0bffa17 ldw r2,-24(fp)
4778: e0fffb17 ldw r3,-20(fp)
477c: 10c00115 stw r3,4(r2)
entry->next = list->next;
4780: e0bffb17 ldw r2,-20(fp)
4784: 10c00017 ldw r3,0(r2)
4788: e0bffa17 ldw r2,-24(fp)
478c: 10c00015 stw r3,0(r2)
list->next->previous = entry;
4790: e0bffb17 ldw r2,-20(fp)
4794: 10800017 ldw r2,0(r2)
4798: e0fffa17 ldw r3,-24(fp)
479c: 10c00115 stw r3,4(r2)
list->next = entry;
47a0: e0bffb17 ldw r2,-20(fp)
47a4: e0fffa17 ldw r3,-24(fp)
47a8: 10c00015 stw r3,0(r2)
}
47ac: 0001883a nop
47b0: e0bffe17 ldw r2,-8(fp)
47b4: e0bffc15 stw r2,-16(fp)
NIOS2_WRITE_STATUS (context);
47b8: e0bffc17 ldw r2,-16(fp)
47bc: 1001703a wrctl status,r2
}
47c0: 0001883a nop
alt_irq_enable_all (irq_context);
return 0;
47c4: 0005883a mov r2,zero
47c8: 00000306 br 47d8 <alt_alarm_start+0x124>
}
else
{
return -EINVAL;
47cc: 00bffa84 movi r2,-22
47d0: 00000106 br 47d8 <alt_alarm_start+0x124>
}
}
else
{
return -ENOTSUP;
47d4: 00bfde84 movi r2,-134
}
}
47d8: e037883a mov sp,fp
47dc: df000017 ldw fp,0(sp)
47e0: dec00104 addi sp,sp,4
47e4: f800283a ret
000047e8 <alt_get_errno>:
{
47e8: defffe04 addi sp,sp,-8
47ec: dfc00115 stw ra,4(sp)
47f0: df000015 stw fp,0(sp)
47f4: d839883a mov fp,sp
return ((alt_errno) ? alt_errno() : &errno);
47f8: d0a00917 ldw r2,-32732(gp)
47fc: 10000326 beq r2,zero,480c <alt_get_errno+0x24>
4800: d0a00917 ldw r2,-32732(gp)
4804: 103ee83a callr r2
4808: 00000106 br 4810 <alt_get_errno+0x28>
480c: d0a01104 addi r2,gp,-32700
}
4810: e037883a mov sp,fp
4814: dfc00117 ldw ra,4(sp)
4818: df000017 ldw fp,0(sp)
481c: dec00204 addi sp,sp,8
4820: f800283a ret
00004824 <alt_dev_llist_insert>:
/*
*
*/
int alt_dev_llist_insert (alt_dev_llist* dev, alt_llist* list)
{
4824: defffa04 addi sp,sp,-24
4828: dfc00515 stw ra,20(sp)
482c: df000415 stw fp,16(sp)
4830: df000404 addi fp,sp,16
4834: e13ffd15 stw r4,-12(fp)
4838: e17ffc15 stw r5,-16(fp)
/*
* check that the device exists, and that it has a valid name.
*/
if (!dev || !dev->name)
483c: e0bffd17 ldw r2,-12(fp)
4840: 10000326 beq r2,zero,4850 <alt_dev_llist_insert+0x2c>
4844: e0bffd17 ldw r2,-12(fp)
4848: 10800217 ldw r2,8(r2)
484c: 1000061e bne r2,zero,4868 <alt_dev_llist_insert+0x44>
{
ALT_ERRNO = EINVAL;
4850: 00047e80 call 47e8 <alt_get_errno>
4854: 1007883a mov r3,r2
4858: 00800584 movi r2,22
485c: 18800015 stw r2,0(r3)
return -EINVAL;
4860: 00bffa84 movi r2,-22
4864: 00001406 br 48b8 <alt_dev_llist_insert+0x94>
/*
* register the device.
*/
alt_llist_insert(list, &dev->llist);
4868: e0bffd17 ldw r2,-12(fp)
486c: e0fffc17 ldw r3,-16(fp)
4870: e0ffff15 stw r3,-4(fp)
4874: e0bffe15 stw r2,-8(fp)
entry->previous = list;
4878: e0bffe17 ldw r2,-8(fp)
487c: e0ffff17 ldw r3,-4(fp)
4880: 10c00115 stw r3,4(r2)
entry->next = list->next;
4884: e0bfff17 ldw r2,-4(fp)
4888: 10c00017 ldw r3,0(r2)
488c: e0bffe17 ldw r2,-8(fp)
4890: 10c00015 stw r3,0(r2)
list->next->previous = entry;
4894: e0bfff17 ldw r2,-4(fp)
4898: 10800017 ldw r2,0(r2)
489c: e0fffe17 ldw r3,-8(fp)
48a0: 10c00115 stw r3,4(r2)
list->next = entry;
48a4: e0bfff17 ldw r2,-4(fp)
48a8: e0fffe17 ldw r3,-8(fp)
48ac: 10c00015 stw r3,0(r2)
}
48b0: 0001883a nop
return 0;
48b4: 0005883a mov r2,zero
}
48b8: e037883a mov sp,fp
48bc: dfc00117 ldw ra,4(sp)
48c0: df000017 ldw fp,0(sp)
48c4: dec00204 addi sp,sp,8
48c8: f800283a ret
000048cc <_do_ctors>:
/*
* Run the C++ static constructors.
*/
void _do_ctors(void)
{
48cc: defffd04 addi sp,sp,-12
48d0: dfc00215 stw ra,8(sp)
48d4: df000115 stw fp,4(sp)
48d8: df000104 addi fp,sp,4
constructor* ctor;
for (ctor = &__CTOR_END__[-1]; ctor >= __CTOR_LIST__; ctor--)
48dc: 00800034 movhi r2,0
48e0: 1095d404 addi r2,r2,22352
48e4: e0bfff15 stw r2,-4(fp)
48e8: 00000606 br 4904 <_do_ctors+0x38>
(*ctor) ();
48ec: e0bfff17 ldw r2,-4(fp)
48f0: 10800017 ldw r2,0(r2)
48f4: 103ee83a callr r2
for (ctor = &__CTOR_END__[-1]; ctor >= __CTOR_LIST__; ctor--)
48f8: e0bfff17 ldw r2,-4(fp)
48fc: 10bfff04 addi r2,r2,-4
4900: e0bfff15 stw r2,-4(fp)
4904: e0ffff17 ldw r3,-4(fp)
4908: 00800034 movhi r2,0
490c: 1095d504 addi r2,r2,22356
4910: 18bff62e bgeu r3,r2,48ec <_do_ctors+0x20>
}
4914: 0001883a nop
4918: 0001883a nop
491c: e037883a mov sp,fp
4920: dfc00117 ldw ra,4(sp)
4924: df000017 ldw fp,0(sp)
4928: dec00204 addi sp,sp,8
492c: f800283a ret
00004930 <_do_dtors>:
/*
* Run the C++ static destructors.
*/
void _do_dtors(void)
{
4930: defffd04 addi sp,sp,-12
4934: dfc00215 stw ra,8(sp)
4938: df000115 stw fp,4(sp)
493c: df000104 addi fp,sp,4
destructor* dtor;
for (dtor = &__DTOR_END__[-1]; dtor >= __DTOR_LIST__; dtor--)
4940: 00800034 movhi r2,0
4944: 1095d404 addi r2,r2,22352
4948: e0bfff15 stw r2,-4(fp)
494c: 00000606 br 4968 <_do_dtors+0x38>
(*dtor) ();
4950: e0bfff17 ldw r2,-4(fp)
4954: 10800017 ldw r2,0(r2)
4958: 103ee83a callr r2
for (dtor = &__DTOR_END__[-1]; dtor >= __DTOR_LIST__; dtor--)
495c: e0bfff17 ldw r2,-4(fp)
4960: 10bfff04 addi r2,r2,-4
4964: e0bfff15 stw r2,-4(fp)
4968: e0ffff17 ldw r3,-4(fp)
496c: 00800034 movhi r2,0
4970: 1095d504 addi r2,r2,22356
4974: 18bff62e bgeu r3,r2,4950 <_do_dtors+0x20>
}
4978: 0001883a nop
497c: 0001883a nop
4980: e037883a mov sp,fp
4984: dfc00117 ldw ra,4(sp)
4988: df000017 ldw fp,0(sp)
498c: dec00204 addi sp,sp,8
4990: f800283a ret
00004994 <alt_ic_isr_register>:
* @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)
{
4994: defff904 addi sp,sp,-28
4998: dfc00615 stw ra,24(sp)
499c: df000515 stw fp,20(sp)
49a0: df000504 addi fp,sp,20
49a4: e13fff15 stw r4,-4(fp)
49a8: e17ffe15 stw r5,-8(fp)
49ac: e1bffd15 stw r6,-12(fp)
49b0: e1fffc15 stw r7,-16(fp)
return alt_iic_isr_register(ic_id, irq, isr, isr_context, flags);
49b4: e0800217 ldw r2,8(fp)
49b8: d8800015 stw r2,0(sp)
49bc: e1fffc17 ldw r7,-16(fp)
49c0: e1bffd17 ldw r6,-12(fp)
49c4: e17ffe17 ldw r5,-8(fp)
49c8: e13fff17 ldw r4,-4(fp)
49cc: 0004b440 call 4b44 <alt_iic_isr_register>
}
49d0: e037883a mov sp,fp
49d4: dfc00117 ldw ra,4(sp)
49d8: df000017 ldw fp,0(sp)
49dc: dec00204 addi sp,sp,8
49e0: f800283a ret
000049e4 <alt_ic_irq_enable>:
* @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)
{
49e4: defff904 addi sp,sp,-28
49e8: df000615 stw fp,24(sp)
49ec: df000604 addi fp,sp,24
49f0: e13ffb15 stw r4,-20(fp)
49f4: e17ffa15 stw r5,-24(fp)
49f8: e0bffa17 ldw r2,-24(fp)
49fc: e0bfff15 stw r2,-4(fp)
NIOS2_READ_STATUS (context);
4a00: 0005303a rdctl r2,status
4a04: e0bffe15 stw r2,-8(fp)
NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK);
4a08: e0fffe17 ldw r3,-8(fp)
4a0c: 00bfff84 movi r2,-2
4a10: 1884703a and r2,r3,r2
4a14: 1001703a wrctl status,r2
return context;
4a18: e0bffe17 ldw r2,-8(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 ();
4a1c: e0bffd15 stw r2,-12(fp)
alt_irq_active |= (1 << id);
4a20: 00c00044 movi r3,1
4a24: e0bfff17 ldw r2,-4(fp)
4a28: 1884983a sll r2,r3,r2
4a2c: 1007883a mov r3,r2
4a30: d0a01517 ldw r2,-32684(gp)
4a34: 1884b03a or r2,r3,r2
4a38: d0a01515 stw r2,-32684(gp)
NIOS2_WRITE_IENABLE (alt_irq_active);
4a3c: d0a01517 ldw r2,-32684(gp)
4a40: 100170fa wrctl ienable,r2
4a44: e0bffd17 ldw r2,-12(fp)
4a48: e0bffc15 stw r2,-16(fp)
NIOS2_WRITE_STATUS (context);
4a4c: e0bffc17 ldw r2,-16(fp)
4a50: 1001703a wrctl status,r2
}
4a54: 0001883a nop
alt_irq_enable_all(status);
return 0;
4a58: 0005883a mov r2,zero
return alt_irq_enable(irq);
}
4a5c: e037883a mov sp,fp
4a60: df000017 ldw fp,0(sp)
4a64: dec00104 addi sp,sp,4
4a68: f800283a ret
00004a6c <alt_ic_irq_disable>:
* @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)
{
4a6c: defff904 addi sp,sp,-28
4a70: df000615 stw fp,24(sp)
4a74: df000604 addi fp,sp,24
4a78: e13ffb15 stw r4,-20(fp)
4a7c: e17ffa15 stw r5,-24(fp)
4a80: e0bffa17 ldw r2,-24(fp)
4a84: e0bfff15 stw r2,-4(fp)
NIOS2_READ_STATUS (context);
4a88: 0005303a rdctl r2,status
4a8c: e0bffe15 stw r2,-8(fp)
NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK);
4a90: e0fffe17 ldw r3,-8(fp)
4a94: 00bfff84 movi r2,-2
4a98: 1884703a and r2,r3,r2
4a9c: 1001703a wrctl status,r2
return context;
4aa0: e0bffe17 ldw r2,-8(fp)
status = alt_irq_disable_all ();
4aa4: e0bffd15 stw r2,-12(fp)
alt_irq_active &= ~(1 << id);
4aa8: 00c00044 movi r3,1
4aac: e0bfff17 ldw r2,-4(fp)
4ab0: 1884983a sll r2,r3,r2
4ab4: 0084303a nor r2,zero,r2
4ab8: 1007883a mov r3,r2
4abc: d0a01517 ldw r2,-32684(gp)
4ac0: 1884703a and r2,r3,r2
4ac4: d0a01515 stw r2,-32684(gp)
NIOS2_WRITE_IENABLE (alt_irq_active);
4ac8: d0a01517 ldw r2,-32684(gp)
4acc: 100170fa wrctl ienable,r2
4ad0: e0bffd17 ldw r2,-12(fp)
4ad4: e0bffc15 stw r2,-16(fp)
NIOS2_WRITE_STATUS (context);
4ad8: e0bffc17 ldw r2,-16(fp)
4adc: 1001703a wrctl status,r2
}
4ae0: 0001883a nop
return 0;
4ae4: 0005883a mov r2,zero
return alt_irq_disable(irq);
}
4ae8: e037883a mov sp,fp
4aec: df000017 ldw fp,0(sp)
4af0: dec00104 addi sp,sp,4
4af4: f800283a ret
00004af8 <alt_ic_irq_enabled>:
* @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)
{
4af8: defffc04 addi sp,sp,-16
4afc: df000315 stw fp,12(sp)
4b00: df000304 addi fp,sp,12
4b04: e13ffe15 stw r4,-8(fp)
4b08: e17ffd15 stw r5,-12(fp)
alt_u32 irq_enabled;
NIOS2_READ_IENABLE(irq_enabled);
4b0c: 000530fa rdctl r2,ienable
4b10: e0bfff15 stw r2,-4(fp)
return (irq_enabled & (1 << irq)) ? 1: 0;
4b14: 00c00044 movi r3,1
4b18: e0bffd17 ldw r2,-12(fp)
4b1c: 1884983a sll r2,r3,r2
4b20: 1007883a mov r3,r2
4b24: e0bfff17 ldw r2,-4(fp)
4b28: 1884703a and r2,r3,r2
4b2c: 1004c03a cmpne r2,r2,zero
4b30: 10803fcc andi r2,r2,255
}
4b34: e037883a mov sp,fp
4b38: df000017 ldw fp,0(sp)
4b3c: dec00104 addi sp,sp,4
4b40: f800283a ret
00004b44 <alt_iic_isr_register>:
* @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)
{
4b44: defff504 addi sp,sp,-44
4b48: dfc00a15 stw ra,40(sp)
4b4c: df000915 stw fp,36(sp)
4b50: df000904 addi fp,sp,36
4b54: e13ffa15 stw r4,-24(fp)
4b58: e17ff915 stw r5,-28(fp)
4b5c: e1bff815 stw r6,-32(fp)
4b60: e1fff715 stw r7,-36(fp)
int rc = -EINVAL;
4b64: 00bffa84 movi r2,-22
4b68: e0bfff15 stw r2,-4(fp)
int id = irq; /* IRQ interpreted as the interrupt ID. */
4b6c: e0bff917 ldw r2,-28(fp)
4b70: e0bffe15 stw r2,-8(fp)
alt_irq_context status;
if (id < ALT_NIRQ)
4b74: e0bffe17 ldw r2,-8(fp)
4b78: 10800808 cmpgei r2,r2,32
4b7c: 1000251e bne r2,zero,4c14 <alt_iic_isr_register+0xd0>
NIOS2_READ_STATUS (context);
4b80: 0005303a rdctl r2,status
4b84: e0bffc15 stw r2,-16(fp)
NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK);
4b88: e0fffc17 ldw r3,-16(fp)
4b8c: 00bfff84 movi r2,-2
4b90: 1884703a and r2,r3,r2
4b94: 1001703a wrctl status,r2
return context;
4b98: e0bffc17 ldw r2,-16(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();
4b9c: e0bffd15 stw r2,-12(fp)
alt_irq[id].handler = isr;
4ba0: e0bffe17 ldw r2,-8(fp)
4ba4: 100890fa slli r4,r2,3
4ba8: e0fff817 ldw r3,-32(fp)
4bac: 00800034 movhi r2,0
4bb0: 2085883a add r2,r4,r2
4bb4: 10dca315 stw r3,29324(r2)
alt_irq[id].context = isr_context;
4bb8: e0bffe17 ldw r2,-8(fp)
4bbc: 100890fa slli r4,r2,3
4bc0: e0fff717 ldw r3,-36(fp)
4bc4: 00800034 movhi r2,0
4bc8: 2085883a add r2,r4,r2
4bcc: 10dca415 stw r3,29328(r2)
rc = (isr) ? alt_ic_irq_enable(ic_id, id) : alt_ic_irq_disable(ic_id, id);
4bd0: e0bff817 ldw r2,-32(fp)
4bd4: 10000526 beq r2,zero,4bec <alt_iic_isr_register+0xa8>
4bd8: e0bffe17 ldw r2,-8(fp)
4bdc: 100b883a mov r5,r2
4be0: e13ffa17 ldw r4,-24(fp)
4be4: 00049e40 call 49e4 <alt_ic_irq_enable>
4be8: 00000406 br 4bfc <alt_iic_isr_register+0xb8>
4bec: e0bffe17 ldw r2,-8(fp)
4bf0: 100b883a mov r5,r2
4bf4: e13ffa17 ldw r4,-24(fp)
4bf8: 0004a6c0 call 4a6c <alt_ic_irq_disable>
4bfc: e0bfff15 stw r2,-4(fp)
4c00: e0bffd17 ldw r2,-12(fp)
4c04: e0bffb15 stw r2,-20(fp)
NIOS2_WRITE_STATUS (context);
4c08: e0bffb17 ldw r2,-20(fp)
4c0c: 1001703a wrctl status,r2
}
4c10: 0001883a nop
alt_irq_enable_all(status);
}
return rc;
4c14: e0bfff17 ldw r2,-4(fp)
}
4c18: e037883a mov sp,fp
4c1c: dfc00117 ldw ra,4(sp)
4c20: df000017 ldw fp,0(sp)
4c24: dec00204 addi sp,sp,8
4c28: f800283a ret
00004c2c <alt_open_fd>:
* 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)
{
4c2c: defff904 addi sp,sp,-28
4c30: dfc00615 stw ra,24(sp)
4c34: df000515 stw fp,20(sp)
4c38: df000504 addi fp,sp,20
4c3c: e13ffe15 stw r4,-8(fp)
4c40: e17ffd15 stw r5,-12(fp)
4c44: e1bffc15 stw r6,-16(fp)
4c48: e1fffb15 stw r7,-20(fp)
int old;
old = open (name, flags, mode);
4c4c: e1bffb17 ldw r6,-20(fp)
4c50: e17ffc17 ldw r5,-16(fp)
4c54: e13ffd17 ldw r4,-12(fp)
4c58: 0004e940 call 4e94 <open>
4c5c: e0bfff15 stw r2,-4(fp)
if (old >= 0)
4c60: e0bfff17 ldw r2,-4(fp)
4c64: 10002016 blt r2,zero,4ce8 <alt_open_fd+0xbc>
{
fd->dev = alt_fd_list[old].dev;
4c68: e0ffff17 ldw r3,-4(fp)
4c6c: 1805883a mov r2,r3
4c70: 1085883a add r2,r2,r2
4c74: 10c5883a add r2,r2,r3
4c78: 100490ba slli r2,r2,2
4c7c: 00c00034 movhi r3,0
4c80: 10c7883a add r3,r2,r3
4c84: 18d80817 ldw r3,24608(r3)
4c88: e0bffe17 ldw r2,-8(fp)
4c8c: 10c00015 stw r3,0(r2)
fd->priv = alt_fd_list[old].priv;
4c90: e0ffff17 ldw r3,-4(fp)
4c94: 1805883a mov r2,r3
4c98: 1085883a add r2,r2,r2
4c9c: 10c5883a add r2,r2,r3
4ca0: 100490ba slli r2,r2,2
4ca4: 00c00034 movhi r3,0
4ca8: 10c7883a add r3,r2,r3
4cac: 18d80917 ldw r3,24612(r3)
4cb0: e0bffe17 ldw r2,-8(fp)
4cb4: 10c00115 stw r3,4(r2)
fd->fd_flags = alt_fd_list[old].fd_flags;
4cb8: e0ffff17 ldw r3,-4(fp)
4cbc: 1805883a mov r2,r3
4cc0: 1085883a add r2,r2,r2
4cc4: 10c5883a add r2,r2,r3
4cc8: 100490ba slli r2,r2,2
4ccc: 00c00034 movhi r3,0
4cd0: 10c7883a add r3,r2,r3
4cd4: 18d80a17 ldw r3,24616(r3)
4cd8: e0bffe17 ldw r2,-8(fp)
4cdc: 10c00215 stw r3,8(r2)
alt_release_fd (old);
4ce0: e13fff17 ldw r4,-4(fp)
4ce4: 00038080 call 3808 <alt_release_fd>
}
}
4ce8: 0001883a nop
4cec: e037883a mov sp,fp
4cf0: dfc00117 ldw ra,4(sp)
4cf4: df000017 ldw fp,0(sp)
4cf8: dec00204 addi sp,sp,8
4cfc: f800283a ret
00004d00 <alt_io_redirect>:
*/
void alt_io_redirect(const char* stdout_dev,
const char* stdin_dev,
const char* stderr_dev)
{
4d00: defffb04 addi sp,sp,-20
4d04: dfc00415 stw ra,16(sp)
4d08: df000315 stw fp,12(sp)
4d0c: df000304 addi fp,sp,12
4d10: e13fff15 stw r4,-4(fp)
4d14: e17ffe15 stw r5,-8(fp)
4d18: e1bffd15 stw r6,-12(fp)
/* Redirect the channels */
alt_open_fd (&alt_fd_list[STDOUT_FILENO], stdout_dev, O_WRONLY, 0777);
4d1c: 01c07fc4 movi r7,511
4d20: 01800044 movi r6,1
4d24: e17fff17 ldw r5,-4(fp)
4d28: 01000034 movhi r4,0
4d2c: 21180b04 addi r4,r4,24620
4d30: 0004c2c0 call 4c2c <alt_open_fd>
alt_open_fd (&alt_fd_list[STDIN_FILENO], stdin_dev, O_RDONLY, 0777);
4d34: 01c07fc4 movi r7,511
4d38: 000d883a mov r6,zero
4d3c: e17ffe17 ldw r5,-8(fp)
4d40: 01000034 movhi r4,0
4d44: 21180804 addi r4,r4,24608
4d48: 0004c2c0 call 4c2c <alt_open_fd>
alt_open_fd (&alt_fd_list[STDERR_FILENO], stderr_dev, O_WRONLY, 0777);
4d4c: 01c07fc4 movi r7,511
4d50: 01800044 movi r6,1
4d54: e17ffd17 ldw r5,-12(fp)
4d58: 01000034 movhi r4,0
4d5c: 21180e04 addi r4,r4,24632
4d60: 0004c2c0 call 4c2c <alt_open_fd>
}
4d64: 0001883a nop
4d68: e037883a mov sp,fp
4d6c: dfc00117 ldw ra,4(sp)
4d70: df000017 ldw fp,0(sp)
4d74: dec00204 addi sp,sp,8
4d78: f800283a ret
00004d7c <alt_get_errno>:
{
4d7c: defffe04 addi sp,sp,-8
4d80: dfc00115 stw ra,4(sp)
4d84: df000015 stw fp,0(sp)
4d88: d839883a mov fp,sp
return ((alt_errno) ? alt_errno() : &errno);
4d8c: d0a00917 ldw r2,-32732(gp)
4d90: 10000326 beq r2,zero,4da0 <alt_get_errno+0x24>
4d94: d0a00917 ldw r2,-32732(gp)
4d98: 103ee83a callr r2
4d9c: 00000106 br 4da4 <alt_get_errno+0x28>
4da0: d0a01104 addi r2,gp,-32700
}
4da4: e037883a mov sp,fp
4da8: dfc00117 ldw ra,4(sp)
4dac: df000017 ldw fp,0(sp)
4db0: dec00204 addi sp,sp,8
4db4: f800283a ret
00004db8 <alt_file_locked>:
* 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)
{
4db8: defffd04 addi sp,sp,-12
4dbc: df000215 stw fp,8(sp)
4dc0: df000204 addi fp,sp,8
4dc4: e13ffe15 stw r4,-8(fp)
/*
* Mark the file descriptor as belonging to a device.
*/
fd->fd_flags |= ALT_FD_DEV;
4dc8: e0bffe17 ldw r2,-8(fp)
4dcc: 10800217 ldw r2,8(r2)
4dd0: 10d00034 orhi r3,r2,16384
4dd4: e0bffe17 ldw r2,-8(fp)
4dd8: 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++)
4ddc: e03fff15 stw zero,-4(fp)
4de0: 00002306 br 4e70 <alt_file_locked+0xb8>
{
if ((alt_fd_list[i].dev == fd->dev) &&
4de4: e0ffff17 ldw r3,-4(fp)
4de8: 1805883a mov r2,r3
4dec: 1085883a add r2,r2,r2
4df0: 10c5883a add r2,r2,r3
4df4: 100490ba slli r2,r2,2
4df8: 00c00034 movhi r3,0
4dfc: 10c7883a add r3,r2,r3
4e00: 18d80817 ldw r3,24608(r3)
4e04: e0bffe17 ldw r2,-8(fp)
4e08: 10800017 ldw r2,0(r2)
4e0c: 1880151e bne r3,r2,4e64 <alt_file_locked+0xac>
(alt_fd_list[i].fd_flags & ALT_FD_EXCL) &&
4e10: e0ffff17 ldw r3,-4(fp)
4e14: 1805883a mov r2,r3
4e18: 1085883a add r2,r2,r2
4e1c: 10c5883a add r2,r2,r3
4e20: 100490ba slli r2,r2,2
4e24: 00c00034 movhi r3,0
4e28: 10c7883a add r3,r2,r3
4e2c: 18980a17 ldw r2,24616(r3)
if ((alt_fd_list[i].dev == fd->dev) &&
4e30: 10000c0e bge r2,zero,4e64 <alt_file_locked+0xac>
(&alt_fd_list[i] != fd))
4e34: e0ffff17 ldw r3,-4(fp)
4e38: 1805883a mov r2,r3
4e3c: 1085883a add r2,r2,r2
4e40: 10c5883a add r2,r2,r3
4e44: 100490ba slli r2,r2,2
4e48: 00c00034 movhi r3,0
4e4c: 18d80804 addi r3,r3,24608
4e50: 10c5883a add r2,r2,r3
(alt_fd_list[i].fd_flags & ALT_FD_EXCL) &&
4e54: e0fffe17 ldw r3,-8(fp)
4e58: 18800226 beq r3,r2,4e64 <alt_file_locked+0xac>
{
return -EACCES;
4e5c: 00bffcc4 movi r2,-13
4e60: 00000806 br 4e84 <alt_file_locked+0xcc>
for (i = 0; i <= alt_max_fd; i++)
4e64: e0bfff17 ldw r2,-4(fp)
4e68: 10800044 addi r2,r2,1
4e6c: e0bfff15 stw r2,-4(fp)
4e70: d0a00817 ldw r2,-32736(gp)
4e74: 1007883a mov r3,r2
4e78: e0bfff17 ldw r2,-4(fp)
4e7c: 18bfd92e bgeu r3,r2,4de4 <alt_file_locked+0x2c>
}
}
/* The device is not locked */
return 0;
4e80: 0005883a mov r2,zero
}
4e84: e037883a mov sp,fp
4e88: df000017 ldw fp,0(sp)
4e8c: dec00104 addi sp,sp,4
4e90: f800283a ret
00004e94 <open>:
*
* ALT_OPEN is mapped onto the open() system call in alt_syscall.h
*/
int ALT_OPEN (const char* file, int flags, int mode)
{
4e94: defff604 addi sp,sp,-40
4e98: dfc00915 stw ra,36(sp)
4e9c: df000815 stw fp,32(sp)
4ea0: df000804 addi fp,sp,32
4ea4: e13ffa15 stw r4,-24(fp)
4ea8: e17ff915 stw r5,-28(fp)
4eac: e1bff815 stw r6,-32(fp)
alt_dev* dev;
alt_fd* fd;
int index = -1;
4eb0: 00bfffc4 movi r2,-1
4eb4: e0bffe15 stw r2,-8(fp)
int status = -ENODEV;
4eb8: 00bffb44 movi r2,-19
4ebc: e0bffd15 stw r2,-12(fp)
int isafs = 0;
4ec0: e03ffc15 stw zero,-16(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)))
4ec4: d1600604 addi r5,gp,-32744
4ec8: e13ffa17 ldw r4,-24(fp)
4ecc: 00051c40 call 51c4 <alt_find_dev>
4ed0: e0bfff15 stw r2,-4(fp)
4ed4: e0bfff17 ldw r2,-4(fp)
4ed8: 1000051e bne r2,zero,4ef0 <open+0x5c>
{
/* No matching device, so try the filesystem list */
dev = alt_find_file (file);
4edc: e13ffa17 ldw r4,-24(fp)
4ee0: 00052540 call 5254 <alt_find_file>
4ee4: e0bfff15 stw r2,-4(fp)
isafs = 1;
4ee8: 00800044 movi r2,1
4eec: e0bffc15 stw r2,-16(fp)
/*
* If a matching device or filesystem is found, allocate a file descriptor.
*/
if (dev)
4ef0: e0bfff17 ldw r2,-4(fp)
4ef4: 10002c26 beq r2,zero,4fa8 <open+0x114>
{
if ((index = alt_get_fd (dev)) < 0)
4ef8: e13fff17 ldw r4,-4(fp)
4efc: 000535c0 call 535c <alt_get_fd>
4f00: e0bffe15 stw r2,-8(fp)
4f04: e0bffe17 ldw r2,-8(fp)
4f08: 1000030e bge r2,zero,4f18 <open+0x84>
{
status = index;
4f0c: e0bffe17 ldw r2,-8(fp)
4f10: e0bffd15 stw r2,-12(fp)
4f14: 00002606 br 4fb0 <open+0x11c>
}
else
{
fd = &alt_fd_list[index];
4f18: e0fffe17 ldw r3,-8(fp)
4f1c: 1805883a mov r2,r3
4f20: 1085883a add r2,r2,r2
4f24: 10c5883a add r2,r2,r3
4f28: 100490ba slli r2,r2,2
4f2c: 00c00034 movhi r3,0
4f30: 18d80804 addi r3,r3,24608
4f34: 10c5883a add r2,r2,r3
4f38: e0bffb15 stw r2,-20(fp)
fd->fd_flags = (flags & ~ALT_FD_FLAGS_MASK);
4f3c: e0fff917 ldw r3,-28(fp)
4f40: 00900034 movhi r2,16384
4f44: 10bfffc4 addi r2,r2,-1
4f48: 1886703a and r3,r3,r2
4f4c: e0bffb17 ldw r2,-20(fp)
4f50: 10c00215 stw r3,8(r2)
/* If this is a device, ensure it isn't already locked */
if (isafs || ((status = alt_file_locked (fd)) >= 0))
4f54: e0bffc17 ldw r2,-16(fp)
4f58: 1000051e bne r2,zero,4f70 <open+0xdc>
4f5c: e13ffb17 ldw r4,-20(fp)
4f60: 0004db80 call 4db8 <alt_file_locked>
4f64: e0bffd15 stw r2,-12(fp)
4f68: e0bffd17 ldw r2,-12(fp)
4f6c: 10001016 blt r2,zero,4fb0 <open+0x11c>
/*
* 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;
4f70: e0bfff17 ldw r2,-4(fp)
4f74: 10800317 ldw r2,12(r2)
4f78: 10000826 beq r2,zero,4f9c <open+0x108>
4f7c: e0bfff17 ldw r2,-4(fp)
4f80: 10800317 ldw r2,12(r2)
4f84: e1fff817 ldw r7,-32(fp)
4f88: e1bff917 ldw r6,-28(fp)
4f8c: e17ffa17 ldw r5,-24(fp)
4f90: e13ffb17 ldw r4,-20(fp)
4f94: 103ee83a callr r2
4f98: 00000106 br 4fa0 <open+0x10c>
4f9c: 0005883a mov r2,zero
4fa0: e0bffd15 stw r2,-12(fp)
4fa4: 00000206 br 4fb0 <open+0x11c>
}
}
}
else
{
status = -ENODEV;
4fa8: 00bffb44 movi r2,-19
4fac: e0bffd15 stw r2,-12(fp)
}
/* Allocation failed, so clean up and return an error */
if (status < 0)
4fb0: e0bffd17 ldw r2,-12(fp)
4fb4: 1000090e bge r2,zero,4fdc <open+0x148>
{
alt_release_fd (index);
4fb8: e13ffe17 ldw r4,-8(fp)
4fbc: 00038080 call 3808 <alt_release_fd>
ALT_ERRNO = -status;
4fc0: 0004d7c0 call 4d7c <alt_get_errno>
4fc4: 1007883a mov r3,r2
4fc8: e0bffd17 ldw r2,-12(fp)
4fcc: 0085c83a sub r2,zero,r2
4fd0: 18800015 stw r2,0(r3)
return -1;
4fd4: 00bfffc4 movi r2,-1
4fd8: 00000106 br 4fe0 <open+0x14c>
}
/* return the reference upon success */
return index;
4fdc: e0bffe17 ldw r2,-8(fp)
}
4fe0: e037883a mov sp,fp
4fe4: dfc00117 ldw ra,4(sp)
4fe8: df000017 ldw fp,0(sp)
4fec: dec00204 addi sp,sp,8
4ff0: f800283a ret
00004ff4 <alt_alarm_stop>:
* alarms. Alternatively an alarm can unregister itself by returning zero when
* the alarm executes.
*/
void alt_alarm_stop (alt_alarm* alarm)
{
4ff4: defffa04 addi sp,sp,-24
4ff8: df000515 stw fp,20(sp)
4ffc: df000504 addi fp,sp,20
5000: e13ffb15 stw r4,-20(fp)
NIOS2_READ_STATUS (context);
5004: 0005303a rdctl r2,status
5008: e0bffc15 stw r2,-16(fp)
NIOS2_WRITE_STATUS (context & ~NIOS2_STATUS_PIE_MSK);
500c: e0fffc17 ldw r3,-16(fp)
5010: 00bfff84 movi r2,-2
5014: 1884703a and r2,r3,r2
5018: 1001703a wrctl status,r2
return context;
501c: e0bffc17 ldw r2,-16(fp)
alt_irq_context irq_context;
irq_context = alt_irq_disable_all();
5020: e0bfff15 stw r2,-4(fp)
alt_llist_remove (&alarm->llist);
5024: e0bffb17 ldw r2,-20(fp)
5028: 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;
502c: e0bffd17 ldw r2,-12(fp)
5030: 10800017 ldw r2,0(r2)
5034: e0fffd17 ldw r3,-12(fp)
5038: 18c00117 ldw r3,4(r3)
503c: 10c00115 stw r3,4(r2)
entry->previous->next = entry->next;
5040: e0bffd17 ldw r2,-12(fp)
5044: 10800117 ldw r2,4(r2)
5048: e0fffd17 ldw r3,-12(fp)
504c: 18c00017 ldw r3,0(r3)
5050: 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;
5054: e0bffd17 ldw r2,-12(fp)
5058: e0fffd17 ldw r3,-12(fp)
505c: 10c00115 stw r3,4(r2)
entry->next = entry;
5060: e0bffd17 ldw r2,-12(fp)
5064: e0fffd17 ldw r3,-12(fp)
5068: 10c00015 stw r3,0(r2)
}
506c: 0001883a nop
5070: e0bfff17 ldw r2,-4(fp)
5074: e0bffe15 stw r2,-8(fp)
NIOS2_WRITE_STATUS (context);
5078: e0bffe17 ldw r2,-8(fp)
507c: 1001703a wrctl status,r2
}
5080: 0001883a nop
alt_irq_enable_all (irq_context);
}
5084: 0001883a nop
5088: e037883a mov sp,fp
508c: df000017 ldw fp,0(sp)
5090: dec00104 addi sp,sp,4
5094: f800283a ret
00005098 <alt_tick>:
*
* alt_tick() is expected to run at interrupt level.
*/
void alt_tick (void)
{
5098: defffb04 addi sp,sp,-20
509c: dfc00415 stw ra,16(sp)
50a0: df000315 stw fp,12(sp)
50a4: df000304 addi fp,sp,12
alt_alarm* next;
alt_alarm* alarm = (alt_alarm*) alt_alarm_list.next;
50a8: d0a00c17 ldw r2,-32720(gp)
50ac: e0bfff15 stw r2,-4(fp)
alt_u32 next_callback;
/* update the tick counter */
_alt_nticks++;
50b0: d0a01717 ldw r2,-32676(gp)
50b4: 10800044 addi r2,r2,1
50b8: d0a01715 stw r2,-32676(gp)
/* process the registered callbacks */
while (alarm != (alt_alarm*) &alt_alarm_list)
50bc: 00002e06 br 5178 <alt_tick+0xe0>
{
next = (alt_alarm*) alarm->llist.next;
50c0: e0bfff17 ldw r2,-4(fp)
50c4: 10800017 ldw r2,0(r2)
50c8: 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))
50cc: e0bfff17 ldw r2,-4(fp)
50d0: 10800403 ldbu r2,16(r2)
50d4: 10803fcc andi r2,r2,255
50d8: 10000426 beq r2,zero,50ec <alt_tick+0x54>
50dc: d0a01717 ldw r2,-32676(gp)
50e0: 1000021e bne r2,zero,50ec <alt_tick+0x54>
{
alarm->rollover = 0;
50e4: e0bfff17 ldw r2,-4(fp)
50e8: 10000405 stb zero,16(r2)
}
/* if the alarm period has expired, make the callback */
if ((alarm->time <= _alt_nticks) && (alarm->rollover == 0))
50ec: e0bfff17 ldw r2,-4(fp)
50f0: 10800217 ldw r2,8(r2)
50f4: d0e01717 ldw r3,-32676(gp)
50f8: 18801d36 bltu r3,r2,5170 <alt_tick+0xd8>
50fc: e0bfff17 ldw r2,-4(fp)
5100: 10800403 ldbu r2,16(r2)
5104: 10803fcc andi r2,r2,255
5108: 1000191e bne r2,zero,5170 <alt_tick+0xd8>
{
next_callback = alarm->callback (alarm->context);
510c: e0bfff17 ldw r2,-4(fp)
5110: 10800317 ldw r2,12(r2)
5114: e0ffff17 ldw r3,-4(fp)
5118: 18c00517 ldw r3,20(r3)
511c: 1809883a mov r4,r3
5120: 103ee83a callr r2
5124: e0bffd15 stw r2,-12(fp)
/* deactivate the alarm if the return value is zero */
if (next_callback == 0)
5128: e0bffd17 ldw r2,-12(fp)
512c: 1000031e bne r2,zero,513c <alt_tick+0xa4>
{
alt_alarm_stop (alarm);
5130: e13fff17 ldw r4,-4(fp)
5134: 0004ff40 call 4ff4 <alt_alarm_stop>
5138: 00000d06 br 5170 <alt_tick+0xd8>
}
else
{
alarm->time += next_callback;
513c: e0bfff17 ldw r2,-4(fp)
5140: 10c00217 ldw r3,8(r2)
5144: e0bffd17 ldw r2,-12(fp)
5148: 1887883a add r3,r3,r2
514c: e0bfff17 ldw r2,-4(fp)
5150: 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)
5154: e0bfff17 ldw r2,-4(fp)
5158: 10c00217 ldw r3,8(r2)
515c: d0a01717 ldw r2,-32676(gp)
5160: 1880032e bgeu r3,r2,5170 <alt_tick+0xd8>
{
alarm->rollover = 1;
5164: e0bfff17 ldw r2,-4(fp)
5168: 00c00044 movi r3,1
516c: 10c00405 stb r3,16(r2)
}
}
}
alarm = next;
5170: e0bffe17 ldw r2,-8(fp)
5174: e0bfff15 stw r2,-4(fp)
while (alarm != (alt_alarm*) &alt_alarm_list)
5178: e0ffff17 ldw r3,-4(fp)
517c: d0a00c04 addi r2,gp,-32720
5180: 18bfcf1e bne r3,r2,50c0 <alt_tick+0x28>
/*
* Update the operating system specific timer facilities.
*/
ALT_OS_TIME_TICK();
5184: 0001883a nop
}
5188: 0001883a nop
518c: e037883a mov sp,fp
5190: dfc00117 ldw ra,4(sp)
5194: df000017 ldw fp,0(sp)
5198: dec00204 addi sp,sp,8
519c: f800283a ret
000051a0 <altera_nios2_gen2_irq_init>:
/*
* 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)
{
51a0: deffff04 addi sp,sp,-4
51a4: df000015 stw fp,0(sp)
51a8: d839883a mov fp,sp
NIOS2_WRITE_IENABLE(0);
51ac: 000170fa wrctl ienable,zero
}
51b0: 0001883a nop
51b4: e037883a mov sp,fp
51b8: df000017 ldw fp,0(sp)
51bc: dec00104 addi sp,sp,4
51c0: f800283a ret
000051c4 <alt_find_dev>:
* "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)
{
51c4: defffa04 addi sp,sp,-24
51c8: dfc00515 stw ra,20(sp)
51cc: df000415 stw fp,16(sp)
51d0: df000404 addi fp,sp,16
51d4: e13ffd15 stw r4,-12(fp)
51d8: e17ffc15 stw r5,-16(fp)
alt_dev* next = (alt_dev*) llist->next;
51dc: e0bffc17 ldw r2,-16(fp)
51e0: 10800017 ldw r2,0(r2)
51e4: e0bfff15 stw r2,-4(fp)
alt_32 len;
len = strlen(name) + 1;
51e8: e13ffd17 ldw r4,-12(fp)
51ec: 00003f80 call 3f8 <strlen>
51f0: 10800044 addi r2,r2,1
51f4: e0bffe15 stw r2,-8(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)
51f8: 00000d06 br 5230 <alt_find_dev+0x6c>
/*
* memcmp() is used here rather than strcmp() in order to reduce the size
* of the executable.
*/
if (!memcmp (next->name, name, len))
51fc: e0bfff17 ldw r2,-4(fp)
5200: 10800217 ldw r2,8(r2)
5204: e0fffe17 ldw r3,-8(fp)
5208: 180d883a mov r6,r3
520c: e17ffd17 ldw r5,-12(fp)
5210: 1009883a mov r4,r2
5214: 00054f40 call 54f4 <memcmp>
5218: 1000021e bne r2,zero,5224 <alt_find_dev+0x60>
{
/* match found */
return next;
521c: e0bfff17 ldw r2,-4(fp)
5220: 00000706 br 5240 <alt_find_dev+0x7c>
}
next = (alt_dev*) next->llist.next;
5224: e0bfff17 ldw r2,-4(fp)
5228: 10800017 ldw r2,0(r2)
522c: e0bfff15 stw r2,-4(fp)
while (next != (alt_dev*) llist)
5230: e0ffff17 ldw r3,-4(fp)
5234: e0bffc17 ldw r2,-16(fp)
5238: 18bff01e bne r3,r2,51fc <alt_find_dev+0x38>
}
/* No match found */
return NULL;
523c: 0005883a mov r2,zero
}
5240: e037883a mov sp,fp
5244: dfc00117 ldw ra,4(sp)
5248: df000017 ldw fp,0(sp)
524c: dec00204 addi sp,sp,8
5250: f800283a ret
00005254 <alt_find_file>:
* 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)
{
5254: defffb04 addi sp,sp,-20
5258: dfc00415 stw ra,16(sp)
525c: df000315 stw fp,12(sp)
5260: df000304 addi fp,sp,12
5264: e13ffd15 stw r4,-12(fp)
alt_dev* next = (alt_dev*) alt_fs_list.next;
5268: d0a00417 ldw r2,-32752(gp)
526c: e0bfff15 stw r2,-4(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)
5270: 00003106 br 5338 <alt_find_file+0xe4>
{
len = strlen(next->name);
5274: e0bfff17 ldw r2,-4(fp)
5278: 10800217 ldw r2,8(r2)
527c: 1009883a mov r4,r2
5280: 00003f80 call 3f8 <strlen>
5284: e0bffe15 stw r2,-8(fp)
if (next->name[len-1] == '/')
5288: e0bfff17 ldw r2,-4(fp)
528c: 10c00217 ldw r3,8(r2)
5290: e0bffe17 ldw r2,-8(fp)
5294: 10bfffc4 addi r2,r2,-1
5298: 1885883a add r2,r3,r2
529c: 10800003 ldbu r2,0(r2)
52a0: 10803fcc andi r2,r2,255
52a4: 1080201c xori r2,r2,128
52a8: 10bfe004 addi r2,r2,-128
52ac: 10800bd8 cmpnei r2,r2,47
52b0: 1000031e bne r2,zero,52c0 <alt_find_file+0x6c>
{
len -= 1;
52b4: e0bffe17 ldw r2,-8(fp)
52b8: 10bfffc4 addi r2,r2,-1
52bc: e0bffe15 stw r2,-8(fp)
}
if (((name[len] == '/') || (name[len] == '\0')) &&
52c0: e0bffe17 ldw r2,-8(fp)
52c4: e0fffd17 ldw r3,-12(fp)
52c8: 1885883a add r2,r3,r2
52cc: 10800003 ldbu r2,0(r2)
52d0: 10803fcc andi r2,r2,255
52d4: 1080201c xori r2,r2,128
52d8: 10bfe004 addi r2,r2,-128
52dc: 10800be0 cmpeqi r2,r2,47
52e0: 1000081e bne r2,zero,5304 <alt_find_file+0xb0>
52e4: e0bffe17 ldw r2,-8(fp)
52e8: e0fffd17 ldw r3,-12(fp)
52ec: 1885883a add r2,r3,r2
52f0: 10800003 ldbu r2,0(r2)
52f4: 10803fcc andi r2,r2,255
52f8: 1080201c xori r2,r2,128
52fc: 10bfe004 addi r2,r2,-128
5300: 10000a1e bne r2,zero,532c <alt_find_file+0xd8>
!memcmp (next->name, name, len))
5304: e0bfff17 ldw r2,-4(fp)
5308: 10800217 ldw r2,8(r2)
530c: e0fffe17 ldw r3,-8(fp)
5310: 180d883a mov r6,r3
5314: e17ffd17 ldw r5,-12(fp)
5318: 1009883a mov r4,r2
531c: 00054f40 call 54f4 <memcmp>
if (((name[len] == '/') || (name[len] == '\0')) &&
5320: 1000021e bne r2,zero,532c <alt_find_file+0xd8>
{
/* match found */
return next;
5324: e0bfff17 ldw r2,-4(fp)
5328: 00000706 br 5348 <alt_find_file+0xf4>
}
next = (alt_dev*) next->llist.next;
532c: e0bfff17 ldw r2,-4(fp)
5330: 10800017 ldw r2,0(r2)
5334: e0bfff15 stw r2,-4(fp)
while (next != (alt_dev*) &alt_fs_list)
5338: e0ffff17 ldw r3,-4(fp)
533c: d0a00404 addi r2,gp,-32752
5340: 18bfcc1e bne r3,r2,5274 <alt_find_file+0x20>
}
/* No match found */
return NULL;
5344: 0005883a mov r2,zero
}
5348: e037883a mov sp,fp
534c: dfc00117 ldw ra,4(sp)
5350: df000017 ldw fp,0(sp)
5354: dec00204 addi sp,sp,8
5358: f800283a ret
0000535c <alt_get_fd>:
* the offset of the file descriptor within the file descriptor array). A
* negative value indicates failure.
*/
int alt_get_fd (alt_dev* dev)
{
535c: defffc04 addi sp,sp,-16
5360: df000315 stw fp,12(sp)
5364: df000304 addi fp,sp,12
5368: e13ffd15 stw r4,-12(fp)
alt_32 i;
int rc = -EMFILE;
536c: 00bffa04 movi r2,-24
5370: 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++)
5374: e03fff15 stw zero,-4(fp)
5378: 00001d06 br 53f0 <alt_get_fd+0x94>
{
if (!alt_fd_list[i].dev)
537c: e0ffff17 ldw r3,-4(fp)
5380: 1805883a mov r2,r3
5384: 1085883a add r2,r2,r2
5388: 10c5883a add r2,r2,r3
538c: 100490ba slli r2,r2,2
5390: 00c00034 movhi r3,0
5394: 10c7883a add r3,r2,r3
5398: 18980817 ldw r2,24608(r3)
539c: 1000111e bne r2,zero,53e4 <alt_get_fd+0x88>
{
alt_fd_list[i].dev = dev;
53a0: e0ffff17 ldw r3,-4(fp)
53a4: 1805883a mov r2,r3
53a8: 1085883a add r2,r2,r2
53ac: 10c5883a add r2,r2,r3
53b0: 100490ba slli r2,r2,2
53b4: e13ffd17 ldw r4,-12(fp)
53b8: 00c00034 movhi r3,0
53bc: 10c7883a add r3,r2,r3
53c0: 19180815 stw r4,24608(r3)
if (i > alt_max_fd)
53c4: d0e00817 ldw r3,-32736(gp)
53c8: e0bfff17 ldw r2,-4(fp)
53cc: 1880020e bge r3,r2,53d8 <alt_get_fd+0x7c>
{
alt_max_fd = i;
53d0: e0bfff17 ldw r2,-4(fp)
53d4: d0a00815 stw r2,-32736(gp)
}
rc = i;
53d8: e0bfff17 ldw r2,-4(fp)
53dc: e0bffe15 stw r2,-8(fp)
goto alt_get_fd_exit;
53e0: 00000706 br 5400 <alt_get_fd+0xa4>
for (i = 0; i < ALT_MAX_FD; i++)
53e4: e0bfff17 ldw r2,-4(fp)
53e8: 10800044 addi r2,r2,1
53ec: e0bfff15 stw r2,-4(fp)
53f0: e0bfff17 ldw r2,-4(fp)
53f4: 10800810 cmplti r2,r2,32
53f8: 103fe01e bne r2,zero,537c <alt_get_fd+0x20>
}
}
alt_get_fd_exit:
53fc: 0001883a nop
* file descriptor pool.
*/
ALT_SEM_POST(alt_fd_list_lock);
return rc;
5400: e0bffe17 ldw r2,-8(fp)
}
5404: e037883a mov sp,fp
5408: df000017 ldw fp,0(sp)
540c: dec00104 addi sp,sp,4
5410: f800283a ret
00005414 <alt_exception_cause_generated_bad_addr>:
* 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)
{
5414: defffe04 addi sp,sp,-8
5418: df000115 stw fp,4(sp)
541c: df000104 addi fp,sp,4
5420: e13fff15 stw r4,-4(fp)
5424: e0bfff17 ldw r2,-4(fp)
5428: 10bffe84 addi r2,r2,-6
542c: 10c00428 cmpgeui r3,r2,16
5430: 1800191e bne r3,zero,5498 <alt_exception_cause_generated_bad_addr+0x84>
5434: 100690ba slli r3,r2,2
5438: 00800034 movhi r2,0
543c: 1885883a add r2,r3,r2
5440: 10951217 ldw r2,21576(r2)
5444: 1000683a jmp r2
5448: 00005488 cmpgei zero,zero,338
544c: 00005488 cmpgei zero,zero,338
5450: 00005498 cmpnei zero,zero,338
5454: 00005498 cmpnei zero,zero,338
5458: 00005498 cmpnei zero,zero,338
545c: 00005488 cmpgei zero,zero,338
5460: 00005490 cmplti zero,zero,338
5464: 00005498 cmpnei zero,zero,338
5468: 00005488 cmpgei zero,zero,338
546c: 00005488 cmpgei zero,zero,338
5470: 00005498 cmpnei zero,zero,338
5474: 00005488 cmpgei zero,zero,338
5478: 00005490 cmplti zero,zero,338
547c: 00005498 cmpnei zero,zero,338
5480: 00005498 cmpnei zero,zero,338
5484: 00005488 cmpgei zero,zero,338
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;
5488: 00800044 movi r2,1
548c: 00000306 br 549c <alt_exception_cause_generated_bad_addr+0x88>
case NIOS2_EXCEPTION_TLB_MISS:
case NIOS2_EXCEPTION_ECC_TLB_ERR:
return 0;
5490: 0005883a mov r2,zero
5494: 00000106 br 549c <alt_exception_cause_generated_bad_addr+0x88>
default:
return 0;
5498: 0005883a mov r2,zero
}
}
549c: e037883a mov sp,fp
54a0: df000017 ldw fp,0(sp)
54a4: dec00104 addi sp,sp,4
54a8: f800283a ret
000054ac <atexit>:
54ac: 200b883a mov r5,r4
54b0: 000f883a mov r7,zero
54b4: 000d883a mov r6,zero
54b8: 0009883a mov r4,zero
54bc: 000556c1 jmpi 556c <__register_exitproc>
000054c0 <exit>:
54c0: defffe04 addi sp,sp,-8
54c4: 000b883a mov r5,zero
54c8: dc000015 stw r16,0(sp)
54cc: dfc00115 stw ra,4(sp)
54d0: 2021883a mov r16,r4
54d4: 00055fc0 call 55fc <__call_exitprocs>
54d8: 00800034 movhi r2,0
54dc: 111c8017 ldw r4,29184(r2)
54e0: 20800f17 ldw r2,60(r4)
54e4: 10000126 beq r2,zero,54ec <exit+0x2c>
54e8: 103ee83a callr r2
54ec: 8009883a mov r4,r16
54f0: 000571c0 call 571c <_exit>
000054f4 <memcmp>:
54f4: 30800130 cmpltui r2,r6,4
54f8: 10000b1e bne r2,zero,5528 <memcmp+0x34>
54fc: 2144b03a or r2,r4,r5
5500: 108000cc andi r2,r2,3
5504: 1000171e bne r2,zero,5564 <memcmp+0x70>
5508: 20c00017 ldw r3,0(r4)
550c: 28800017 ldw r2,0(r5)
5510: 1880141e bne r3,r2,5564 <memcmp+0x70>
5514: 31bfff04 addi r6,r6,-4
5518: 30800128 cmpgeui r2,r6,4
551c: 21000104 addi r4,r4,4
5520: 29400104 addi r5,r5,4
5524: 103ff81e bne r2,zero,5508 <memcmp+0x14>
5528: 30bfffc4 addi r2,r6,-1
552c: 30000b26 beq r6,zero,555c <memcmp+0x68>
5530: 11800044 addi r6,r2,1
5534: 218d883a add r6,r4,r6
5538: 00000106 br 5540 <memcmp+0x4c>
553c: 21800726 beq r4,r6,555c <memcmp+0x68>
5540: 20800003 ldbu r2,0(r4)
5544: 28c00003 ldbu r3,0(r5)
5548: 21000044 addi r4,r4,1
554c: 29400044 addi r5,r5,1
5550: 10fffa26 beq r2,r3,553c <memcmp+0x48>
5554: 10c5c83a sub r2,r2,r3
5558: f800283a ret
555c: 0005883a mov r2,zero
5560: f800283a ret
5564: 30bfffc4 addi r2,r6,-1
5568: 003ff106 br 5530 <memcmp+0x3c>
0000556c <__register_exitproc>:
556c: 00800034 movhi r2,0
5570: 10dc8017 ldw r3,29184(r2)
5574: 18805217 ldw r2,328(r3)
5578: 10001726 beq r2,zero,55d8 <__register_exitproc+0x6c>
557c: 10c00117 ldw r3,4(r2)
5580: 1a000808 cmpgei r8,r3,32
5584: 40001b1e bne r8,zero,55f4 <__register_exitproc+0x88>
5588: 20000b26 beq r4,zero,55b8 <__register_exitproc+0x4c>
558c: 181090ba slli r8,r3,2
5590: 02400044 movi r9,1
5594: 48d2983a sll r9,r9,r3
5598: 1211883a add r8,r2,r8
559c: 41802215 stw r6,136(r8)
55a0: 11806217 ldw r6,392(r2)
55a4: 21000098 cmpnei r4,r4,2
55a8: 324cb03a or r6,r6,r9
55ac: 11806215 stw r6,392(r2)
55b0: 41c04215 stw r7,264(r8)
55b4: 20000b26 beq r4,zero,55e4 <__register_exitproc+0x78>
55b8: 19000084 addi r4,r3,2
55bc: 200890ba slli r4,r4,2
55c0: 18c00044 addi r3,r3,1
55c4: 10c00115 stw r3,4(r2)
55c8: 1105883a add r2,r2,r4
55cc: 11400015 stw r5,0(r2)
55d0: 0005883a mov r2,zero
55d4: f800283a ret
55d8: 18805304 addi r2,r3,332
55dc: 18805215 stw r2,328(r3)
55e0: 003fe606 br 557c <__register_exitproc+0x10>
55e4: 11006317 ldw r4,396(r2)
55e8: 2252b03a or r9,r4,r9
55ec: 12406315 stw r9,396(r2)
55f0: 003ff106 br 55b8 <__register_exitproc+0x4c>
55f4: 00bfffc4 movi r2,-1
55f8: f800283a ret
000055fc <__call_exitprocs>:
55fc: defff704 addi sp,sp,-36
5600: 00800034 movhi r2,0
5604: dcc00315 stw r19,12(sp)
5608: 14dc8017 ldw r19,29184(r2)
560c: dc800215 stw r18,8(sp)
5610: dfc00815 stw ra,32(sp)
5614: 9c805217 ldw r18,328(r19)
5618: ddc00715 stw r23,28(sp)
561c: dd800615 stw r22,24(sp)
5620: dd400515 stw r21,20(sp)
5624: dd000415 stw r20,16(sp)
5628: dc400115 stw r17,4(sp)
562c: dc000015 stw r16,0(sp)
5630: 90001026 beq r18,zero,5674 <__call_exitprocs+0x78>
5634: 202b883a mov r21,r4
5638: 282d883a mov r22,r5
563c: 05000044 movi r20,1
5640: 94000117 ldw r16,4(r18)
5644: 847fffc4 addi r17,r16,-1
5648: 88000a16 blt r17,zero,5674 <__call_exitprocs+0x78>
564c: 84000044 addi r16,r16,1
5650: 802090ba slli r16,r16,2
5654: 9421883a add r16,r18,r16
5658: b0001126 beq r22,zero,56a0 <__call_exitprocs+0xa4>
565c: 80804017 ldw r2,256(r16)
5660: 15800f26 beq r2,r22,56a0 <__call_exitprocs+0xa4>
5664: 8c7fffc4 addi r17,r17,-1
5668: 88bfffd8 cmpnei r2,r17,-1
566c: 843fff04 addi r16,r16,-4
5670: 103ff91e bne r2,zero,5658 <__call_exitprocs+0x5c>
5674: dfc00817 ldw ra,32(sp)
5678: ddc00717 ldw r23,28(sp)
567c: dd800617 ldw r22,24(sp)
5680: dd400517 ldw r21,20(sp)
5684: dd000417 ldw r20,16(sp)
5688: dcc00317 ldw r19,12(sp)
568c: dc800217 ldw r18,8(sp)
5690: dc400117 ldw r17,4(sp)
5694: dc000017 ldw r16,0(sp)
5698: dec00904 addi sp,sp,36
569c: f800283a ret
56a0: 90800117 ldw r2,4(r18)
56a4: 81800017 ldw r6,0(r16)
56a8: 10bfffc4 addi r2,r2,-1
56ac: 14401726 beq r2,r17,570c <__call_exitprocs+0x110>
56b0: 80000015 stw zero,0(r16)
56b4: 303feb26 beq r6,zero,5664 <__call_exitprocs+0x68>
56b8: a446983a sll r3,r20,r17
56bc: 90806217 ldw r2,392(r18)
56c0: 95c00117 ldw r23,4(r18)
56c4: 1884703a and r2,r3,r2
56c8: 1000081e bne r2,zero,56ec <__call_exitprocs+0xf0>
56cc: 303ee83a callr r6
56d0: 90c00117 ldw r3,4(r18)
56d4: 98805217 ldw r2,328(r19)
56d8: 1dc0011e bne r3,r23,56e0 <__call_exitprocs+0xe4>
56dc: 90bfe126 beq r18,r2,5664 <__call_exitprocs+0x68>
56e0: 103fe426 beq r2,zero,5674 <__call_exitprocs+0x78>
56e4: 1025883a mov r18,r2
56e8: 003fd506 br 5640 <__call_exitprocs+0x44>
56ec: 90806317 ldw r2,396(r18)
56f0: 81002017 ldw r4,128(r16)
56f4: 1886703a and r3,r3,r2
56f8: 1800061e bne r3,zero,5714 <__call_exitprocs+0x118>
56fc: 200b883a mov r5,r4
5700: a809883a mov r4,r21
5704: 303ee83a callr r6
5708: 003ff106 br 56d0 <__call_exitprocs+0xd4>
570c: 94400115 stw r17,4(r18)
5710: 003fe806 br 56b4 <__call_exitprocs+0xb8>
5714: 303ee83a callr r6
5718: 003fed06 br 56d0 <__call_exitprocs+0xd4>
0000571c <_exit>:
*
* ALT_EXIT is mapped onto the _exit() system call in alt_syscall.h
*/
void ALT_EXIT (int exit_code)
{
571c: defffd04 addi sp,sp,-12
5720: df000215 stw fp,8(sp)
5724: df000204 addi fp,sp,8
5728: e13ffe15 stw r4,-8(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();
572c: 0001883a nop
5730: e0bffe17 ldw r2,-8(fp)
5734: e0bfff15 stw r2,-4(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;
5738: e0bfff17 ldw r2,-4(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) {
573c: 10000226 beq r2,zero,5748 <_exit+0x2c>
ALT_SIM_FAIL();
5740: 002af070 cmpltui zero,zero,43969
} else {
ALT_SIM_PASS();
}
#endif /* DEBUG_STUB */
}
5744: 00000106 br 574c <_exit+0x30>
ALT_SIM_PASS();
5748: 002af0b0 cmpltui zero,zero,43970
}
574c: 0001883a nop
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);
5750: 003fff06 br 5750 <_exit+0x34>