little-endian ppc64 support
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user