Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: src/sys/lib/libkern/arch/sh3
Module Name: src
Committed By: uwe
Date: Thu Aug 4 03:20:10 UTC 2011
Modified Files:
src/sys/lib/libkern/arch/sh3: Makefile.inc
Added Files:
src/sys/lib/libkern/arch/sh3: sdivsi3_i4i.S udivsi3_i4i.S
Log Message:
For unsignad integer division gcc used to emit a call to __udivsi3
"millicode" function that uses compiler-private ABI. Newer gcc uses
heavily tuned __udivsi3_i4i that is NOT compatible with __udivsi3
because it's expected to clobber different registers. We don't want
to link the kernel against libgcc and we don't have resources to write
heavily tuned version ourselves, so clone __udivsi3 but adjust it to
conform to the __udivsi3_i4i clobber spec.
Ditto for signed division.
You can make gcc use old routines with -mdiv=call-div1 to avoid few
extra instructions to save/restore the right registers in the signed
division funcion.
To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/lib/libkern/arch/sh3/Makefile.inc
cvs rdiff -u -r0 -r1.1 src/sys/lib/libkern/arch/sh3/sdivsi3_i4i.S \
src/sys/lib/libkern/arch/sh3/udivsi3_i4i.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index