[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-libc-commit] [2473] Fix for bug #33698: Replaced the use of rjmp/rc
From: |
Pitchumani |
Subject: |
[avr-libc-commit] [2473] Fix for bug #33698: Replaced the use of rjmp/rcall ( to external function) instructions with XJMP/ XCALL macros that will expand to jmp/call if the architecture has it. |
Date: |
Thu, 09 Apr 2015 08:10:24 +0000 |
Revision: 2473
http://svn.sv.gnu.org/viewvc/?view=rev&root=avr-libc&revision=2473
Author: pitchumani
Date: 2015-04-09 08:10:22 +0000 (Thu, 09 Apr 2015)
Log Message:
-----------
Fix for bug #33698: Replaced the use of rjmp/rcall (to external function)
instructions with XJMP/XCALL macros that will expand to jmp/call if the
architecture has it. When optimizations/ relaxation enabled compiler can
optimize them to rjmp/rcall if possible.
Ticket Links:
------------
http://savannah.gnu.org/bugs/?33698
Modified Paths:
--------------
trunk/avr-libc/ChangeLog
trunk/avr-libc/NEWS
trunk/avr-libc/common/macros.inc
trunk/avr-libc/libc/stdlib/ctype.S
trunk/avr-libc/libm/fplib/acos.S
trunk/avr-libc/libm/fplib/addsf3.S
trunk/avr-libc/libm/fplib/addsf3x.S
trunk/avr-libc/libm/fplib/asin.S
trunk/avr-libc/libm/fplib/asmdef.h
trunk/avr-libc/libm/fplib/atan.S
trunk/avr-libc/libm/fplib/atan2.S
trunk/avr-libc/libm/fplib/cbrt.S
trunk/avr-libc/libm/fplib/ceil.S
trunk/avr-libc/libm/fplib/cmpsf2.S
trunk/avr-libc/libm/fplib/cos.S
trunk/avr-libc/libm/fplib/cosh.S
trunk/avr-libc/libm/fplib/divsf3.S
trunk/avr-libc/libm/fplib/divsf3x.S
trunk/avr-libc/libm/fplib/exp.S
trunk/avr-libc/libm/fplib/fdim.S
trunk/avr-libc/libm/fplib/fixsfdi.S
trunk/avr-libc/libm/fplib/fixsfsi.S
trunk/avr-libc/libm/fplib/fixunssfsi.S
trunk/avr-libc/libm/fplib/floatdisf.S
trunk/avr-libc/libm/fplib/floor.S
trunk/avr-libc/libm/fplib/fma.S
trunk/avr-libc/libm/fplib/fmod.S
trunk/avr-libc/libm/fplib/fp_arccos.S
trunk/avr-libc/libm/fplib/fp_powser.S
trunk/avr-libc/libm/fplib/fp_powsodd.S
trunk/avr-libc/libm/fplib/fp_rempio2.S
trunk/avr-libc/libm/fplib/fp_sinus.S
trunk/avr-libc/libm/fplib/fp_trunc.S
trunk/avr-libc/libm/fplib/frexp.S
trunk/avr-libc/libm/fplib/gesf2.S
trunk/avr-libc/libm/fplib/hypot.S
trunk/avr-libc/libm/fplib/inverse.S
trunk/avr-libc/libm/fplib/isinf.S
trunk/avr-libc/libm/fplib/isnan.S
trunk/avr-libc/libm/fplib/ldexp.S
trunk/avr-libc/libm/fplib/log.S
trunk/avr-libc/libm/fplib/log10.S
trunk/avr-libc/libm/fplib/lrint.S
trunk/avr-libc/libm/fplib/lround.S
trunk/avr-libc/libm/fplib/modf.S
trunk/avr-libc/libm/fplib/mulsf3.S
trunk/avr-libc/libm/fplib/mulsf3x.S
trunk/avr-libc/libm/fplib/pow.S
trunk/avr-libc/libm/fplib/round.S
trunk/avr-libc/libm/fplib/sin.S
trunk/avr-libc/libm/fplib/sinh.S
trunk/avr-libc/libm/fplib/sqrt.S
trunk/avr-libc/libm/fplib/square.S
trunk/avr-libc/libm/fplib/tan.S
trunk/avr-libc/libm/fplib/tanh.S
trunk/avr-libc/libm/fplib/trunc.S
trunk/avr-libc/libm/fplib/unordsf2.S
Modified: trunk/avr-libc/ChangeLog
===================================================================
--- trunk/avr-libc/ChangeLog 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/ChangeLog 2015-04-09 08:10:22 UTC (rev 2473)
@@ -1,3 +1,67 @@
+2015-04-08 Martin Nowak <address@hidden>
+ Pitchumani Sivanupandi <address@hidden>
+
+ bug #33698: Explicit use of RJMP/RCALL can cause "relocation truncated
+ to fit: R_AVR_13_PCREL" linker error
+ * common/macros.inc: Use __AVR_HAVE_JMP_CALL__ instead of __AVR_MEGA__
+ to define XJMP/XCALL macros.
+ * libm/fplib/asmdef.h: Define XJMP and XCALL with rjmp/rcall or jmp/call
+ based on jmp/call instruction availability.
+ * libc/stdlib/ctype.S: Use XJMP/XCALL instead of explicit rjmp/rcall for
+ external functions.
+ * libm/fplib/acos.S: Ditto.
+ * libm/fplib/addsf3.S: Ditto.
+ * libm/fplib/addsf3x.S: Ditto.
+ * libm/fplib/asin.S: Ditto.
+ * libm/fplib/atan.S: Ditto.
+ * libm/fplib/atan2.S: Ditto.
+ * libm/fplib/cbrt.S: Ditto.
+ * libm/fplib/ceil.S: Ditto.
+ * libm/fplib/cmpsf2.S: Ditto.
+ * libm/fplib/cos.S: Ditto.
+ * libm/fplib/cosh.S: Ditto.
+ * libm/fplib/divsf3.S: Ditto.
+ * libm/fplib/divsf3x.S: Ditto.
+ * libm/fplib/exp.S: Ditto.
+ * libm/fplib/fdim.S: Ditto.
+ * libm/fplib/fixsfdi.S: Ditto.
+ * libm/fplib/fixsfsi.S: Ditto.
+ * libm/fplib/fixunssfsi.S: Ditto.
+ * libm/fplib/floatdisf.S: Ditto.
+ * libm/fplib/floor.S: Ditto.
+ * libm/fplib/fma.S: Ditto.
+ * libm/fplib/fmod.S: Ditto.
+ * libm/fplib/fp_arccos.S: Ditto.
+ * libm/fplib/fp_powser.S: Ditto.
+ * libm/fplib/fp_powsodd.S: Ditto.
+ * libm/fplib/fp_rempio2.S: Ditto.
+ * libm/fplib/fp_sinus.S: Ditto.
+ * libm/fplib/fp_trunc.S: Ditto.
+ * libm/fplib/frexp.S: Ditto.
+ * libm/fplib/gesf2.S: Ditto.
+ * libm/fplib/hypot.S: Ditto.
+ * libm/fplib/inverse.S: Ditto.
+ * libm/fplib/isinf.S: Ditto.
+ * libm/fplib/isnan.S: Ditto.
+ * libm/fplib/ldexp.S: Ditto.
+ * libm/fplib/log.S: Ditto.
+ * libm/fplib/log10.S: Ditto.
+ * libm/fplib/lrint.S: Ditto.
+ * libm/fplib/lround.S: Ditto.
+ * libm/fplib/modf.S: Ditto.
+ * libm/fplib/mulsf3.S: Ditto.
+ * libm/fplib/mulsf3x.S: Ditto.
+ * libm/fplib/pow.S: Ditto.
+ * libm/fplib/round.S: Ditto.
+ * libm/fplib/sin.S: Ditto.
+ * libm/fplib/sinh.S: Ditto.
+ * libm/fplib/sqrt.S: Ditto.
+ * libm/fplib/square.S: Ditto.
+ * libm/fplib/tan.S: Ditto.
+ * libm/fplib/tanh.S: Ditto.
+ * libm/fplib/trunc.S: Ditto.
+ * libm/fplib/unordsf2.S: Ditto.
+
2015-03-18 Senthil Kumar Selvaraj <address@hidden>
bug #44514: Wrong build option '-mtiny-stack' instead of '-msp8'
Modified: trunk/avr-libc/NEWS
===================================================================
--- trunk/avr-libc/NEWS 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/NEWS 2015-04-09 08:10:22 UTC (rev 2473)
@@ -2,10 +2,12 @@
* Bugs fixed:
- [#44515] Wrong build option '-mtiny-stack' instead of '-msp8'
+ [#33698] Explicit use of RJMP/RCALL can cause "relocation truncated to fit:
+ R_AVR_13_PCREL" linker error
+ [#34719] Check for right build compiler
[#43044] memory sections require __attribute__ ((used))
- [#34719] Check for right build compiler
[#44140] wdt_disable() macro clobbers prescaller bits
+ [#44515] Wrong build option '-mtiny-stack' instead of '-msp8'
[no-id] TC_EVACT_FRQ_gc was misspelled as TC_EVACT_FRW_gc in some Xmega
header files
Modified: trunk/avr-libc/common/macros.inc
===================================================================
--- trunk/avr-libc/common/macros.inc 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/common/macros.inc 2015-04-09 08:10:22 UTC (rev 2473)
@@ -110,7 +110,7 @@
#endif
#endif
-#if __AVR_MEGA__
+#if (__AVR_HAVE_JMP_CALL__)
#define XJMP jmp
#define XCALL call
#else
Modified: trunk/avr-libc/libc/stdlib/ctype.S
===================================================================
--- trunk/avr-libc/libc/stdlib/ctype.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libc/stdlib/ctype.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -77,7 +77,7 @@
GLOBAL(isascii)
CPSE rHigh,__zero_reg__
- RJMP _U(__ctype_isfalse)
+ XJMP _U(__ctype_isfalse)
COM rLow
ANDI rLow, 0x80
RET
@@ -103,12 +103,12 @@
GLOBAL(isalnum)
cpse rHigh, __zero_reg__
- rjmp _U(__ctype_isfalse)
+ XJMP _U(__ctype_isfalse)
subi rLow, '0'
subi rLow, '9'-'0'+1
brlo 2f ; rLow is digit, return negative val.
subi rLow, lo8(-'9'-1) ; restore rLow
- rjmp _U(isalpha)
+ XJMP _U(isalpha)
2: ret
ENDFUNC
@@ -135,15 +135,15 @@
GLOBAL(isupper)
;CPSE rHigh,__zero_reg__
- ;RJMP _U(__ctype_isfalse) ; checked by _islower later on
+ ;XJMP _U(__ctype_isfalse) ; checked by _islower later on
SBRC rLow,5 ; if bit 5 is set it is no upper
- RJMP _U(__ctype_isfalse) ; bit 5 is clear, so if isalpha is
true it is an upper
+ XJMP _U(__ctype_isfalse) ; bit 5 is clear, so if isalpha is
true it is an upper
GLOBAL(isalpha)
ORI rLow,0x20 ; make a lower out of an upper (all others
are changed but do not get alpha)
GLOBAL(islower)
CPSE rHigh,__zero_reg__
1:
- RJMP _U(__ctype_isfalse)
+ XJMP _U(__ctype_isfalse)
SUBI rLow, 'a'
SUBI rLow, 'z'-'a'+1
BRSH 1b
@@ -161,7 +161,7 @@
GLOBAL(isdigit)
CPSE rHigh,__zero_reg__
1:
- RJMP _U(__ctype_isfalse)
+ XJMP _U(__ctype_isfalse)
SUBI rLow,'0'
SUBI rLow,10
BRSH 1b
@@ -183,7 +183,7 @@
GLOBAL(isxdigit)
cpse rHigh, __zero_reg__
-1: rjmp _U(__ctype_isfalse)
+1: XJMP _U(__ctype_isfalse)
subi rLow, '0'
subi rLow, '9'-'0'+1
brlo 2f ; decimal digit
@@ -206,7 +206,7 @@
GLOBAL(iscntrl)
CPSE rHigh,__zero_reg__
1:
- RJMP _U(__ctype_isfalse)
+ XJMP _U(__ctype_isfalse)
CPI rLow,0x7F
BREQ 2f
SUBI rLow, ' '
@@ -228,7 +228,7 @@
BREQ 1f
GLOBAL(isprint)
CPSE rHigh, __zero_reg__
-1: RJMP _U(__ctype_isfalse)
+1: XJMP _U(__ctype_isfalse)
SUBI rLow, ' '
SUBI rLow, 0x7E - ' ' + 1
BRSH 1b
@@ -251,7 +251,7 @@
GLOBAL(isspace)
CPSE rHigh,__zero_reg__
1:
- RJMP _U(__ctype_isfalse)
+ XJMP _U(__ctype_isfalse)
CPI rLow,' ' ; blank
BREQ 2f
SUBI rLow, '\t'
@@ -270,12 +270,12 @@
GLOBAL(ispunct)
cpse rHigh, __zero_reg__
-1: rjmp _U(__ctype_isfalse)
+1: XJMP _U(__ctype_isfalse)
subi rLow, ' ' + 1
subi rLow, 0x7e - ' '
brsh 1b ; if (!isgraph(c)) return 0
subi rLow, lo8(-0x7e - 1) ; restore rLow
- rcall _U(isalnum)
+ XCALL _U(isalnum)
tst rLow
brne 1b ; if (isalnum(c)) return 0
ldi rLow, 1
@@ -293,7 +293,7 @@
GLOBAL(isblank)
CPSE rHigh,__zero_reg__
1:
- RJMP _U(__ctype_isfalse)
+ XJMP _U(__ctype_isfalse)
CPI rLow,' ' ; blank
BREQ 2f
CPI rLow,0x09 ;'\t' ; tab
Modified: trunk/avr-libc/libm/fplib/acos.S
===================================================================
--- trunk/avr-libc/libm/fplib/acos.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/acos.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -48,7 +48,7 @@
push rA3
; A = arccos(fabs(A))
andi rA3, 0x7f
- rcall _U(__fp_arccos)
+ XCALL _U(__fp_arccos)
; check sign
pop r0
tst r0
@@ -60,9 +60,9 @@
ldi rB1, hi8(HI40_PI)
ldi rB2, hlo8(HI40_PI)
ldi rB3, hhi8(HI40_PI)
- rcall _U(__addsf3x)
+ XCALL _U(__addsf3x)
; round
-1: rjmp _U(__fp_round)
+1: XJMP _U(__fp_round)
ENDFUNC
#endif /* !defined(__AVR_TINY__) */
Modified: trunk/avr-libc/libm/fplib/addsf3.S
===================================================================
--- trunk/avr-libc/libm/fplib/addsf3.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/addsf3.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -41,6 +41,6 @@
ENTRY __addsf3
clr rAE
clr rBE
- rcall _U(__addsf3x)
- rjmp _U(__fp_round)
+ XCALL _U(__addsf3x)
+ XJMP _U(__fp_round)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/addsf3x.S
===================================================================
--- trunk/avr-libc/libm/fplib/addsf3x.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/addsf3x.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -48,26 +48,26 @@
FUNCTION __addsf3x
-0: rcall _U(__fp_pscA)
+0: XCALL _U(__fp_pscA)
brcs .L_nan
- rcall _U(__fp_pscB)
+ XCALL _U(__fp_pscB)
brcs .L_nan
brne .L_inf ; B is finite --> return A
cpi rA3, 255
brne .L_infB ; A is finite --> return B
brtc .L_inf ; Inf + Inf with the same sign
.L_nan:
- rjmp _U(__fp_nan)
+ XJMP _U(__fp_nan)
.L_infB:
brtc .L_inf
com ZL
.L_inf:
bst ZL, 7
- rjmp _U(__fp_inf)
+ XJMP _U(__fp_inf)
ENTRY __addsf3x
mov ZL, rA3 ; save sign of A
- rcall _U(__fp_split3)
+ XCALL _U(__fp_split3)
brcs 0b
; compare A and B
cp rAE, rBE
@@ -78,7 +78,7 @@
brlo 2f ; fabs(A) < fabs(B)
brne 4f ; fabs(A) > fabs(B)
brtc .L_add
- rjmp _U(__fp_zero) ; A + (-A) = +0.0
+ XJMP _U(__fp_zero) ; A + (-A) = +0.0
; swap A and B
2: brtc 3f
com ZL ; update sign
Modified: trunk/avr-libc/libm/fplib/asin.S
===================================================================
--- trunk/avr-libc/libm/fplib/asin.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/asin.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -57,18 +57,18 @@
; for small x
ldi ZL, lo8 (.L_table)
ldi ZH, hi8 (.L_table)
- rcall _U(__fp_powsodd)
+ XCALL _U(__fp_powsodd)
rjmp 2f
; arcsin(x) = Pi/2 - arccos(x)
-1: rcall _U(__fp_arccos)
+1: XCALL _U(__fp_arccos)
subi rA3, 0x80
ldi rBE, LO40_PI_2
ldi rB0, lo8(HI40_PI_2)
ldi rB1, hi8(HI40_PI_2)
ldi rB2, hlo8(HI40_PI_2)
ldi rB3, hhi8(HI40_PI_2)
- rcall _U(__addsf3x)
- rcall _U(__fp_round)
+ XCALL _U(__addsf3x)
+ XCALL _U(__fp_round)
; restore sign
2: pop r0
sbrc r0, 7
Modified: trunk/avr-libc/libm/fplib/asmdef.h
===================================================================
--- trunk/avr-libc/libm/fplib/asmdef.h 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/asmdef.h 2015-04-09 08:10:22 UTC (rev 2473)
@@ -43,6 +43,16 @@
# endif
#endif
+/* Define XJMP/XCALL with rjmp/rcall if the arch do not have
+ jmp/call instructions. */
+#if (__AVR_HAVE_JMP_CALL__)
+# define XJMP jmp
+# define XCALL call
+#else
+# define XJMP rjmp
+# define XCALL rcall
+#endif
+
/* Historicaly, the _U() was intended to concatinate '_' prefix.
Let us save it, as one is usefull to find externals quickly. */
#define _U(name) name
Modified: trunk/avr-libc/libm/fplib/atan.S
===================================================================
--- trunk/avr-libc/libm/fplib/atan.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/atan.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -68,22 +68,22 @@
cpc rB3, rAE
brsh 1f
mov corr, rA3 ; rA3 != 0
- rcall _U(inverse)
+ XCALL _U(inverse)
; calculate atan(A) for -1.0 <= A <= +1.0
1: push rA3
push rA2
push rA1
push rA0
- rcall _U(square)
+ XCALL _U(square)
ldi ZL, lo8(.L_table)
ldi ZH, hi8(.L_table)
- rcall _U(__fp_powser)
- rcall _U(__fp_round)
+ XCALL _U(__fp_powser)
+ XCALL _U(__fp_round)
pop rB0
pop rB1
pop rB2
pop rB3
- rcall _U(__mulsf3x)
+ XCALL _U(__mulsf3x)
; is correction needed ?
tst corr
breq 2f
@@ -96,10 +96,10 @@
ldi rB3, hhi8(HI40_PI_2)
andi corr, 0x80
eor rB3, corr
- rcall _U(__addsf3x)
+ XCALL _U(__addsf3x)
; restore and round
2: pop corr
- rjmp _U(__fp_round)
+ XJMP _U(__fp_round)
ENDFUNC
PGM_SECTION
Modified: trunk/avr-libc/libm/fplib/atan2.S
===================================================================
--- trunk/avr-libc/libm/fplib/atan2.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/atan2.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -68,13 +68,13 @@
FUNCTION atan2
-.L_nf: rcall _U(__fp_pscA)
+.L_nf: XCALL _U(__fp_pscA)
brcs .L_nan
ldi rA2, 0x80
ldi rA3, 0x01 ; replace finite to very small value
brne 1f
ldi rA3, 0xfe ; replace Inf to very big value
-1: rcall _U(__fp_pscB)
+1: XCALL _U(__fp_pscB)
brcs .L_nan
ldi rB2, 0x80
ldi rB3, 0x01 ; replace finite to very small value
@@ -82,15 +82,15 @@
ldi rB3, 0xfe ; replace Inf to very big value
rjmp .L_cmp
-.L_nan: rjmp _U(__fp_nan)
-.L_zr: rjmp _U(__fp_zero)
+.L_nan: XJMP _U(__fp_nan)
+.L_zr: XJMP _U(__fp_zero)
ENTRY atan2
; save 'y' sign
mov disp, rA3
andi disp, 0x80
; split
- rcall _U(__fp_split3)
+ XCALL _U(__fp_split3)
brcs .L_nf
; check the (0,0) case
mov r0, rA3
@@ -124,9 +124,9 @@
X_movw rB2, XL
; save displacement and calculate atan
2: push disp
- rcall _U(__divsf3_pse)
- rcall _U(__fp_round)
- rcall _U(atan)
+ XCALL _U(__divsf3_pse)
+ XCALL _U(__fp_round)
+ XCALL _U(atan)
; restore disp and analize
pop rB3 ; hhi8()
tst rB3
@@ -137,7 +137,7 @@
ldi rB2, hlo8(PI)
sbrc rB3, 0 ; hhi8(PI) == 0x40, hhi8(PI_2) == 0x3f
ldi rB2, hlo8(PI_2)
- rjmp _U(__addsf3)
+ XJMP _U(__addsf3)
9: ret
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/cbrt.S
===================================================================
--- trunk/avr-libc/libm/fplib/cbrt.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/cbrt.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -110,11 +110,11 @@
ret
#endif
-0: rjmp _U(__fp_mpack)
+0: XJMP _U(__fp_mpack)
ENTRY cbrt
; split and check arg.
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs 0b ; !isfinite(A)
tst rA3
breq 0b ; return 0 with original sign
Modified: trunk/avr-libc/libm/fplib/ceil.S
===================================================================
--- trunk/avr-libc/libm/fplib/ceil.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/ceil.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -46,7 +46,7 @@
#define FL_P1 0x3f800000 /* +1.0 */
ENTRY ceil
- rcall _U(__fp_trunc)
+ XCALL _U(__fp_trunc)
brcs .L_nf
; A is finite
cpi rA3, 127
@@ -54,7 +54,7 @@
; fabs(A) < 1.0
cpse rA3, r1
brtc 1f
- rjmp _U(__fp_szero) ; ceil(-0.0) is -0.0
+ XJMP _U(__fp_szero) ; ceil(-0.0) is -0.0
; 0.0 < A < 1.0 --> +1.0
1: ldi rA0, lo8(FL_P1)
ldi rA1, hi8(FL_P1)
@@ -67,9 +67,9 @@
adc rA0, r1
adc rA1, r1
adc rA2, r1 ; rA2 was < 0x80, overflow is impossible
-3: rjmp _U(__fp_mintl)
+3: XJMP _U(__fp_mintl)
-.L_nf: rjmp _U(__fp_mpack) ; pass nonfinite arg as is
+.L_nf: XJMP _U(__fp_mpack) ; pass nonfinite arg as is
ENDFUNC
#endif /* !defined(__AVR_TINY__) */
Modified: trunk/avr-libc/libm/fplib/cmpsf2.S
===================================================================
--- trunk/avr-libc/libm/fplib/cmpsf2.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/cmpsf2.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -55,7 +55,7 @@
ENTRY __nesf2
ENTRY __ltsf2
ENTRY __lesf2
- rcall _U(__fp_cmp)
+ XCALL _U(__fp_cmp)
brcc 1f
ldi ret_lo, 1
1: ret
Modified: trunk/avr-libc/libm/fplib/cos.S
===================================================================
--- trunk/avr-libc/libm/fplib/cos.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/cos.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -37,7 +37,7 @@
radians.
*/
ENTRY cos
- rcall _U(__fp_rempio2)
+ XCALL _U(__fp_rempio2)
inc ZL
- rjmp _U(__fp_sinus)
+ XJMP _U(__fp_sinus)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/cosh.S
===================================================================
--- trunk/avr-libc/libm/fplib/cosh.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/cosh.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -46,10 +46,10 @@
ENTRY cosh
; A = exp(-fabs(x))/2 negative to exclude an extra inversion
ori rA3, 0x80
- rcall _U(exp)
+ XCALL _U(exp)
ldi exp_lo, lo8(-1)
ldi exp_hi, hi8(-1)
- rcall _U(ldexp)
+ XCALL _U(ldexp)
; save A and calculate exp(fabs(x))/2
push rA3
push rA2
@@ -57,12 +57,12 @@
push rA0
ldi exp_lo, lo8(2)
ldi exp_hi, hi8(2)
- rcall _U(ldexp)
- rcall _U(inverse)
+ XCALL _U(ldexp)
+ XCALL _U(inverse)
; exp(x)/2 + exp(-x)/2
pop rB0
pop rB1
pop rB2
pop rB3
- rjmp _U(__addsf3)
+ XJMP _U(__addsf3)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/divsf3.S
===================================================================
--- trunk/avr-libc/libm/fplib/divsf3.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/divsf3.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -37,6 +37,6 @@
#include "asmdef.h"
ENTRY __divsf3
- rcall _U(__divsf3x)
- rjmp _U(__fp_round)
+ XCALL _U(__divsf3x)
+ XJMP _U(__fp_round)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/divsf3x.S
===================================================================
--- trunk/avr-libc/libm/fplib/divsf3x.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/divsf3x.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -43,23 +43,23 @@
FUNCTION __divsf3x
-0: rcall _U(__fp_pscB)
+0: XCALL _U(__fp_pscB)
brcs .L_nan
- rcall _U(__fp_pscA)
+ XCALL _U(__fp_pscA)
brcs .L_nan
brne .L_zr ; finite / Inf --> 0
.L_infA:
cpi rB3, 255
breq .L_nan ; Inf / Inf --> NaN
.L_inf:
- rjmp _U(__fp_inf)
+ XJMP _U(__fp_inf)
1:
cpse rB3, r1 ; 0/finite --> 0, 0/0 --> NaN
-.L_zr: rjmp _U(__fp_szero)
-.L_nan: rjmp _U(__fp_nan)
+.L_zr: XJMP _U(__fp_szero)
+.L_nan: XJMP _U(__fp_nan)
ENTRY __divsf3x
- rcall _U(__fp_split3)
+ XCALL _U(__fp_split3)
brcs 0b
ENTRY __divsf3_pse ; post split entry
@@ -130,9 +130,9 @@
11: cpi rA3, 254
cpc rB3, r1
brlo 15f
- rjmp _U(__fp_inf)
+ XJMP _U(__fp_inf)
; check lowest value of exponent to avoid long operation
-12: rjmp _U(__fp_szero)
+12: XJMP _U(__fp_szero)
13: cpi rB3, hi8(-24) ; here rB3 < 0
brlt 12b
cpi rA3, lo8(-24)
Modified: trunk/avr-libc/libm/fplib/exp.S
===================================================================
--- trunk/avr-libc/libm/fplib/exp.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/exp.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -50,13 +50,13 @@
.L_nf: brne .L_nan
.L_tb: brts .L_zr
- rjmp _U(__fp_inf)
-.L_zr: rjmp _U(__fp_zero)
-.L_nan: rjmp _U(__fp_nan)
+ XJMP _U(__fp_inf)
+.L_zr: XJMP _U(__fp_zero)
+.L_nan: XJMP _U(__fp_nan)
ENTRY exp
; split and analize A
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs .L_nf ; A is not a finite number
cpi rA3, hhi8(X2BIG << 1)
brsh .L_tb ; A is too big (in absolute value)
@@ -69,7 +69,7 @@
ldi rB1, hi8(FL_1_LN2)
ldi rB2, hlo8(FL_1_LN2 | 0x800000) ; hidden '1'
ldi rB3, hhi8(FL_1_LN2 << 1) ; exponent
- rcall _U(__mulsf3_pse)
+ XCALL _U(__mulsf3_pse)
; split A into fraction and integral parts
push r0
push r0
@@ -77,11 +77,11 @@
in exp_lo, SPL_IO_ADDR
in exp_hi, SPH_IO_ADDR
push r0
- rcall _U(modf)
+ XCALL _U(modf)
; calculate 2**(-x) for 0 <= x < 1
ldi ZL, lo8(.L_table)
ldi ZH, hi8(.L_table)
- rcall _U(__fp_powser)
+ XCALL _U(__fp_powser)
; get integral part
pop exp_lo
pop exp_hi
@@ -102,11 +102,11 @@
; negate and scale
neg exp_lo
sbc exp_hi, exp_hi
-2: rcall _U(ldexp)
+2: XCALL _U(ldexp)
; inverse for positive arg.
pop r0
sbrs r0, 7
- rjmp _U(inverse)
+ XJMP _U(inverse)
ret
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/fdim.S
===================================================================
--- trunk/avr-libc/libm/fplib/fdim.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/fdim.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -55,7 +55,7 @@
cpc rA2, rB2
cpc rA3, rB3
brcs 3f
-1: rjmp _U(__subsf3)
+1: XJMP _U(__subsf3)
; A < 0 or B < 0
2: cp rB0, rA0
cpc rB1, rA1
@@ -79,9 +79,9 @@
cpc ZH, rB3
brlo .L_nan
; return 0
- rjmp _U(__fp_zero)
+ XJMP _U(__fp_zero)
-.L_nan: rjmp _U(__fp_nan)
+.L_nan: XJMP _U(__fp_nan)
ENDFUNC
#endif /* !defined(__AVR_TINY__) */
Modified: trunk/avr-libc/libm/fplib/fixsfdi.S
===================================================================
--- trunk/avr-libc/libm/fplib/fixsfdi.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/fixsfdi.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -90,7 +90,7 @@
clr rB1
X_movw rB2, rB0
; split
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs .L_ovfl ; is not finite
subi rA3, 127 ; 1.0 exponent field
@@ -147,7 +147,7 @@
brne 6b
.L_sign:
brtc 7f
- rcall _U(__fp_negdi)
+ XCALL _U(__fp_negdi)
7: clc
ret
Modified: trunk/avr-libc/libm/fplib/fixsfsi.S
===================================================================
--- trunk/avr-libc/libm/fplib/fixsfsi.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/fixsfsi.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -49,10 +49,10 @@
*/
ENTRY __fixsfsi
- rcall _U(__fixunssfsi)
+ XCALL _U(__fixunssfsi)
set
cpse rAE, r1 ; error flag
- rjmp _U(__fp_szero) ; return 0x80000000
+ XJMP _U(__fp_szero) ; return 0x80000000
ret
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/fixunssfsi.S
===================================================================
--- trunk/avr-libc/libm/fplib/fixunssfsi.S 2015-03-18 06:53:54 UTC (rev
2472)
+++ trunk/avr-libc/libm/fplib/fixunssfsi.S 2015-04-09 08:10:22 UTC (rev
2473)
@@ -66,7 +66,7 @@
*/
ENTRY __fixunssfsi
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs .L_err
; A is finite
subi rA3, 127 ; exponent field of 1.0
@@ -91,11 +91,11 @@
2: cpi rAE, 1
breq .L_sign ; rAE: overflow for 'signed long' usage
-.L_err: rcall _U(__fp_zero)
+.L_err: XCALL _U(__fp_zero)
ldi rAE, 1 ; error flag
ret
-.L_zr: rjmp _U(__fp_zero) ; return 0x00000000, clear rAE
+.L_zr: XJMP _U(__fp_zero) ; return 0x00000000, clear rAE
; fabs(A) <= 0x0.ffffffp+23
; Shift A to right by 1 (rA3==-1) .. 23 (rA3==-23) positions.
Modified: trunk/avr-libc/libm/fplib/floatdisf.S
===================================================================
--- trunk/avr-libc/libm/fplib/floatdisf.S 2015-03-18 06:53:54 UTC (rev
2472)
+++ trunk/avr-libc/libm/fplib/floatdisf.S 2015-04-09 08:10:22 UTC (rev
2473)
@@ -42,6 +42,6 @@
ENTRY __floatdisf
bst rA3, 7 ; sign
brtc 1f
- rcall _U(__fp_negdi)
-1: rjmp _U(__fp_di2sf)
+ XCALL _U(__fp_negdi)
+1: XJMP _U(__fp_di2sf)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/floor.S
===================================================================
--- trunk/avr-libc/libm/fplib/floor.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/floor.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -45,7 +45,7 @@
#define FL_M1 0xbf800000 /* -1.0 */
ENTRY floor
- rcall _U(__fp_trunc)
+ XCALL _U(__fp_trunc)
brcs .L_nf
; A is finite
cpi rA3, 127
@@ -53,7 +53,7 @@
; fabs(A) < 1.0
cpse rA3, r1 ; floor(-0.0) is -0.0
brts 1f
- rjmp _U(__fp_szero)
+ XJMP _U(__fp_szero)
; fabs (-1.0 < A < 0.0) --> -1.0
1: ldi rA0, lo8(FL_M1)
ldi rA1, hi8(FL_M1)
@@ -66,9 +66,9 @@
adc rA0, r1
adc rA1, r1
adc rA2, r1 ; rA2 was < 0x80, overflow is impossible
-3: rjmp _U(__fp_mintl)
+3: XJMP _U(__fp_mintl)
-.L_nf: rjmp _U(__fp_mpack) ; pass nonfinite arg as is
+.L_nf: XJMP _U(__fp_mpack) ; pass nonfinite arg as is
ENDFUNC
#endif /* !defined(__AVR_TINY__) */
Modified: trunk/avr-libc/libm/fplib/fma.S
===================================================================
--- trunk/avr-libc/libm/fplib/fma.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/fma.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -45,12 +45,12 @@
#define rC2 r16
ENTRY fma
- rcall _U(__mulsf3x)
+ XCALL _U(__mulsf3x)
X_movw rB0, rC0
X_movw rB2, rC2
clr rBE
- rcall _U(__addsf3x)
- rjmp _U(__fp_round)
+ XCALL _U(__addsf3x)
+ XJMP _U(__fp_round)
ENDFUNC
#endif /* !defined(__AVR_TINY__) */
Modified: trunk/avr-libc/libm/fplib/fmod.S
===================================================================
--- trunk/avr-libc/libm/fplib/fmod.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/fmod.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -42,19 +42,19 @@
FUNCTION fmod
-0: rcall _U(__fp_pscA)
+0: XCALL _U(__fp_pscA)
brcs .L_nan ; isnan(A)
breq .L_nan ; isinf(A)
- rcall _U(__fp_pscB)
+ XCALL _U(__fp_pscB)
brcc 1f ; isinf(B) -- legal arg: return A
-.L_nan: rjmp _U(__fp_nan)
-.L_sz: rjmp _U(__fp_szero)
+.L_nan: XJMP _U(__fp_nan)
+.L_sz: XJMP _U(__fp_szero)
ENTRY fmod
; split and check exceptions
mov ZL, rA3 ; save
- rcall _U(__fp_split3)
+ XCALL _U(__fp_split3)
brcs 0b
tst rB3
breq .L_nan ; B == 0
@@ -124,7 +124,7 @@
brne 7b
8: inc rA3
.L_pk:
- rjmp _U(__fp_mpack)
+ XJMP _U(__fp_mpack)
9: lsr rA2
ror rA1
ror rA0
Modified: trunk/avr-libc/libm/fplib/fp_arccos.S
===================================================================
--- trunk/avr-libc/libm/fplib/fp_arccos.S 2015-03-18 06:53:54 UTC (rev
2472)
+++ trunk/avr-libc/libm/fplib/fp_arccos.S 2015-04-09 08:10:22 UTC (rev
2473)
@@ -60,8 +60,8 @@
ldi ZL, lo8(.L_table)
ldi ZH, hi8(.L_table)
- rcall _U(__fp_powser)
- rcall _U(__fp_round)
+ XCALL _U(__fp_powser)
+ XCALL _U(__fp_round)
movw rB0, rC0
movw rB2, rC2
@@ -73,8 +73,8 @@
ldi rA1, hi8(FL_1)
ldi rA2, hlo8(FL_1)
ldi rA3, hhi8(FL_1)
- rcall _U(__subsf3)
- rcall _U(sqrt)
+ XCALL _U(__subsf3)
+ XCALL _U(sqrt)
movw rB0, rC0
movw rB2, rC2
@@ -84,7 +84,7 @@
pop rC1
pop rC2
pop rC3
- rjmp _U(__mulsf3x)
+ XJMP _U(__mulsf3x)
#else /* to __AVR_HAVE_MOVW__ */
@@ -96,8 +96,8 @@
; calculate: C0 + A*(C1 + ...)
ldi ZL, lo8(.L_table)
ldi ZH, hi8(.L_table)
- rcall _U(__fp_powser)
- rcall _U(__fp_round)
+ XCALL _U(__fp_powser)
+ XCALL _U(__fp_round)
; restore A
pop rB0
pop rB1
@@ -113,14 +113,14 @@
ldi rA1, hi8(FL_1)
ldi rA2, hlo8(FL_1)
ldi rA3, hhi8(FL_1)
- rcall _U(__subsf3)
- rcall _U(sqrt)
+ XCALL _U(__subsf3)
+ XCALL _U(sqrt)
; multiply
pop rB0
pop rB1
pop rB2
pop rB3
- rjmp _U(__mulsf3x)
+ XJMP _U(__mulsf3x)
#endif
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/fp_powser.S
===================================================================
--- trunk/avr-libc/libm/fplib/fp_powser.S 2015-03-18 06:53:54 UTC (rev
2472)
+++ trunk/avr-libc/libm/fplib/fp_powser.S 2015-04-09 08:10:22 UTC (rev
2473)
@@ -76,7 +76,7 @@
1: mov rcntr, rBE
.Loop: X_movw YL, ZL
- rcall _U(__mulsf3x)
+ XCALL _U(__mulsf3x)
X_movw ZL, YL
clt
@@ -89,7 +89,7 @@
brts 1b
X_movw YL, ZL
- rcall _U(__addsf3x)
+ XCALL _U(__addsf3x)
X_movw ZL, YL
X_movw rB0, rC0
Modified: trunk/avr-libc/libm/fplib/fp_powsodd.S
===================================================================
--- trunk/avr-libc/libm/fplib/fp_powsodd.S 2015-03-18 06:53:54 UTC (rev
2472)
+++ trunk/avr-libc/libm/fplib/fp_powsodd.S 2015-04-09 08:10:22 UTC (rev
2473)
@@ -56,15 +56,15 @@
X_movw rB0, rA0
X_movw rB2, rA2
- rcall _U(__mulsf3)
+ XCALL _U(__mulsf3)
pop ZL
pop ZH
- rcall _U(__fp_powser)
+ XCALL _U(__fp_powser)
pop rB0
pop rB1
pop rB2
pop rB3
- rjmp _U(__mulsf3)
+ XJMP _U(__mulsf3)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/fp_rempio2.S
===================================================================
--- trunk/avr-libc/libm/fplib/fp_rempio2.S 2015-03-18 06:53:54 UTC (rev
2472)
+++ trunk/avr-libc/libm/fplib/fp_rempio2.S 2015-04-09 08:10:22 UTC (rev
2473)
@@ -47,11 +47,11 @@
FUNCTION __fp_rempio2
-0: rjmp _U(__fp_nan)
+0: XJMP _U(__fp_nan)
ENTRY __fp_rempio2
; split and check finite
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs 0b ; only finite numbers are valid
clt ; ignore a sign
; init division result
@@ -98,7 +98,7 @@
brpl 4b
5: sbci rA3, hhi8((HI40_PIO2<<1) + 0x01000000) ; undo the subi 0x7f
- rjmp _U(__fp_mpack_finite)
+ XJMP _U(__fp_mpack_finite)
ENDFUNC
#if 0
Modified: trunk/avr-libc/libm/fplib/fp_sinus.S
===================================================================
--- trunk/avr-libc/libm/fplib/fp_sinus.S 2015-03-18 06:53:54 UTC (rev
2472)
+++ trunk/avr-libc/libm/fplib/fp_sinus.S 2015-04-09 08:10:22 UTC (rev
2473)
@@ -50,9 +50,9 @@
ldi rB1, hi8(HI40_PIO2)
ldi rB2, hlo8(HI40_PIO2)
ldi rB3, hhi8(HI40_PIO2 | 0x80000000)
- rcall _U(__addsf3x)
+ XCALL _U(__addsf3x)
-1: rcall _U(__fp_round)
+1: XCALL _U(__fp_round)
pop r0
inc r0
@@ -61,7 +61,7 @@
ldi ZL, lo8(.L_table)
ldi ZH, hi8(.L_table)
- rjmp _U(__fp_powsodd)
+ XJMP _U(__fp_powsodd)
ENDFUNC
PGM_SECTION
Modified: trunk/avr-libc/libm/fplib/fp_trunc.S
===================================================================
--- trunk/avr-libc/libm/fplib/fp_trunc.S 2015-03-18 06:53:54 UTC (rev
2472)
+++ trunk/avr-libc/libm/fplib/fp_trunc.S 2015-04-09 08:10:22 UTC (rev
2473)
@@ -57,7 +57,7 @@
*/
ENTRY __fp_trunc
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs 9f
; A is finite
ldi rAE, 126
Modified: trunk/avr-libc/libm/fplib/frexp.S
===================================================================
--- trunk/avr-libc/libm/fplib/frexp.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/frexp.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -64,7 +64,7 @@
st Z, r1
std Z+1, r1
1:
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs .L_nf ; return the same value
tst rA3
breq 3f
@@ -72,7 +72,7 @@
sbc rB3, rB3
sbrs rA2, 7
- rcall _U(__fp_norm2)
+ XCALL _U(__fp_norm2)
#if defined(__AVR_XMEGA__) && __AVR_XMEGA__
adiw ZL, 0
@@ -94,7 +94,7 @@
3: bld rA3, 7 ; restore sign
ret
.L_nf:
- rjmp _U(__fp_mpack)
+ XJMP _U(__fp_mpack)
ENDFUNC
#endif /* !defined(__AVR_TINY__) */
Modified: trunk/avr-libc/libm/fplib/gesf2.S
===================================================================
--- trunk/avr-libc/libm/fplib/gesf2.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/gesf2.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -52,7 +52,7 @@
*/
ENTRY __gesf2
ENTRY __gtsf2
- rcall _U(__fp_cmp)
+ XCALL _U(__fp_cmp)
brcc 1f
ldi ret_lo, -1
1: ret
Modified: trunk/avr-libc/libm/fplib/hypot.S
===================================================================
--- trunk/avr-libc/libm/fplib/hypot.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/hypot.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -71,25 +71,25 @@
FUNCTION hypot
-.L_nf: rcall _U(__fp_pscA)
+.L_nf: XCALL _U(__fp_pscA)
breq 1f ; hypot(Inf, *) --> Inf
- rcall _U(__fp_pscB)
+ XCALL _U(__fp_pscB)
breq 1f ; hypot(*, Inf) --> Inf
- rjmp _U(__fp_nan) ; NaN and finite, or both NaN
-1: rjmp _U(__fp_inf) ; T is 0 after __fp_split3()
+ XJMP _U(__fp_nan) ; NaN and finite, or both NaN
+1: XJMP _U(__fp_inf) ; T is 0 after __fp_split3()
.L_retB:
X_movw rA0, rB0
X_movw rA2, rB2
.L_retA:
- rjmp _U(__fp_mpack)
+ XJMP _U(__fp_mpack)
ENTRY hypot
; clear signs
andi rA3, 0x7f
andi rB3, 0x7f
; split and check args
- rcall _U(__fp_split3)
+ XCALL _U(__fp_split3)
brcs .L_nf
tst rA3
breq .L_retB
@@ -170,7 +170,7 @@
mov rBE, rAE
movw rB0, rA0
movw rB2, rA2
- rcall _U(__mulsf3_pse)
+ XCALL _U(__mulsf3_pse)
movw rB0, rC0
movw rB2, rC2
@@ -183,7 +183,7 @@
mov rAE, rBE
movw rA0, rB0
movw rA2, rB2
- rcall _U(__mulsf3_pse)
+ XCALL _U(__mulsf3_pse)
pop rBE
movw rB0, rC0
@@ -206,7 +206,7 @@
mov rB1, rA1
mov rB2, rA2
mov rB3, rA3
- rcall _U(__mulsf3_pse)
+ XCALL _U(__mulsf3_pse)
pop rB0
pop rB1
@@ -225,7 +225,7 @@
mov rA1, rB1
mov rA2, rB2
mov rA3, rB3
- rcall _U(__mulsf3_pse)
+ XCALL _U(__mulsf3_pse)
pop rBE
pop rB0
@@ -234,9 +234,9 @@
pop rB3
#endif /* ! __AVR_HAVE_MOVW__ */
- rcall _U(__addsf3x)
- rcall _U(__fp_round)
- rcall _U(sqrt)
+ XCALL _U(__addsf3x)
+ XCALL _U(__fp_round)
+ XCALL _U(sqrt)
; restore a scale
#if (-SCALE_SMALL & SCALE_BIG) == 0
@@ -248,5 +248,5 @@
clr exp_hi
sbrc exp_lo, 7
com exp_hi
- rjmp _U(ldexp)
+ XJMP _U(ldexp)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/inverse.S
===================================================================
--- trunk/avr-libc/libm/fplib/inverse.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/inverse.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -47,5 +47,5 @@
ldi rA2, hlo8(FL_1)
ldi rA3, hhi8(FL_1)
- rjmp _U(__divsf3)
+ XJMP _U(__divsf3)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/isinf.S
===================================================================
--- trunk/avr-libc/libm/fplib/isinf.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/isinf.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -43,7 +43,7 @@
*/
ENTRY isinf
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
ldi r24, 0
ldi r25, 0
brcc 2f ; normal value
Modified: trunk/avr-libc/libm/fplib/isnan.S
===================================================================
--- trunk/avr-libc/libm/fplib/isnan.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/isnan.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -41,7 +41,7 @@
*/
ENTRY isnan
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
ldi r24, 0
ldi r25, 0
breq 1f ; Z = 1 for Normal or Inf
Modified: trunk/avr-libc/libm/fplib/ldexp.S
===================================================================
--- trunk/avr-libc/libm/fplib/ldexp.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/ldexp.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -43,11 +43,11 @@
FUNCTION ldexp
-.L_inf: rjmp _U(__fp_inf)
-.L_pk: rjmp _U(__fp_mpack)
+.L_inf: XJMP _U(__fp_inf)
+.L_pk: XJMP _U(__fp_mpack)
ENTRY ldexp
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs .L_pk ; as is
tst rA3
breq .L_pk ; ldexp(0,*) is always 0
@@ -110,7 +110,7 @@
sbci rA3, -1
rjmp .L_pack
.L_zero:
- rjmp _U(__fp_szero)
+ XJMP _U(__fp_szero)
ENDFUNC
#endif /* !defined(__AVR_TINY__) */
Modified: trunk/avr-libc/libm/fplib/log.S
===================================================================
--- trunk/avr-libc/libm/fplib/log.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/log.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -50,13 +50,13 @@
FUNCTION log
.L_nf: brts .L_nan ; branch, if -Inf
- rjmp _U(__fp_mpack) ; pass as is: NaN --> NaN, +Inf --> +Inf
-.L_nan: rjmp _U(__fp_nan)
+ XJMP _U(__fp_mpack) ; pass as is: NaN --> NaN, +Inf --> +Inf
+.L_nan: XJMP _U(__fp_nan)
.L_min: set
- rjmp _U(__fp_inf)
+ XJMP _U(__fp_inf)
ENTRY log
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs .L_nf ; !isfinite(A)
tst rA3
breq .L_min ; -Inf
@@ -93,14 +93,14 @@
brlo 4f
adiw rC2, 1
andi rA2, ~0x80
-3: rcall _U(__addsf3)
+3: XCALL _U(__addsf3)
ldi ZL, lo8(.L_tlow)
ldi ZH, hi8(.L_tlow)
rjmp 5f
-4: rcall _U(__addsf3)
+4: XCALL _U(__addsf3)
ldi ZL, lo8(.L_thigh)
ldi ZH, hi8(.L_thigh)
-5: rcall _U(__fp_powser)
+5: XCALL _U(__fp_powser)
X_movw rC0, rA0
X_movw rA0, rC2 ; rA1.rA0 = exponent (possible negative)
@@ -113,12 +113,12 @@
rol rA1 ; C = rA1 sign bit
sbc rA2, rA2
sbc rA3, rA3
- rcall _U(__floatsisf)
+ XCALL _U(__floatsisf)
ldi rB0, lo8(LN_2)
ldi rB1, hi8(LN_2)
ldi rB2, hlo8(LN_2)
ldi rB3, hhi8(LN_2)
- rcall _U(__mulsf3x)
+ XCALL _U(__mulsf3x)
mov rBE, rCE
X_movw rB0, rC0
@@ -130,8 +130,8 @@
pop rC2
pop rC3
- rcall _U(__addsf3x)
- rjmp _U(__fp_round)
+ XCALL _U(__addsf3x)
+ XJMP _U(__fp_round)
ENDFUNC
PGM_SECTION
Modified: trunk/avr-libc/libm/fplib/log10.S
===================================================================
--- trunk/avr-libc/libm/fplib/log10.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/log10.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -39,10 +39,10 @@
#define INV_LN_10 0x3ede5bd9 /* 1.0/log(10.0) */
ENTRY log10
- rcall _U(log)
+ XCALL _U(log)
ldi rB0, lo8(INV_LN_10)
ldi rB1, hi8(INV_LN_10)
ldi rB2, hlo8(INV_LN_10)
ldi rB3, hhi8(INV_LN_10)
- rjmp _U(__mulsf3)
+ XJMP _U(__mulsf3)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/lrint.S
===================================================================
--- trunk/avr-libc/libm/fplib/lrint.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/lrint.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -51,7 +51,7 @@
*/
ENTRY lrint
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs .L_err
; A is finite
subi rA3, 126 ; exponent field of 0.5
@@ -128,9 +128,9 @@
6: ret
.L_err: set ; force return 0x80000000
- rjmp _U(__fp_szero)
+ XJMP _U(__fp_szero)
-.L_zr: rjmp _U(__fp_zero) ; return 0x00000000
+.L_zr: XJMP _U(__fp_zero) ; return 0x00000000
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/lround.S
===================================================================
--- trunk/avr-libc/libm/fplib/lround.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/lround.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -53,7 +53,7 @@
*/
ENTRY lround
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs .L_err
; A is finite
subi rA3, 126 ; exponent field of 0.5
@@ -116,9 +116,9 @@
6: ret
.L_err: set ; force return 0x80000000
- rjmp _U(__fp_szero)
+ XJMP _U(__fp_szero)
-.L_zr: rjmp _U(__fp_zero) ; return 0x00000000
+.L_zr: XJMP _U(__fp_zero) ; return 0x00000000
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/modf.S
===================================================================
--- trunk/avr-libc/libm/fplib/modf.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/modf.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -87,7 +87,7 @@
; write B
rcall .L_write
; return nonzero fraction: A - B
- rjmp _U(__subsf3)
+ XJMP _U(__subsf3)
; exponent too big: compare with smallest NaN (0x7f800001)
4: cpi rA0, 1
cpc rA1, r1
Modified: trunk/avr-libc/libm/fplib/mulsf3.S
===================================================================
--- trunk/avr-libc/libm/fplib/mulsf3.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/mulsf3.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -33,6 +33,6 @@
#include "asmdef.h"
ENTRY __mulsf3
- rcall _U(__mulsf3x)
- rjmp _U(__fp_round)
+ XCALL _U(__mulsf3x)
+ XJMP _U(__fp_round)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/mulsf3x.S
===================================================================
--- trunk/avr-libc/libm/fplib/mulsf3x.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/mulsf3x.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -41,19 +41,19 @@
#if defined(__AVR_ENHANCED__) && __AVR_ENHANCED__
-0: rcall _U(__fp_pscA)
+0: XCALL _U(__fp_pscA)
brcs 1f
- rcall _U(__fp_pscB)
+ XCALL _U(__fp_pscB)
brcs 1f
and rA3, rB3 ; one of args is 0xff
breq 1f
- rjmp _U(__fp_inf) ; nonzero * Inf --> Inf
-1: rjmp _U(__fp_nan) ; 0 * Inf --> NaN
+ XJMP _U(__fp_inf) ; nonzero * Inf --> Inf
+1: XJMP _U(__fp_nan) ; 0 * Inf --> NaN
2: clr r1 ; after 'mul rA3,rB3'
- rjmp _U(__fp_szero)
+ XJMP _U(__fp_szero)
ENTRY __mulsf3x
- rcall _U(__fp_split3)
+ XCALL _U(__fp_split3)
brcs 0b
ENTRY __mulsf3_pse ; post split entry
@@ -122,18 +122,18 @@
#else /* to __AVR_ENHANCED__ */
-0: rcall _U(__fp_pscA)
+0: XCALL _U(__fp_pscA)
brcs 1f
- rcall _U(__fp_pscB)
+ XCALL _U(__fp_pscB)
brcs 1f
and rA3, rB3 ; one of args is 0xff
breq 1f
- rjmp _U(__fp_inf) ; nonzero * Inf --> Inf
-1: rjmp _U(__fp_nan) ; 0 * Inf --> NaN
-2: rjmp _U(__fp_szero)
+ XJMP _U(__fp_inf) ; nonzero * Inf --> Inf
+1: XJMP _U(__fp_nan) ; 0 * Inf --> NaN
+2: XJMP _U(__fp_szero)
ENTRY __mulsf3x
- rcall _U(__fp_split3)
+ XCALL _U(__fp_split3)
brcs 0b
ENTRY __mulsf3_pse ; post split entry
@@ -228,9 +228,9 @@
11: cpi rA3, 254
cpc rB3, r1
brlo 15f
- rjmp _U(__fp_inf)
+ XJMP _U(__fp_inf)
; check lowest value of exponent to avoid long operation
-12: rjmp _U(__fp_szero)
+12: XJMP _U(__fp_szero)
13: cpi rB3, hi8(-24) ; here rB3 < 0
brlt 12b
cpi rA3, lo8(-24)
Modified: trunk/avr-libc/libm/fplib/pow.S
===================================================================
--- trunk/avr-libc/libm/fplib/pow.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/pow.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -190,7 +190,7 @@
.L_noint:
brts .L_pow
.L_nan:
- rjmp _U(__fp_nan)
+ XJMP _U(__fp_nan)
.L_one:
ldi rA0, lo8(FL_1)
ldi rA1, hi8(FL_1)
@@ -206,13 +206,13 @@
push rB2
push rB1
push rB0
- rcall _U(log)
+ XCALL _U(log)
pop rB0
pop rB1
pop rB2
pop rB3
- rcall _U(__mulsf3)
- rjmp _U(exp)
+ XCALL _U(__mulsf3)
+ XJMP _U(exp)
ENDFUNC
#endif /* !defined(__AVR_TINY__) */
Modified: trunk/avr-libc/libm/fplib/round.S
===================================================================
--- trunk/avr-libc/libm/fplib/round.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/round.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -49,7 +49,7 @@
This is a balance between space and speed.
*/
ENTRY round
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs .L_nf
; A is finite
cpi rA3, 126 ; exponent field of 0.5
@@ -86,10 +86,10 @@
ror rA0
inc rA3
; merge
-4: rjmp _U(__fp_mintl)
+4: XJMP _U(__fp_mintl)
-.L_nf: rjmp _U(__fp_mpack) ; pass nonfinite arg "as is"
-.L_zr: rjmp _U(__fp_szero) ; return +0.0/-0.0
+.L_nf: XJMP _U(__fp_mpack) ; pass nonfinite arg "as is"
+.L_zr: XJMP _U(__fp_szero) ; return +0.0/-0.0
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/sin.S
===================================================================
--- trunk/avr-libc/libm/fplib/sin.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/sin.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -40,11 +40,11 @@
ENTRY sin
push rA3
- rcall _U(__fp_rempio2)
+ XCALL _U(__fp_rempio2)
pop r0
sbrc r0, 7
subi ZL, -2
- rjmp _U(__fp_sinus)
+ XJMP _U(__fp_sinus)
ENDFUNC
#endif /* !defined(__AVR_TINY__) */
Modified: trunk/avr-libc/libm/fplib/sinh.S
===================================================================
--- trunk/avr-libc/libm/fplib/sinh.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/sinh.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -59,15 +59,15 @@
; for small x
ldi ZL, lo8(.L_table)
ldi ZH, hi8(.L_table)
- rcall _U(__fp_powsodd)
+ XCALL _U(__fp_powsodd)
rjmp 2f
; exp(-fabs(x)) // negative to exclude an extra inversion
1: ori rA3, 0x80
- rcall _U(exp)
+ XCALL _U(exp)
; exp(-fabs(x)) / 2
ldi exp_lo, lo8(-1)
ldi exp_hi, hi8(-1)
- rcall _U(ldexp)
+ XCALL _U(ldexp)
; save
push rA3
push rA2
@@ -76,14 +76,14 @@
; exp(fabs(x)) / 2
ldi exp_lo, lo8(2)
ldi exp_hi, hi8(2)
- rcall _U(ldexp)
- rcall _U(inverse)
+ XCALL _U(ldexp)
+ XCALL _U(inverse)
; result (in absolute value)
pop rB0
pop rB1
pop rB2
pop rB3
- rcall _U(__subsf3)
+ XCALL _U(__subsf3)
; set sign
2: pop r0
sbrc r0, 7
Modified: trunk/avr-libc/libm/fplib/sqrt.S
===================================================================
--- trunk/avr-libc/libm/fplib/sqrt.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/sqrt.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -42,13 +42,13 @@
.L_nf: brne .L_pk ; NaN, return as is
brtc .L_pk ; sqrt(+Inf) --> +Inf
-.L_nan: rjmp _U(__fp_nan)
-.L_pk: rjmp _U(__fp_mpack)
+.L_nan: XJMP _U(__fp_nan)
+.L_pk: XJMP _U(__fp_mpack)
ENTRY sqrt
ALIAS_ENTRY sqrtf
; split and check arg.
- rcall _U(__fp_splitA)
+ XCALL _U(__fp_splitA)
brcs .L_nf ; !isfinite(A)
tst rA3
breq .L_pk ; return 0 with original sign
@@ -58,7 +58,7 @@
sbc rB3, rB3 ; exponent high byte
; normalize, if A is subnormal
sbrs rA2, 7
- rcall _U(__fp_norm2)
+ XCALL _U(__fp_norm2)
#define msk0 r0
#define msk1 r1
Modified: trunk/avr-libc/libm/fplib/square.S
===================================================================
--- trunk/avr-libc/libm/fplib/square.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/square.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -40,5 +40,5 @@
X_movw rB0, rA0
X_movw rB2, rA2 ; B = A
- rjmp _U(__mulsf3) ; A * B
+ XJMP _U(__mulsf3) ; A * B
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/tan.S
===================================================================
--- trunk/avr-libc/libm/fplib/tan.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/tan.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -55,7 +55,7 @@
push rsign
mov rsign, rA3
; fmod by Pi/2
- rcall _U(__fp_rempio2)
+ XCALL _U(__fp_rempio2)
; save perion number
lsr ZL
ror rsign
@@ -81,16 +81,16 @@
ldi rBE, LO40_PIO2
ldi rB2, hlo8(HI40_PIO2)
ori rA3, 0x80
- rcall _U(__addsf3x)
- rcall _U(__fp_round)
+ XCALL _U(__addsf3x)
+ XCALL _U(__fp_round)
; calculate tan(A) for 0 <= A <= Pi/4
1: ldi ZL, lo8(.L_table)
ldi ZH, hi8(.L_table)
- rcall _U(__fp_powsodd)
+ XCALL _U(__fp_powsodd)
; correct result
lsl rsign
brvs 2f
- rcall _U(inverse)
+ XCALL _U(inverse)
2: lsl rsign
brvc 3f
subi rA3, 0x80
Modified: trunk/avr-libc/libm/fplib/tanh.S
===================================================================
--- trunk/avr-libc/libm/fplib/tanh.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/tanh.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -63,14 +63,14 @@
; for small x
ldi ZL, lo8(.L_table)
ldi ZH, hi8(.L_table)
- rcall _U(__fp_powsodd)
+ XCALL _U(__fp_powsodd)
rjmp 2f
; exp(-2*fabs(x))
1: ori rA3, 0x80
ldi exp_lo, lo8(1)
ldi exp_hi, hi8(1)
- rcall _U(ldexp) ; possible overflow -- no matter
- rcall _U(exp)
+ XCALL _U(ldexp) ; possible overflow -- no matter
+ XCALL _U(exp)
; save result and calculate 1 + exp(-2*fabs(x))
push rA3
push rA2
@@ -80,7 +80,7 @@
ldi rB1, hi8(FL_P1)
ldi rB2, hlo8(FL_P1)
ldi rB3, hhi8(FL_P1)
- rcall _U(__addsf3)
+ XCALL _U(__addsf3)
; save/restore and calculate 1 - exp(-2*fabs(x))
pop rB0
pop rB1
@@ -94,14 +94,14 @@
ldi rA1, hi8(FL_P1)
ldi rA2, hlo8(FL_P1)
ldi rA3, hhi8(FL_P1)
- rcall _U(__subsf3)
+ XCALL _U(__subsf3)
; restore
pop rB0
pop rB1
pop rB2
pop rB3
; divide
- rcall _U(__divsf3)
+ XCALL _U(__divsf3)
; sign
2: pop r0
sbrc r0, 7
Modified: trunk/avr-libc/libm/fplib/trunc.S
===================================================================
--- trunk/avr-libc/libm/fplib/trunc.S 2015-03-18 06:53:54 UTC (rev 2472)
+++ trunk/avr-libc/libm/fplib/trunc.S 2015-04-09 08:10:22 UTC (rev 2473)
@@ -42,11 +42,11 @@
*/
ENTRY trunc
- rcall _U(__fp_trunc)
+ XCALL _U(__fp_trunc)
brcs 2f ; pass nonfinite arg as is
cpi rA3, 127
brsh 1f ; fabs(A) >= 1.0
- rjmp _U(__fp_szero)
-1: rjmp _U(__fp_mintl)
-2: rjmp _U(__fp_mpack)
+ XJMP _U(__fp_szero)
+1: XJMP _U(__fp_mintl)
+2: XJMP _U(__fp_mpack)
ENDFUNC
Modified: trunk/avr-libc/libm/fplib/unordsf2.S
===================================================================
--- trunk/avr-libc/libm/fplib/unordsf2.S 2015-03-18 06:53:54 UTC (rev
2472)
+++ trunk/avr-libc/libm/fplib/unordsf2.S 2015-04-09 08:10:22 UTC (rev
2473)
@@ -39,7 +39,7 @@
#include "asmdef.h"
ENTRY __unordsf2
- rcall _U(__fp_cmp) ; return C=1, if any of args is NaN
+ XCALL _U(__fp_cmp) ; return C=1, if any of args is NaN
sbc r24, r24
sbc r25, r25
ret
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [avr-libc-commit] [2473] Fix for bug #33698: Replaced the use of rjmp/rcall ( to external function) instructions with XJMP/ XCALL macros that will expand to jmp/call if the architecture has it.,
Pitchumani <=