[PATCH 6/6] perf_counter: tools: Makefile tweaks for 64-bit powerpc

Ingo Molnar mingo at elte.hu
Wed Jun 17 23:28:39 EST 2009

* Paul Mackerras <paulus at samba.org> wrote:

> Ingo Molnar writes:
> > ah, it does this:
> > 
> > /*
> >  * This is here because we used to use l64 for 64bit powerpc
> >  * and we don't want to impact user mode with our change to ll64
> >  * in the kernel.
> >  */
> > #if defined(__powerpc64__) && !defined(__KERNEL__)
> > # include <asm-generic/int-l64.h>
> > #else
> > # include <asm-generic/int-ll64.h>
> > #endif
> > 
> > That's crappy really.
> We were concerned that changing the userland-visible type of __u64 
> from unsigned long to unsigned long long, etc., would be breaking 
> the ABI, even if only in a small way - I thought it could possibly 
> change C++ mangled function names, for instance, and it would 
> cause fresh compile warnings on existing user code that prints 
> __u64 with %lx, which has always been the correct thing to do on 
> ppc64.
> A counter-argument would be, I guess, that __u64 et al. are purely 
> for use in describing the kernel/user interface, so we have a 
> little more latitude than with the type of e.g. u_int64_t.  I 
> dunno.  I don't recall getting much of an answer from the glibc 
> guys about what they thought of the idea of changing it.
> Anyway, of the 64-bit architectures, alpha, ia64, and mips64 also 
> have __u64 as unsigned long in userspace, so this issue will still 
> crop up even if we change it on powerpc.

Having crap elsewhere is no reason to spread it further really. We 
need consistent types. Can we define __KERNEL__ perhaps to get to 
the real types?


More information about the Linuxppc-dev mailing list