summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-15 09:16:13 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-15 09:20:28 +0200
commit127c3ea527658b140dac74d6b3ca72e3e9b19e12 (patch)
tree029bd92471a75769fa204243dae8c02723220760
parentbsps/riscv: Use far jump to boot_card() (diff)
downloadrtems-127c3ea527658b140dac74d6b3ca72e3e9b19e12.tar.bz2
build: Fix i386/pc386 with SMP enabled
Update #3818.
-rw-r--r--spec/build/bsps/i386/pc386/grp.yml2
-rw-r--r--spec/build/bsps/i386/pc386/objsmp.yml2
-rw-r--r--spec/build/bsps/i386/pc386/objsmpstart.yml49
-rw-r--r--spec/build/bsps/optobjcopy.yml16
4 files changed, 68 insertions, 1 deletions
diff --git a/spec/build/bsps/i386/pc386/grp.yml b/spec/build/bsps/i386/pc386/grp.yml
index 03aa8cf46e..1127fc26d4 100644
--- a/spec/build/bsps/i386/pc386/grp.yml
+++ b/spec/build/bsps/i386/pc386/grp.yml
@@ -20,6 +20,8 @@ links:
- role: build-dependency
uid: objsmp
- role: build-dependency
+ uid: objsmpstart
+- role: build-dependency
uid: objvga
- role: build-dependency
uid: optvberm
diff --git a/spec/build/bsps/i386/pc386/objsmp.yml b/spec/build/bsps/i386/pc386/objsmp.yml
index af882cb425..9eaf97d4b9 100644
--- a/spec/build/bsps/i386/pc386/objsmp.yml
+++ b/spec/build/bsps/i386/pc386/objsmp.yml
@@ -11,6 +11,6 @@ includes: []
install: []
links: []
source:
-- bsps/i386/pc386/start/getcpuid.c
+- bsps/i386/pc386/start/bspsmp.c
- bsps/i386/pc386/start/smp-imps.c
type: build
diff --git a/spec/build/bsps/i386/pc386/objsmpstart.yml b/spec/build/bsps/i386/pc386/objsmpstart.yml
new file mode 100644
index 0000000000..2c56d7408b
--- /dev/null
+++ b/spec/build/bsps/i386/pc386/objsmpstart.yml
@@ -0,0 +1,49 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+asflags: []
+build-type: script
+cflags: []
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+cppflags: []
+do-build: |
+ startAP = "bsps/i386/pc386/start/startAP"
+ startAP_o = startAP + ".o"
+ self.asm(bld, bic, startAP + ".S", startAP_o)
+ startAP_exe = startAP + ".exe"
+ ldflags = "-N -Ttext 0x70000 -e app_processor_start -nostdlib"
+ bld(
+ rule="${LD} " + ldflags + " -o ${TGT} -r ${SRC}",
+ source=startAP_o,
+ target=startAP_exe,
+ )
+ appstart_bin = "appstart.bin"
+ bld(
+ rule="${OBJCOPY} -O binary ${SRC} ${TGT}",
+ source=startAP_exe,
+ target=appstart_bin,
+ )
+ appstart_o = "appstart.o"
+ bld(
+ rule="${OBJCOPY} -I binary -O elf32-i386 -B i386 ${SRC} ${TGT}",
+ source=appstart_bin,
+ target=appstart_o,
+ )
+ bld.objects(
+ source=appstart_o,
+ target=self.uid,
+ )
+ bic.objects.append(self.uid)
+do-configure: null
+enabled-by:
+- RTEMS_SMP
+includes: []
+ldflags: []
+links:
+- role: build-dependency
+ uid: ../../optobjcopy
+prepare-build: null
+prepare-configure: null
+stlib: []
+type: build
+use-after: []
+use-before: []
diff --git a/spec/build/bsps/optobjcopy.yml b/spec/build/bsps/optobjcopy.yml
new file mode 100644
index 0000000000..c1d19476fa
--- /dev/null
+++ b/spec/build/bsps/optobjcopy.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- set-value: ${ARCH}-rtems${__RTEMS_MAJOR__}-objcopy
+- substitute: null
+- find-program: null
+- env-assign: OBJCOPY
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default: null
+default-by-variant: []
+description: ''
+enabled-by: true
+links: []
+name: OBJCOPY
+type: build