From d7205f0083f8fdd0408404ce99c6eab9b8d120c7 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 8 Apr 2020 17:14:41 +0200 Subject: libc: Optimize malloc() initialization The BSPs provide memory for the separate C Program Heap initialization via _Memory_Get(). Most BSPs provide exactly one memory area. Only two BSPs provide more than one memory area (arm/altera-cyclone-v and bsps/powerpc/mpc55xxevb). Only if more than one memory area is provided, there is a need to use _Heap_Extend(). Provide two implementations to initialize the separate C Program Heap and let the BSP select one of the implementations based on the number of provided memory areas. This gets rid of a dependency on _Heap_Extend(). It also avoids dead code sections for most BSPs. Change licence to BSD-2-Clause according to file history. Update #3053. --- spec/build/bsps/arm/altera-cyclone-v/bspalteracyclonev.yml | 1 + spec/build/bsps/arm/imx/bspimx.yml | 1 + spec/build/bsps/arm/raspberrypi/obj.yml | 1 + spec/build/bsps/i386/pc386/obj.yml | 1 + spec/build/bsps/objmem.yml | 1 + spec/build/bsps/powerpc/mpc55xxevb/obj.yml | 1 + spec/build/bsps/powerpc/objmem.yml | 1 + spec/build/bsps/powerpc/qoriq/obj.yml | 1 + spec/build/bsps/powerpc/tqm8xx/obj.yml | 1 + spec/build/bsps/sparc/objmem.yml | 1 + spec/build/cpukit/librtemscpu.yml | 1 - 11 files changed, 10 insertions(+), 1 deletion(-) (limited to 'spec') diff --git a/spec/build/bsps/arm/altera-cyclone-v/bspalteracyclonev.yml b/spec/build/bsps/arm/altera-cyclone-v/bspalteracyclonev.yml index 9543199c49..30dbade196 100644 --- a/spec/build/bsps/arm/altera-cyclone-v/bspalteracyclonev.yml +++ b/spec/build/bsps/arm/altera-cyclone-v/bspalteracyclonev.yml @@ -139,6 +139,7 @@ source: - bsps/shared/irq/irq-default-handler.c - bsps/shared/start/bsp-fdt.c - bsps/shared/start/gettargethash-default.c +- bsps/shared/start/mallocinitmulti.c - bsps/shared/start/sbrk.c - bsps/shared/start/stackalloc.c - bsps/shared/start/wkspaceinitmulti.c diff --git a/spec/build/bsps/arm/imx/bspimx.yml b/spec/build/bsps/arm/imx/bspimx.yml index 74cc550ccb..1283ed9f46 100644 --- a/spec/build/bsps/arm/imx/bspimx.yml +++ b/spec/build/bsps/arm/imx/bspimx.yml @@ -106,6 +106,7 @@ source: - bsps/shared/start/bsp-fdt.c - bsps/shared/start/bspfatal-default.c - bsps/shared/start/gettargethash-default.c +- bsps/shared/start/mallocinitone.c - bsps/shared/start/sbrk.c - bsps/shared/start/stackalloc.c - bsps/shared/start/wkspaceinitone.c diff --git a/spec/build/bsps/arm/raspberrypi/obj.yml b/spec/build/bsps/arm/raspberrypi/obj.yml index 6869540ad0..f1bcc0e07b 100644 --- a/spec/build/bsps/arm/raspberrypi/obj.yml +++ b/spec/build/bsps/arm/raspberrypi/obj.yml @@ -56,6 +56,7 @@ source: - bsps/shared/start/bsp-fdt.c - bsps/shared/start/bspfatal-default.c - bsps/shared/start/gettargethash-default.c +- bsps/shared/start/mallocinitone.c - bsps/shared/start/sbrk.c - bsps/shared/start/stackalloc.c - bsps/shared/start/wkspaceinitone.c diff --git a/spec/build/bsps/i386/pc386/obj.yml b/spec/build/bsps/i386/pc386/obj.yml index 692e2df1cc..308dbe5ea9 100644 --- a/spec/build/bsps/i386/pc386/obj.yml +++ b/spec/build/bsps/i386/pc386/obj.yml @@ -80,6 +80,7 @@ source: - bsps/shared/irq/irq-default-handler.c - bsps/shared/start/bspfatal-default.c - bsps/shared/start/gettargethash-default.c +- bsps/shared/start/mallocinitone.c - bsps/shared/start/sbrk.c - bsps/shared/start/wkspaceinitone.c type: build diff --git a/spec/build/bsps/objmem.yml b/spec/build/bsps/objmem.yml index 6c72bc3f65..ff6a0937f1 100644 --- a/spec/build/bsps/objmem.yml +++ b/spec/build/bsps/objmem.yml @@ -11,5 +11,6 @@ install: [] links: [] source: - bsps/shared/start/bspgetworkarea-default.c +- bsps/shared/start/mallocinitone.c - bsps/shared/start/wkspaceinitone.c type: build diff --git a/spec/build/bsps/powerpc/mpc55xxevb/obj.yml b/spec/build/bsps/powerpc/mpc55xxevb/obj.yml index 1325473d86..9b6daa9adf 100644 --- a/spec/build/bsps/powerpc/mpc55xxevb/obj.yml +++ b/spec/build/bsps/powerpc/mpc55xxevb/obj.yml @@ -94,6 +94,7 @@ source: - bsps/shared/irq/irq-default-handler.c - bsps/shared/start/bspfatal-default.c - bsps/shared/start/gettargethash-default.c +- bsps/shared/start/mallocinitmulti.c - bsps/shared/start/stackalloc.c - bsps/shared/start/wkspaceinitmulti.c type: build diff --git a/spec/build/bsps/powerpc/objmem.yml b/spec/build/bsps/powerpc/objmem.yml index 1fbb8b4fb0..3ef079ee72 100644 --- a/spec/build/bsps/powerpc/objmem.yml +++ b/spec/build/bsps/powerpc/objmem.yml @@ -11,5 +11,6 @@ install: [] links: [] source: - bsps/powerpc/shared/start/bspgetworkarea.c +- bsps/shared/start/mallocinitone.c - bsps/shared/start/wkspaceinitone.c type: build diff --git a/spec/build/bsps/powerpc/qoriq/obj.yml b/spec/build/bsps/powerpc/qoriq/obj.yml index c3222125e8..133703a6d5 100644 --- a/spec/build/bsps/powerpc/qoriq/obj.yml +++ b/spec/build/bsps/powerpc/qoriq/obj.yml @@ -72,6 +72,7 @@ source: - bsps/shared/start/bsp-fdt.c - bsps/shared/start/bspfatal-default.c - bsps/shared/start/gettargethash-default.c +- bsps/shared/start/mallocinitone.c - bsps/shared/start/sbrk.c - bsps/shared/start/wkspaceinitone.c type: build diff --git a/spec/build/bsps/powerpc/tqm8xx/obj.yml b/spec/build/bsps/powerpc/tqm8xx/obj.yml index 7aec916350..360e99c864 100644 --- a/spec/build/bsps/powerpc/tqm8xx/obj.yml +++ b/spec/build/bsps/powerpc/tqm8xx/obj.yml @@ -46,6 +46,7 @@ source: - bsps/shared/start/bspfatal-default.c - bsps/shared/start/bspreset-empty.c - bsps/shared/start/gettargethash-default.c +- bsps/shared/start/mallocinitone.c - bsps/shared/start/sbrk.c - bsps/shared/start/wkspaceinitone.c type: build diff --git a/spec/build/bsps/sparc/objmem.yml b/spec/build/bsps/sparc/objmem.yml index d4ded7b226..071a7473b4 100644 --- a/spec/build/bsps/sparc/objmem.yml +++ b/spec/build/bsps/sparc/objmem.yml @@ -10,6 +10,7 @@ includes: [] install: [] links: [] source: +- bsps/shared/start/mallocinitone.c - bsps/shared/start/wkspaceinitone.c - bsps/sparc/shared/start/bspgetworkarea.c type: build diff --git a/spec/build/cpukit/librtemscpu.yml b/spec/build/cpukit/librtemscpu.yml index b6b3a09c2b..319ea26e4d 100644 --- a/spec/build/cpukit/librtemscpu.yml +++ b/spec/build/cpukit/librtemscpu.yml @@ -675,7 +675,6 @@ source: - cpukit/libcsupport/src/malloc.c - cpukit/libcsupport/src/malloc_deferred.c - cpukit/libcsupport/src/malloc_dirtier.c -- cpukit/libcsupport/src/malloc_initialize.c - cpukit/libcsupport/src/malloc_walk.c - cpukit/libcsupport/src/mallocdirtydefault.c - cpukit/libcsupport/src/mallocextenddefault.c -- cgit v1.2.3