On Tue, Dec 17, 2024 at 5:39 PM Linus Torvalds torvalds@linux-foundation.org wrote:
On Tue, 17 Dec 2024 at 17:26, Linus Torvalds torvalds@linux-foundation.org wrote:
Let me go separate that part out and maybe people can point out where I've done something silly.
Ok, that part I had actually already locally separated out better than some of my later patches in the series, so I sent it out as
https://lore.kernel.org/all/20241218013620.1679088-1-torvalds@linux-foundati...
lgtm. Since bstr_printf() converts 1/2/4 to unsigned long long num with a sign according to the format specifier it's good from the calling convention perspective. Doesn't matter here, but anyone passing 32-bit ints around needs to be aware of odd riscv abi promotion rules. x86-64 and arm64 zero extend 32-bit ints while riscv does sign extension when s32 and u32 are passed. Quote from the spec: "In RV64, 32-bit types, such as int, are stored in integer registers as proper sign extensions of their 32-bit values; that is, bits 63..31 are all equal. This restriction holds even for unsigned 32-bit types."