#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 Jan 26, 2017 at 7:16:00 AM by Sebastian Huber

Milestone: 4.11.14.11.2

comment:2 Changed on Feb 15, 2017 at 1:37:51 PM by Sebastian Huber

Milestone: 4.11.2Indefinite
Owner: set to Needs Funding
Status: newassigned
Note: See TracTickets for help on using tickets.