Index: linux/arch/arm/fastfpe/CPDT.S =================================================================== --- pre/linux/arch/arm/fastfpe/CPDT.S (revision 26) +++ post/linux/arch/arm/fastfpe/CPDT.S (working copy) @@ -18,7 +18,7 @@ .globl CPDT_load_single CPDT_load_single: - ldr r1,[r6] +__x1: ldrt r1,[r6] and r2,r1,#0x80000000 @ r2 = sign @@ -71,8 +71,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 @@ -128,9 +128,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,#0x80000000 bics r5,r1,#0x80000000 @@ -191,7 +191,7 @@ bic r2,r2,#0x80000000 orr r1,r1,r2,lsr#8 - str r1,[r6] +__x7: strt r1,[r6] b fastfpe_next CPDT_ss_rnd_ovfl: @@ -216,7 +216,7 @@ orr r1,r1,r2,lsr#8 CPDT_ss_zero: - str r1,[r6] +__x8: strt r1,[r6] b fastfpe_next CPDT_ss_e255: @@ -231,7 +231,7 @@ CPDT_ss_inf: orr r1,r1,#0x7f000000 orr r1,r1,#0x00800000 - str r1,[r6] +__x9: strt r1,[r6] b fastfpe_next /*---------------------------------------------------------------------------*/ @@ -261,7 +261,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_rnd_ovfl: @@ -290,12 +291,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: @@ -310,7 +313,8 @@ CPDT_sd_inf: orr r1,r1,#0x7f000000 orr r1,r1,#0x00f00000 - stmia r6,{r1,r2} +__x16: strt r1,[r6],#4 +__x17: strt r2,[r6] b fastfpe_next /*---------------------------------------------------------------------------*/ @@ -329,7 +333,9 @@ add r4,r4,#16384 orr r1,r1,r4 - stmia r6,{r1-r3} +__x18: strt r1,[r6],#4 +__x19: strt r2,[r6],#4 +__x20: strt r3,[r6] b fastfpe_next CPDT_se_e0: @@ -345,13 +351,17 @@ adds r4,r4,#1 bne CPDT_se_unnormalize - 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 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: @@ -366,7 +376,9 @@ CPDT_se_inf: 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 /*---------------------------------------------------------------------------*/ @@ -385,11 +397,11 @@ ldr r3,[r2,#4] bic r3,r3,#0x80000000 orr r3,r3,r4 - str r3,[r6],#4 +__x30: strt r3,[r6],#4 ldr r3,[r2,#8] - str r3,[r6],#4 +__x31: strt r3,[r6],#4 ldr r3,[r2,#12] - str r3,[r6],#4 +__x32: strt r3,[r6],#4 add r0,r0,#1<<12 and r0,r0,#7<<12 @@ -402,12 +414,12 @@ .globl CPDT_lfm CPDT_lfm: add r2,r10,r0,lsr#8 - ldr r4,[r6],#4 +__x33: ldrt r4,[r6],#4 and r3,r4,#0x80000000 str r3,[r2,#0] - ldr r3,[r6],#4 +__x34: ldrt r3,[r6],#4 str r3,[r2,#8] - ldr r3,[r6],#4 +__x35: ldrt r3,[r6],#4 str r3,[r2,#12] cmp r3,#0x80000000 @ does the exp indicate zero? @@ -428,3 +440,43 @@ b fastfpe_next /*---------------------------------------------------------------------------*/ +__cpdt_user_bad: + mov pc,r9 + +.section __ex_table, "a" + .long __x1, __cpdt_user_bad + .long __x2, __cpdt_user_bad + .long __x3, __cpdt_user_bad + .long __x4, __cpdt_user_bad + .long __x5, __cpdt_user_bad + .long __x6, __cpdt_user_bad + .long __x7, __cpdt_user_bad + .long __x8, __cpdt_user_bad + .long __x9, __cpdt_user_bad + .long __x10, __cpdt_user_bad + .long __x11, __cpdt_user_bad + .long __x12, __cpdt_user_bad + .long __x13, __cpdt_user_bad + .long __x14, __cpdt_user_bad + .long __x15, __cpdt_user_bad + .long __x16, __cpdt_user_bad + .long __x17, __cpdt_user_bad + .long __x18, __cpdt_user_bad + .long __x19, __cpdt_user_bad + .long __x20, __cpdt_user_bad + .long __x21, __cpdt_user_bad + .long __x22, __cpdt_user_bad + .long __x23, __cpdt_user_bad + .long __x24, __cpdt_user_bad + .long __x25, __cpdt_user_bad + .long __x26, __cpdt_user_bad + .long __x27, __cpdt_user_bad + .long __x28, __cpdt_user_bad + .long __x29, __cpdt_user_bad + .long __x30, __cpdt_user_bad + .long __x31, __cpdt_user_bad + .long __x32, __cpdt_user_bad + .long __x33, __cpdt_user_bad + .long __x34, __cpdt_user_bad + .long __x35, __cpdt_user_bad +.previous