Mike Kelly, le dim. 27 sept. 2026 13:24:35 +0100, a ecrit: > This applies to 32 bit and 64 bit discover_x86_cpu_type() > implementations. In both cases %ebx was not being preserved as is > required by the ABI.
Applied, thanks! > --- > i386/i386/locore.S | 2 ++ > x86_64/locore.S | 2 ++ > 2 files changed, 4 insertions(+) > > diff --git a/i386/i386/locore.S b/i386/i386/locore.S > index dc761991..9d2c702c 100644 > --- a/i386/i386/locore.S > +++ b/i386/i386/locore.S > @@ -1234,7 +1234,9 @@ ENTRY(discover_x86_cpu_type) > /* We are a modern enough processor to have the CPUID instruction; > use it to find out what we are. */ > 0: movl $1,%eax /* Fetch CPU type info ... */ > + pushl %ebx /* Preserve to comply with ABI */ > cpuid /* ... into eax */ > + popl %ebx > movl %ecx,cpu_features_ecx /* Keep a copy */ > movl %edx,cpu_features_edx /* Keep a copy */ > shrl $8,%eax /* Slide family bits down */ > diff --git a/x86_64/locore.S b/x86_64/locore.S > index dd35d2f8..31a57688 100644 > --- a/x86_64/locore.S > +++ b/x86_64/locore.S > @@ -1563,7 +1563,9 @@ ENTRY(discover_x86_cpu_type) > /* We are a modern enough processor to have the CPUID instruction; > use it to find out what we are. */ > movl $1,%eax /* Fetch CPU type info ... */ > + pushq %rbx /* Preserve to comply with ABI */ > cpuid /* ... into eax */ > + popq %rbx > movl %ecx,cpu_features_ecx /* Keep a copy */ > movl %edx,cpu_features_edx /* Keep a copy */ > shrl $8,%eax /* Slide family bits down */ > -- > 2.47.3 > >
