fix passing of 64-bit syscall arguments on microblaze
authorRich Felker <dalias@aerifal.cx>
Sun, 5 May 2019 14:52:41 +0000 (10:52 -0400)
committerRich Felker <dalias@aerifal.cx>
Sun, 5 May 2019 14:52:41 +0000 (10:52 -0400)
commit28198ac3afd33fb9017ad1283eb794e3a77832f9
tree8e54213cd9994b8ddfad11afc402771e5c0319c5
parent2df8b1d806c3e1fd4b6b10e13794855a93fe6628
fix passing of 64-bit syscall arguments on microblaze

this has been wrong since the beginning of the microblaze port: the
syscall ABI for microblaze does not align 64-bit arguments on even
register boundaries. commit 788d5e24ca19c6291cebd8d1ad5b5ed6abf42665
exposed the problem by introducing references to a nonexistent
__syscall7. the ABI is not documented well anywhere, but I was able to
confirm against both strace source and glibc source that microblaze is
not using the alignment.

per the syscall(2) man page, posix_fadvise, ftruncate, pread, pwrite,
readahead, sync_file_range, and truncate were all affected and either
did not work at all, or only worked by chance, e.g. when the affected
argument slots were all zero.
arch/microblaze/syscall_arch.h