This commit is contained in:
Brooke Vibber 2026-01-05 15:30:12 -08:00
commit bb50f2f445

View file

@ -5,7 +5,7 @@
; a2 = count
; a3 = stream
; -- Entry point for fwrite
; -- Entry through symbol fwrite
; Function protocol
10b36: 7139 addi sp,sp,-64
; Check an internal word in the FILE to see if it needs to lock
@ -30,31 +30,31 @@
10b58: 8cf1 and s1,s1,a2
; Branch to lock path if needed:
10b5a: 0207d463 bgez a5,10b82 <fwrite+0x4c>
; -- exit point bgez: likely branch 10b5e, rare branch 10b82
; -- exit through bgez: likely branch 10b5e, rare branch 10b82
; -- entry through branch
; -- entry through branch at 10b5a
; Call through to __fwritex
10b5e: 8636 mv a2,a3
10b60: 85a2 mv a1,s0
10b62: f27ff0ef jal 10a88 <__fwritex>
; -- exit point jal, return address 10b66
; -- exit through jal to 10a88, return address 10b66
; -- Entry point from return
; -- Entry through return address, call at 10b62
; Check the return value from __fwritex to see if we wrote
; all requested bytes.
10b66: 8a2a mv s4,a0
10b68: 01440463 beq s0,s4,10b70 <fwrite+0x3a>
; -- exit point beq: likely 10b6c, rare 10b70
; -- exit through beq: likely 10b6c, rare 10b70
; -- Entry point from 10ba6
; -- Entry point from 10baa
; -- Entry through jump at 10ba6
; -- Entry through jump at 10baa
; Note this overlaps the previous trace!
; Check the return value from __fwritex to see if we wrote
; all requested bytes.
10b68: 01440463 beq s0,s4,10b70 <fwrite+0x3a>
; -- exit point beq: likely 10b6c, rare 10b70
; -- exit through beq: likely 10b6c, rare 10b70
; -- Entry point from 10b68
; -- Entry through branch at 10b68
; Divide to the count in records from the count in bytes
10b6c: 033a54b3 divu s1,s4,s3
; Function outro
@ -67,9 +67,9 @@
10b7c: 74a2 ld s1,40(sp)
10b7e: 6121 addi sp,sp,64
10b80: 8082 ret
; -- end point ret
; -- exit through ret
; Entry point from 10b68
; -- Entry through from 10b68
; Return the original record count, skipping the division.
; Note this overlaps the previous two traces!
10b70: 70e2 ld ra,56(sp)
@ -81,38 +81,38 @@
10b7c: 74a2 ld s1,40(sp)
10b7e: 6121 addi sp,sp,64
10b80: 8082 ret
; -- end point ret
; -- exit through ret
; -- entry through branch at 10b5a
; Lock the FILE if needed
; Call through to __lockfile
10b82: 8a2a mv s4,a0
10b84: 8536 mv a0,a3
10b86: e456 sd s5,8(sp)
10b88: c95ff0ef jal 1081c <__lockfile>
; -- end point jal - return address 10b8c
; -- exit through jal to 1081c - return address 10b8c
; -- entry through return address
; -- entry through return address, call at 10b88
; Call through to __fwritex
10b8c: 8aaa mv s5,a0
10b8e: 864a mv a2,s2
10b90: 8552 mv a0,s4
10b92: 85a2 mv a1,s0
10b94: ef5ff0ef jal 10a88 <__fwritex>
; -- exit through call; return address 10b98
; -- exit through jal to 10a88; return address 10b98
; -- entry through return address
; -- entry through return address, call at 10b94
10b98: 8a2a mv s4,a0
10b9a: 000a8763 beqz s5,10ba8 <fwrite+0x72>
; -- exit through beqz; likely branch 10b9e; rare branch 10ba8
; -- exit through beqz; likely branch 10b9e, rare branch 10ba8
; -- entry through branch from 10b9a
; Call through to __unlockfile
10b9e: 854a mv a0,s2
10ba0: d25ff0ef jal 108c4 <__unlockfile>
; -- end through jal; return address 10ba4
; -- exit through jal to 108c4; return address 10ba4
; -- entry through return address
; -- entry through return address, call from 10ba0
10ba4: 6aa2 ld s5,8(sp)
10ba6: b7c9 j 10b68 <fwrite+0x32>
; -- exit through jump to 10b68