Thread with 31 posts
jump to expanded postdid you know that there are Android phones with 64-bit CPUs and 64-bit kernels but which will only run 32-bit apps? did you know they are actually very common, still manufactured in 2024 by major brands, and the bane of Android console emulator developers everywhere? it sucks.
the reason for this is memory consumption. on Android, all apps are forked from the zygote, a process that is always running and has a preloaded set of libraries (libc, graphics drivers, presumably also Android Runtime, etc). but to support 64-bit and 32-bit apps you need two.
so… if you have a phone with a 64-bit CPU (every modern Android phone) and a 64-bit kernel (probably also every modern Android phone), but less than 4GB RAM… supporting both 32-bit and 64-bit applications is kind of painful memory-wise, so they just… use a 32-bit only userland
now i can see how they came to that, but it's an extremely Google Moment honestly. Apple didn't want to play this game and gave 32-bit a sudden, swift, merciful death. Google are prolonging the agony for everyone. I can't stress enough how absurd “32-bit-only 64-bit device” is
@Kahanis i have much more respect for that choice! 64-bit with 32-bit pointers still lets you take full advantage of the hardware
@saagar huh, does ARMv8 (or later) have non-restartable instructions? Is this like vector stuff or something? I thought it was pretty clean in this regard in that you can always just ERET back after resolving the fault and the program will keep going.
Or, hmm, maybe things like non-FPAC IABORTs are non-restartable since PC is trashed and you can't (confidently) know if it's PAC or just a bogus address? Though if you're trying to recover from a PAC fail you kinda deserve it.
@saagar in theory, doesn't FEAT_Debugv8p2 solve this whole mess? ESR.ISS.WPT reports the matched watchpoint number for a trap and is mandatory. Though, they kinda ruin it with WPTV which can make WPT invalid, but that goes away in 8p9 where WPT cannot be invalid.
https://arm.jonpalmisc.com/2023_09_sysreg/AArch64-esr_el2#fieldset_0-24_0_24-23_18-1