kernel: replace .BSS and .DATA setup with standard library calls

Use standard library calls like memset/memcpy for setting up BSS and DATA
sections during system initialization, this helps to take advantage of
architecture specific optimizations from standard library.

Change-Id: Ia72b42aa65b44d1df7c22dd1fbc39a44fa001be9
Signed-off-by: Mahavir Jain <mjain@marvell.com>
This commit is contained in:
Mahavir Jain 2016-12-02 21:48:39 +05:30 committed by Anas Nashif
commit acea24138a

View file

@ -34,6 +34,7 @@
#include <linker-defs.h> #include <linker-defs.h>
#include <ksched.h> #include <ksched.h>
#include <version.h> #include <version.h>
#include <string.h>
/* kernel build timestamp items */ /* kernel build timestamp items */
@ -133,14 +134,10 @@ extern void idle(void *unused1, void *unused2, void *unused3);
* *
* @return N/A * @return N/A
*/ */
void _bss_zero(void) void _bss_zero(void)
{ {
uint32_t *pos = (uint32_t *)&__bss_start; memset(&__bss_start, 0,
((uint32_t) &__bss_end - (uint32_t) &__bss_start));
for ( ; pos < (uint32_t *)&__bss_end; pos++) {
*pos = 0;
}
} }
@ -155,14 +152,8 @@ void _bss_zero(void)
*/ */
void _data_copy(void) void _data_copy(void)
{ {
uint32_t *pROM, *pRAM; memcpy(&__data_ram_start, &__data_rom_start,
((uint32_t) &__data_ram_end - (uint32_t) &__data_ram_start));
pROM = (uint32_t *)&__data_rom_start;
pRAM = (uint32_t *)&__data_ram_start;
for ( ; pRAM < (uint32_t *)&__data_ram_end; pROM++, pRAM++) {
*pRAM = *pROM;
}
} }
#endif #endif