Naive swap_float/double. Not sure sizeof(double) is 8 on m68k...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22664 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -60,57 +60,16 @@ FUNCTION(__swap_int64):
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* float __swap_float(float value)
|
/* float __swap_float(float value)
|
||||||
* f1
|
|
||||||
*/
|
*/
|
||||||
FUNCTION(__swap_float):
|
FUNCTION(__swap_float):
|
||||||
XXX: TODO
|
jmp __swap_int32
|
||||||
// push a stack frame
|
//rts
|
||||||
stwu %r1, -32(%r1)
|
|
||||||
mflr %r0
|
|
||||||
stw %r0, 36(%r1)
|
|
||||||
|
|
||||||
// %f1 -> %r3
|
|
||||||
stfs %f1, 20(%r1)
|
|
||||||
lwz %r3, 20(%r1)
|
|
||||||
|
|
||||||
// let __swap_int32 convert %r3
|
|
||||||
bl __swap_int32
|
|
||||||
|
|
||||||
// %r3 -> %f1
|
|
||||||
stw %r3, 20(%r1)
|
|
||||||
lfs %f1, 20(%r1)
|
|
||||||
|
|
||||||
// pop the stack frame
|
|
||||||
lwz %r0, 36(%r1)
|
|
||||||
mtlr %r0
|
|
||||||
addi %r1, %r1, 32
|
|
||||||
blr
|
|
||||||
|
|
||||||
/* double __swap_double(double value)
|
/* double __swap_double(double value)
|
||||||
* f1
|
|
||||||
*/
|
*/
|
||||||
FUNCTION(__swap_double):
|
FUNCTION(__swap_double):
|
||||||
XXX: TODO
|
jmp __swap_int32
|
||||||
// push a stack frame
|
//rts
|
||||||
stwu %r1, -32(%r1)
|
//XXX:check sizeof(double)
|
||||||
mflr %r0
|
|
||||||
stw %r0, 36(%r1)
|
|
||||||
|
|
||||||
// %f1 -> (%r3:%r4)
|
|
||||||
stfd %f1, 20(%r1)
|
|
||||||
lwz %r3, 20(%r1)
|
|
||||||
lwz %r4, 24(%r1)
|
|
||||||
|
|
||||||
// let __swap_int64 convert %r3:%r4
|
|
||||||
bl __swap_int64
|
|
||||||
|
|
||||||
// (%r3:%r4) -> %f1
|
|
||||||
stw %r3, 20(%r1)
|
|
||||||
stw %r4, 24(%r1)
|
|
||||||
lfd %f1, 20(%r1)
|
|
||||||
|
|
||||||
// pop the stack frame
|
|
||||||
lwz %r0, 36(%r1)
|
|
||||||
mtlr %r0
|
|
||||||
addi %r1, %r1, 32
|
|
||||||
blr
|
|
||||||
|
|||||||
Reference in New Issue
Block a user