Opened on 08/06/15 at 02:47:12
Last modified on 02/15/17 at 13:37:51
#2386 assigned defect
[bsps/mvme3100] Incorrect / sub-optimal CFLAGS
Reported by: | Nick Withers | Owned by: | Needs Funding |
---|---|---|---|
Priority: | normal | Milestone: | Indefinite |
Component: | bsps | Version: | 4.11 |
Severity: | normal | Keywords: | |
Cc: | Blocked By: | ||
Blocking: |
Description
According to Sebastian Huber in #2369, A BSP for the e500 should use the "-mcpu=8540 -meabi -msdata=sysv -fno-common" options, and not the current -mcpu=powerpc -msoft-float -D__ppc_generic CFLAGS (see c/src/lib/libbsp/powerpc/mvme3100/make/custom/mvme3100.cfg).
That doesn't appear to work, however: Loading e.g., samples/hello.ralf causes the board to reset some time soon after bsp_start() and before Init(). Trying to get GDB to talk to the board with hello.exe loaded doesn't work:
Reading symbols from powerpc-rtems4.11/c/mvme3100/testsuites/samples/hello/hello.exe...done. (gdb) target remote bdi:2159 Remote debugging using bdi:2159 Remote 'g' packet reply is too long: 431bde83011100080000000013de4352061d4cda000090000000000000001d7c0000ebff010c000000003c0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000001091a48000000010000001a00000002e102500000000140005b89ac00002710fab22b9200000000431bde83000000000111000800000000000000000000000013de435200000000061d4cda000000000000900000000000000000000000000000001d7c000000000000ebff00000000010c00000000000000003c000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001091a480000000000000001000000000000001a000000000000000200000000e1025000000000000000014000000000005b89ac000000000000271000000000fab22b9201021be8000090004000002801021be001039a2820000000deadbeef (gdb)
...but as far as I know that may just be because the BDI's not set up correctly.
I'm currently running with these changes, which appears to work fine (though does it end up being any different than the previous "generic powerpc" CFLAGS?):
diff --git a/c/src/lib/libbsp/powerpc/mvme3100/make/custom/mvme3100.cfg b/c/src/lib/libbsp/powerpc/mvme3100/make/custom/mvme3100.cfg index ddd6d23..d34b41b 100644 --- a/c/src/lib/libbsp/powerpc/mvme3100/make/custom/mvme3100.cfg +++ b/c/src/lib/libbsp/powerpc/mvme3100/make/custom/mvme3100.cfg @@ -10,7 +10,7 @@ RTEMS_CPU_MODEL=e500 # This contains the compiler options necessary to select the CPU model # and (hopefully) optimize for it. -CPU_CFLAGS = -mcpu=powerpc -msoft-float -D__ppc_generic +CPU_CFLAGS = -mcpu=8540 -meabi -msdata=sysv -msoft-float -mno-spe -fno-common # optimize flag: typically -O2 CFLAGS_OPTIMIZE_V = -O2 -g diff --git a/c/src/lib/libcpu/powerpc/rtems/powerpc/powerpc.h b/c/src/lib/libcpu/powerpc/rtems/powerpc/powerpc.h index 8934585..0c3a6ff 100644 --- a/c/src/lib/libcpu/powerpc/rtems/powerpc/powerpc.h +++ b/c/src/lib/libcpu/powerpc/rtems/powerpc/powerpc.h @@ -276,6 +276,10 @@ extern "C" { #define PPC_INTERRUPT_MAX 125 #define PPC_USE_MULTIPLE 1 +#elif defined(ppc8540) + +#define PPC_HAS_RFCI 1 // E500CORERM.pdf:1-9 + #elif defined(__ppc_generic) #else
Presumably -msoft-float -mno-spe isn't great for applications that want to use single-precision floating-point?
Also, I need to spend more time on c/src/lib/libcpu/powerpc/rtems/powerpc/powerpc.h with the literature.
Change History (2)
comment:1 Changed on 01/26/17 at 07:16:00 by Sebastian Huber
Milestone: | 4.11.1 → 4.11.2 |
---|
comment:2 Changed on 02/15/17 at 13:37:51 by Sebastian Huber
Milestone: | 4.11.2 → Indefinite |
---|---|
Owner: | set to Needs Funding |
Status: | new → assigned |