fix indirect unsigned return for arm32le
original commit: 158ffeb1db8f425391193f2a205594e3f1a60e99
This commit is contained in:
parent
237f0e4fa4
commit
cb4c035a9e
|
@ -3239,8 +3239,12 @@
|
|||
[else
|
||||
(values (lambda ()
|
||||
(case ($ftd-size ftd)
|
||||
[(1) `(set! ,%Cretval (inline ,(make-info-load 'integer-8 #f) ,%load ,%sp ,%zero (immediate ,return-stack-offset)))]
|
||||
[(2) `(set! ,%Cretval (inline ,(make-info-load 'integer-16 #f) ,%load ,%sp ,%zero (immediate ,return-stack-offset)))]
|
||||
[(1)
|
||||
(let ([rep (if ($ftd-unsigned? ftd) 'unsigned-8 'integer-8)])
|
||||
`(set! ,%Cretval (inline ,(make-info-load rep #f) ,%load ,%sp ,%zero (immediate ,return-stack-offset))))]
|
||||
[(2)
|
||||
(let ([rep (if ($ftd-unsigned? ftd) 'unsigned-16 'integer-16)])
|
||||
`(set! ,%Cretval (inline ,(make-info-load rep #f) ,%load ,%sp ,%zero (immediate ,return-stack-offset))))]
|
||||
[else `(set! ,%Cretval ,(%mref ,%sp ,return-stack-offset))]))
|
||||
(list %Cretval)
|
||||
4)])]))]
|
||||
|
|
|
@ -122,7 +122,7 @@ notes:
|
|||
big-endian machines, the first field occupies the high-order bits,
|
||||
with each subsequent field just below the preceding field.
|
||||
|
||||
- ftype pointers are records encapsulating an ftype descriptor
|
||||
- ftyp<e pointers are records encapsulating an ftype descriptor
|
||||
(ftd) along with the address of the foreign object, except that
|
||||
pointers of type void* are just addresses. the encapsulated
|
||||
ftd is used to verify the applicability of an ftype-&ref,
|
||||
|
@ -957,6 +957,12 @@ ftype operators:
|
|||
(or (ftd-struct? x)
|
||||
(ftd-union? x)
|
||||
(ftd-array? x))))
|
||||
(set! $ftd-unsigned?
|
||||
(lambda (x)
|
||||
(and (ftd-base? x)
|
||||
(case (ftd-base-type x)
|
||||
[(unsigned-8 unsigned-16 unsigned-32 unsigned-64) #t]
|
||||
[else #f]))))
|
||||
(set! $ftd->members
|
||||
(lambda (x)
|
||||
;; Currently used for x86_64 and arm32 ABI: Returns a list of
|
||||
|
|
|
@ -2098,6 +2098,7 @@
|
|||
($ftd-atomic-category [flags single-valued])
|
||||
($ftd-compound? [sig [(sub-ptr) -> (boolean)]] [flags discard])
|
||||
($ftd-size [flags single-valued])
|
||||
($ftd-unsigned? [flags single-valued])
|
||||
($ftd->members [flags single-valued])
|
||||
($ftype-guardian-oops [flags])
|
||||
($ftype-pointer? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable])
|
||||
|
|
Loading…
Reference in New Issue
Block a user