libn64: Don't generate breaks for divides.
authorTyler J. Stachecki <stachecki.tyler@gmail.com>
Mon, 18 Dec 2017 18:31:17 +0000 (13:31 -0500)
committerTyler J. Stachecki <stachecki.tyler@gmail.com>
Mon, 18 Dec 2017 18:31:17 +0000 (13:31 -0500)
@sp1187 pointed out (d)div(u) was generating break insns
and that inserting an implicit $zero (dummy) operand will
prevent it.

Signed-off-by: Tyler J. Stachecki <stachecki.tyler@gmail.com>
helloworld/Makefile
libn64/Makefile
libn64/os/asm/syscall.s
threadtest/Makefile

index 6acfd78..722b4b5 100644 (file)
@@ -34,7 +34,8 @@ CFLAGS = -Wall -Wextra -pedantic -std=c99 -Wno-main \
 
 OPTFLAGS = -Os -march=vr4300 -mtune=vr4300 -mabi=eabi -mgp32 -mlong32 \
        -flto -ffat-lto-objects -ffunction-sections -fdata-sections \
-       -G4 -mno-extern-sdata -mgpopt -mfix4300 -mbranch-likely
+       -G4 -mno-extern-sdata -mgpopt -mfix4300 -mbranch-likely \
+       -mno-check-zero-division
 
 ASMFILES = $(call FIXPATH,\
 )
index c555c97..e4b570d 100644 (file)
@@ -23,7 +23,8 @@ CC = $(call FIXPATH,$(CURDIR)/../tools/bin/mips64-elf-gcc)
 CFLAGS = -Wall -Wextra -pedantic -std=c99 -I. -Iinclude -Ipriv_include
 OPTFLAGS = -Os -march=vr4300 -mtune=vr4300 -mabi=eabi -mgp32 -mlong32 \
        -flto -ffat-lto-objects -ffunction-sections -fdata-sections \
-       -G4 -mno-extern-sdata -mgpopt -mfix4300 -mbranch-likely
+       -G4 -mno-extern-sdata -mgpopt -mfix4300 -mbranch-likely \
+       -mno-check-zero-division
 
 ASMFILES = $(call FIXPATH,\
        os/asm/boot.s \
index b6a996a..f90d00a 100644 (file)
@@ -370,7 +370,7 @@ libn64_syscall_time:
   # 62,500,000 * 1.5 / 2 = 46,875,000 ticks per second.
   lui $k1, 0x02CB
   ori $k1, 0x4178
-  ddivu $k0, $k1
+  ddivu $zero, $k0, $k1
 
   # tv_sec is the result of the div. Compute tv_usec next.
   mflo $v0 # div result -> tv_sec
@@ -385,7 +385,7 @@ libn64_syscall_time:
   dsll32 $v1, $v1, 0
   dsrl32 $k0, $k0, 0
   or $v1, $v1, $k0
-  ddivu $v1, $k1
+  ddivu $zero, $v1, $k1
   mflo $v1
   nop
   eret
index d2a14be..0a67cd1 100644 (file)
@@ -33,7 +33,8 @@ CFLAGS = -Wall -Wextra -pedantic -std=c99 -Wno-main \
 
 OPTFLAGS = -Os -march=vr4300 -mtune=vr4300 -mabi=eabi -mgp32 -mlong32 \
        -flto -ffat-lto-objects -ffunction-sections -fdata-sections \
-       -G4 -mno-extern-sdata -mgpopt -mfix4300 -mbranch-likely
+       -G4 -mno-extern-sdata -mgpopt -mfix4300 -mbranch-likely \
+       -mno-check-zero-division
 
 ASMFILES = $(call FIXPATH,\
 )