--- pre/linux/arch/arm/fastfpe/CPDT.S 2006-04-23 13:14:10.000000000 +0900 +++ post/linux/arch/arm/fastfpe/CPDT.S- 2006-04-23 13:09:28.000000000 +0900 @@ -17,7 +17,7 @@ .globl CPDT_load_single CPDT_load_single: - ldr r1,[r6] +__x1: ldrt r1,[r6] and r2,r1,#0x80000000 @ r2 = sign @@ -72,8 +72,8 @@ .globl CPDT_load_double CPDT_load_double: - ldr r1,[r6] - ldr r6,[r6,#4] +__x2: ldrt r1,[r6],#4 +__x3: ldrt r6,[r6] and r2,r1,#0x80000000 @ r2 = sign @@ -131,9 +131,9 @@ .globl CPDT_load_extended CPDT_load_extended: - ldr r1,[r6] - ldr r3,[r6,#4] - ldr r4,[r6,#8] +__x4: ldrt r1,[r6],#4 +__x5: ldrt r3,[r6],#4 +__x6: ldrt r4,[r6] and r2,r1,#0x8000 mov r2,r2,lsl#16 @@ -188,7 +188,7 @@ bic r2,r2,#0x80000000 orr r1,r1,r2,lsr#8 - str r1,[r6] +__x7: strt r1,[r6] b fastfpe_next CPDT_ss_e0: @@ -202,7 +202,7 @@ orr r1,r1,r2,lsr#8 CPDT_ss_zero: - str r1,[r6] +__x8: strt r1,[r6] b fastfpe_next CPDT_ss_e255: @@ -216,7 +216,7 @@ bne CPDT_ss_nan_special // NaN must not become Inf CPDT_ss_nan_back: orr r1,r1,r2,lsr#8 - str r1,[r6] +__x9: strt r1,[r6] b fastfpe_next CPDT_ss_nan_special: @@ -246,7 +246,8 @@ mov r2,r2,lsl#21 orr r2,r2,r3,lsr#11 - stmia r6,{r1,r2} +__x10: strt r1,[r6],#4 +__x11: strt r2,[r6] b fastfpe_next CPDT_sd_e0: @@ -266,12 +267,14 @@ mov r2,r2,lsl#21 orr r2,r2,r3,lsr#11 - stmia r6,{r1,r2} +__x12: strt r1,[r6],#4 +__x13: strt r2,[r6] b fastfpe_next CPDT_sd_zero: mov r2,#0 - stmia r6,{r1,r2} +__x14: strt r1,[r6],#4 +__x15: strt r2,[r6] b fastfpe_next CPDT_sd_e2047: @@ -286,7 +289,8 @@ orr r1,r1,r2,lsr#11 mov r2,r2,lsl#21 orr r2,r2,r3,lsr#11 - stmia r6,{r1,r2} +__x16: strt r1,[r6],#4 +__x17: strt r2,[r6] b fastfpe_next CPDT_sd_nan_special: @@ -312,7 +316,9 @@ add r4,r4,#16384 orr r1,r4,r1,lsr#16 - stmia r6,{r1-r3} +__x18: strt r1,[r6],#4 +__x19: strt r2,[r6],#4 +__x20: strt r3,[r6] b fastfpe_next CPDT_se_e0: @@ -329,14 +335,18 @@ bne CPDT_se_unnormalize mov r1,r1,lsr#16 - stmia r6,{r1-r3} +__x21: strt r1,[r6],#4 +__x22: strt r2,[r6],#4 +__x23: strt r3,[r6] b fastfpe_next CPDT_se_zero: mov r1,r1,lsr#16 mov r2,#0 mov r3,#0 - stmia r6,{r1-r3} +__x24: strt r1,[r6],#4 +__x25: strt r2,[r6],#4 +__x26: strt r3,[r6] b fastfpe_next CPDT_se_e32767: @@ -346,7 +356,9 @@ mov r1,r1,lsr#16 orr r1,r1,#0x00007f00 orr r1,r1,#0x000000ff - stmia r6,{r1-r3} +__x27: strt r1,[r6],#4 +__x28: strt r2,[r6],#4 +__x29: strt r3,[r6] b fastfpe_next /*---------------------------------------------------------------------------*/ @@ -367,7 +379,9 @@ ldmia r7,{r2-r5} bic r3,r3,#0x80000000 orr r3,r3,r2 - stmia r6!,{r3-r5} +__x30: strt r3,[r6],#4 +__x31: strt r4,[r6],#4 +__x32: strt r5,[r6],#4 subs r1,r1,#1 bne CPDT_sfm_loop @@ -381,7 +395,9 @@ and r0,r0,#7<<12 CPDT_lfm: add r7,r10,r0,lsr#8 - ldmia r6!,{r3-r5} +__x33: ldrt r3,[r6],#4 +__x34: ldrt r4,[r6],#4 +__x35: ldrt r5,[r6],#4 and r2,r3,#0x80000000 cmp r5,#0x80000000 // check if the number was 0 cmpne r5,#0x7fffffff // or inf/NaN @@ -394,3 +410,47 @@ b fastfpe_next /*---------------------------------------------------------------------------*/ + + .section .fixup,"ax" + .align +__f1: + mov pc,r9 + .previous + .section __ex_table,"a" + .align 3 + .long __x1,__f1 + .long __x2,__f1 + .long __x3,__f1 + .long __x4,__f1 + .long __x5,__f1 + .long __x6,__f1 + .long __x7,__f1 + .long __x8,__f1 + .long __x9,__f1 + .long __x10,__f1 + .long __x11,__f1 + .long __x12,__f1 + .long __x13,__f1 + .long __x14,__f1 + .long __x15,__f1 + .long __x16,__f1 + .long __x17,__f1 + .long __x18,__f1 + .long __x19,__f1 + .long __x20,__f1 + .long __x21,__f1 + .long __x22,__f1 + .long __x23,__f1 + .long __x24,__f1 + .long __x25,__f1 + .long __x26,__f1 + .long __x27,__f1 + .long __x28,__f1 + .long __x29,__f1 + .long __x30,__f1 + .long __x31,__f1 + .long __x32,__f1 + .long __x33,__f1 + .long __x34,__f1 + .long __x35,__f1 + .previous