ref: f1a35b52fa5708a9cedd556dbe1399ad7be2b519
parent: 003f169c3ee40cf7b77219cef10af9029ce23b2d
author: 9ferno <gophone2015@gmail.com>
date: Mon Jan 10 21:18:29 EST 2022
terminate on 0 or -1 return value
--- a/os/pc64/bindings.s
+++ b/os/pc64/bindings.s
@@ -133,9 +133,12 @@
MOVQ 24(SP), UP
C_TO_F_1
- TESTQ TOP, TOP /* check read return value */
+ CMPQ TOP, $-1 /* return value == -1? */
+ JEQ fsread_checkfd /* return value = -1 */
+ TESTQ TOP, TOP /* check if read return value == 0 */
JNZ fsread_continue
- MOVQ 32(SP), CX /* read return value == 0 */
+fsread_checkfd:
+ MOVQ 32(SP), CX /* read return value == 0, check if fd is stdin */
TESTQ CX, CX
JNZ fsread_continue
JMP terminate(SB) /* and fd == 0, terminate */