little-endian ppc64 support

This commit is contained in:
Anthony Green
2013-07-02 16:11:38 -04:00
parent 0f8690a84c
commit d3d099b40c
4 changed files with 95 additions and 4 deletions

View File

@@ -132,7 +132,11 @@ ffi_closure_LINUX64:
blr
nop
# case FFI_TYPE_INT
#ifdef __LITTLE_ENDIAN__
lwa %r3, 112+0(%r1)
#else
lwa %r3, 112+4(%r1)
#endif
mtlr %r0
addi %r1, %r1, 240
blr
@@ -152,33 +156,57 @@ ffi_closure_LINUX64:
lfd %f2, 112+8(%r1)
b .Lfinish
# case FFI_TYPE_UINT8
#ifdef __LITTLE_ENDIAN__
lbz %r3, 112+0(%r1)
#else
lbz %r3, 112+7(%r1)
#endif
mtlr %r0
addi %r1, %r1, 240
blr
# case FFI_TYPE_SINT8
#ifdef __LITTLE_ENDIAN__
lbz %r3, 112+0(%r1)
#else
lbz %r3, 112+7(%r1)
#endif
extsb %r3,%r3
mtlr %r0
b .Lfinish
# case FFI_TYPE_UINT16
#ifdef __LITTLE_ENDIAN__
lhz %r3, 112+0(%r1)
#else
lhz %r3, 112+6(%r1)
#endif
mtlr %r0
.Lfinish:
addi %r1, %r1, 240
blr
# case FFI_TYPE_SINT16
#ifdef __LITTLE_ENDIAN__
lha %r3, 112+0(%r1)
#else
lha %r3, 112+6(%r1)
#endif
mtlr %r0
addi %r1, %r1, 240
blr
# case FFI_TYPE_UINT32
#ifdef __LITTLE_ENDIAN__
lwz %r3, 112+0(%r1)
#else
lwz %r3, 112+4(%r1)
#endif
mtlr %r0
addi %r1, %r1, 240
blr
# case FFI_TYPE_SINT32
#ifdef __LITTLE_ENDIAN__
lwa %r3, 112+0(%r1)
#else
lwa %r3, 112+4(%r1)
#endif
mtlr %r0
addi %r1, %r1, 240
blr