equal
deleted
inserted
replaced
948 } |
948 } |
949 |
949 |
950 #ifndef __KERNEL_MODE__ |
950 #ifndef __KERNEL_MODE__ |
951 EXPORT_C __NAKED__ void RArrayBase::HeapSortSigned() |
951 EXPORT_C __NAKED__ void RArrayBase::HeapSortSigned() |
952 { |
952 { |
953 __EH_FNSTART |
953 // __EH_FNSTART |
954 #ifdef __EABI__ |
954 #ifdef __EABI__ |
955 // need sp aligned correctly |
955 // need sp aligned correctly |
956 asm("stmfd sp!, {r3-r11,lr} "); |
956 asm("stmfd sp!, {r3-r11,lr} "); |
957 __EH_FRAME_ADDRESS(sp,4) |
957 __EH_FRAME_ADDRESS(sp,4) |
958 __EH_FRAME_PUSH2(r4-r11,lr) |
958 __EH_FRAME_PUSH2(r4-r11,lr) |
1037 asm("mov r1, sp "); |
1037 asm("mov r1, sp "); |
1038 asm("mov r2, r10 "); |
1038 asm("mov r2, r10 "); |
1039 asm("bl wordmove "); // entry[0]=[sp] |
1039 asm("bl wordmove "); // entry[0]=[sp] |
1040 asm("add sp, sp, r10 "); // free temporary stack space |
1040 asm("add sp, sp, r10 "); // free temporary stack space |
1041 __JUMP(,r7); |
1041 __JUMP(,r7); |
1042 __EH_FNEND |
1042 // __EH_FNEND |
1043 } |
1043 } |
1044 |
1044 |
1045 EXPORT_C __NAKED__ void RArrayBase::HeapSortUnsigned() |
1045 EXPORT_C __NAKED__ void RArrayBase::HeapSortUnsigned() |
1046 { |
1046 { |
1047 __EH_FNSTART |
1047 // __EH_FNSTART |
1048 #ifdef __EABI__ |
1048 #ifdef __EABI__ |
1049 // need sp aligned correctly |
1049 // need sp aligned correctly |
1050 asm("stmfd sp!, {r3-r11,lr} "); |
1050 asm("stmfd sp!, {r3-r11,lr} "); |
1051 __EH_FRAME_ADDRESS(sp,4) |
1051 __EH_FRAME_ADDRESS(sp,4) |
1052 __EH_FRAME_PUSH2(r4-r11,lr) |
1052 __EH_FRAME_PUSH2(r4-r11,lr) |
1131 asm("mov r1, sp "); |
1131 asm("mov r1, sp "); |
1132 asm("mov r2, r10 "); |
1132 asm("mov r2, r10 "); |
1133 asm("bl wordmove "); // entry[0]=[sp] |
1133 asm("bl wordmove "); // entry[0]=[sp] |
1134 asm("add sp, sp, r10 "); // free temporary stack space |
1134 asm("add sp, sp, r10 "); // free temporary stack space |
1135 __JUMP(,r7); |
1135 __JUMP(,r7); |
1136 __EH_FNEND |
1136 // __EH_FNEND |
1137 } |
1137 } |
1138 |
1138 |
1139 EXPORT_C __NAKED__ void RArrayBase::HeapSort(TGeneralLinearOrder anOrder) |
1139 EXPORT_C __NAKED__ void RArrayBase::HeapSort(TGeneralLinearOrder anOrder) |
1140 { |
1140 { |
1141 __EH_FNSTART |
1141 // __EH_FNSTART |
1142 #ifdef __EABI__ |
1142 #ifdef __EABI__ |
1143 // need sp aligned correctly |
1143 // need sp aligned correctly |
1144 asm("stmfd sp!, {r3-r11,lr} "); |
1144 asm("stmfd sp!, {r3-r11,lr} "); |
1145 __EH_FRAME_ADDRESS(sp,4) |
1145 __EH_FRAME_ADDRESS(sp,4) |
1146 __EH_FRAME_PUSH2(r4-r11,lr) |
1146 __EH_FRAME_PUSH2(r4-r11,lr) |
1228 asm("mov r1, sp "); |
1228 asm("mov r1, sp "); |
1229 asm("mov r2, r10 "); |
1229 asm("mov r2, r10 "); |
1230 asm("bl wordmove "); // entry[0]=[sp] |
1230 asm("bl wordmove "); // entry[0]=[sp] |
1231 asm("ldr sp, [sp, r10] "); // restore stack pointer, freeing temporary stack space |
1231 asm("ldr sp, [sp, r10] "); // restore stack pointer, freeing temporary stack space |
1232 __POPRET(""); |
1232 __POPRET(""); |
1233 __EH_FNEND |
1233 // __EH_FNEND |
1234 } |
1234 } |
1235 #endif // __KERNEL_MODE__ |
1235 #endif // __KERNEL_MODE__ |
1236 #endif // __ARRAY_MACHINE_CODED__ |
1236 #endif // __ARRAY_MACHINE_CODED__ |