Commits
aarch64-work
Name already in use
Commits on Sep 5, 2013
-
linux-user: Implement sendmmsg syscall
Glibc when built for newer kernels assumes that the sendmmsg syscall is available. Without it, dns resolution simply fails to work. Wrap the syscall with existing infrastructure so that we don't have a host dependency on sendmmsg. Signed-off-by: Alexander Graf <agraf@suse.de>
-
This was overwriting the destination register in-place, which is wrong when it overlaps with one of the inputs.
-
A 32bit TST insn (aka ANDS) was using the 64bit form to set the flags, hence it was regarding bit 63 as sign bit, not bit 31.
-
aarch64: Fix restarting syscalls
The syscall number isn't in x0, but in x8, and the environment could have been changed by the very syscall.
-
-
Print tid instead of pid, helps debugging with multiple threads.
-
Don't truncate paths to less than PATH_MAX
resolve_dirfd_path used a buffer of 1024 (< PATH_MAX) and readlink doesn't return errors when the buffer is too small (it silently truncates), so when the path was very long (> 1024) it got truncated and wrong files or error codes were returned. Using PATH_MAX as buffer size readlink won't truncate (if the name is larger it will correctly return ENAMETOOLONG, and the callers will do the right thing).
-
Fix getresuid, getresgid for !USE_UID16
This was hardcoding 16bit writes to the target.
-
-
linux-user: Don't use UID16 on arm64
Signed-off-by: Andreas Schwab <schwab@suse.de>
-
linux-user: add support for timerfd syscalls
Signed-off-by: Andreas Schwab <schwab@suse.de>
-
linux-user: add support for signalfd/signalfd4 syscalls
Signed-off-by: Andreas Schwab <schwab@suse.de>
-
But not the other two insn with this opcode (CNT and RBIT).
-
Hack to emulate data watchpoints
In user mode there are no data watchpoints, but I needed to desparately find all writes to a certain address, this is the result. Could be extended to something really usable.
-
This manually adds syscall restarting for ARM64, like it's done for ARM.
-
These used the wrong direction (ItoF), so effectively just produced garbage. We don't implement TIEAWAY rounding, and substitute this with TIEEVEN, so we still don't produce the correct value in all cases. But it fixes the gamma functions in python3.
-
Fix decoding of floating<->fixed conversions
The rmode field was shifted by one bit.
-
Fix implementation of USHLL/SSHLL
These ones write larger values than they read, so care must be taken to not overwrite future inputs, when in and out register are the same.
-
Only tested TBL (with python3 testsuite, test_codecs test).
-
The AdvSIMD three-same page needs an overhaul, when we use the neon helpers we currently do too much work for no reason.
-
When there are bits set in the mask outside what the kernels size is glibc throws EINVAL despite the fact that there are also bits set below that border. Manpage says EINVAL should only be given when there are _no_ possible bits set. Well, too bad, deal with it, just remember the old cpu mask.
-
TCG can't cope with uninitialized temps used as inputs, even when the whole sequence will overwrite the whole content. It silentely overwrites registers that still hold useful values. This fixes segfaults in python3-base testsuite.
-
Childs have just one thread, so no need to pin them. Normally the affinity is inherited by childs, even over execve.
-
Obviously we want to unlock what we locked, not something unrelated.
-
Implement vector SHL, QSHL, RSHL, QRSHL
This and the unsigned variants. The nonsaturating rounding helper in neon_helper (pre-existing) looks wrong, but for now don't bother.
-
-
This implements the shuffles in the AdvSIMD ZIP/UZP/TRN group. (Only ZIP1 tested in the libpng15 testsuite).
-
The aarch64 multiple loads/stores generate a heap of instructions. Add some ifdefed debug code, and increase the limit. We should use a helper or devise smaller sequences, sould be possible with interleaving and just 64bit loads.
-
Fix USHLL, and implement other SIMD shifts
This fixes USHLL (I think the size was wrong), and implements all other "normal" shifts from page 0x0f (in particular the {U,}SHR* variants, accumulating and rounding. It doesn't implement the narrow and saturating shifts, nor the fixed point conversions in that page. -
Accidentally this had a fallthrough to the switch remaining, leading to unknown insns.
-
Implement F_SETOWN_EX and F_GETOWN_EX for fcntl
This is required by newer glibc when they assume new kernels (it maps F_GETOWN to F_GETOWN_EX and disables fallback code).
-
Fix openat(fd, "") to return ENOENT
Entries with null name don't exist, but the openat append a prefix mechanism made it look like they do (they openened the directory).
-
-
The flags for comparing with NaNs ommitted the C flag (like also equality for normal numbers, but there it was more harmless, as usually the Z flag is tested).
-
softfloat: Fix float64_to_uint64
Values larger than MAX_INT, but below MAX_UINT need to be handled different.