Stefan Nickl | 2 Feb 2004 10:49
Favicon

gcc for ppc/predefined macros


I just had to find out very painfully that
my cross-gcc-3.3.2 doesn't have __powerpc__
as a predefined macro anymore:

(SuSE-built-) gcc 2.95.3:
.../powerpc-linux-cpp -dM ~/foo.h |grep -i pc

#define powerpc 1
#define __PPC__ 1
#define PPC 1
#define _ARCH_PPC 1
#define __PPC 1
#define __powerpc__ 1
#define __powerpc 1

(gentoo-crossdev-build-) gcc 3.3.2:
.../powerpc-unknown-eabi-cpp -dM ~/foo.h |grep -i pc

#define _ARCH_PPC 1
#define __PPC 1
#define PPC 1
#define __PPC__ 1

The kernel relies on __powerpc__ in some places,
in fact, the serial console won't work anymore
since the LCR gets setup incorrectly in
serial_console_setup located in serial.c.

The workaround is easy,
(Continue reading)

Tom Rini | 2 Feb 2004 19:49

Re: gcc for ppc/predefined macros


On Mon, Feb 02, 2004 at 10:49:01AM +0100, Stefan Nickl wrote:

>
> I just had to find out very painfully that
> my cross-gcc-3.3.2 doesn't have __powerpc__
> as a predefined macro anymore:
>
> (SuSE-built-) gcc 2.95.3:
> .../powerpc-linux-cpp -dM ~/foo.h |grep -i pc
>
> #define powerpc 1
> #define __PPC__ 1
> #define PPC 1
> #define _ARCH_PPC 1
> #define __PPC 1
> #define __powerpc__ 1
> #define __powerpc 1
>
>
> (gentoo-crossdev-build-) gcc 3.3.2:
> .../powerpc-unknown-eabi-cpp -dM ~/foo.h |grep -i pc
>
> #define _ARCH_PPC 1
> #define __PPC 1
> #define PPC 1
> #define __PPC__ 1
>
> The kernel relies on __powerpc__ in some places,
> in fact, the serial console won't work anymore
(Continue reading)

Stefan Nickl | 5 Feb 2004 10:22
Favicon

Re: gcc for ppc/predefined macros


> I belive the problem is that you did not compile your cross-compiler
> correctly:
> $ ppc_7xx-cpp -dM /tmp/foo.h  | grep pc
> #define __powerpc__ 1
> #define __powerpc 1
> #define powerpc 1
>
> Make sure you do --target=powerpc-foo-linux when configuring gcc.

Well, I have --target=powerpc-unknown-eabi, because I thought
-linux is only needed for a full compiler with libc and all that.

But you are probably right, the process for a cross-compiler
described on penguinppc.org also has --target=powerpc-linux.
Anyhow, except for this #define, the kernel compiled with the
--target=powerpc-unknown-eabi gcc seems to work fine...

--
Stefan Nickl
Project Engineering
Kontron Modular Computers
Sudetenstr. 7
D-87600 Kaufbeuren
Phone ++49/8341/803-294

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/


Gmane