Misc fixes to repair some of the breakage to the SAMA5D4-EK elf configuration caused by changes for the knsh configuration

This commit is contained in:
Gregory Nutt
2014-09-11 10:31:12 -06:00
parent 442d2adb7a
commit 1f23ad9bad
2 changed files with 13 additions and 1 deletions
+3 -1
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/include/arch.h
*
* Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2009, 2014 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -137,6 +137,7 @@ struct group_addrenv_s
FAR uintptr_t *text[ARCH_TEXT_NSECTS];
FAR uintptr_t *data[ARCH_DATA_NSECTS];
#ifdef CONFIG_BUILD_KERNEL
FAR uintptr_t *heap[ARCH_HEAP_NSECTS];
/* Initial heap allocation (in bytes). This exists only provide an
@@ -146,6 +147,7 @@ struct group_addrenv_s
*/
size_t heapsize;
#endif
};
typedef struct group_addrenv_s group_addrenv_t;
+10
View File
@@ -510,6 +510,7 @@ int up_addrenv_create(size_t textsize, size_t datasize, size_t heapsize,
}
#endif
#ifdef CONFIG_BUILD_KERNEL
/* Allocate heap space pages */
ret = up_addrenv_create_region(addrenv->heap, ARCH_HEAP_NSECTS,
@@ -526,6 +527,7 @@ int up_addrenv_create(size_t textsize, size_t datasize, size_t heapsize,
*/
addrenv->heapsize = (size_t)ret << MM_PGSHIFT;
#endif
return OK;
errout:
@@ -564,12 +566,14 @@ int up_addrenv_destroy(FAR group_addrenv_t *addrenv)
up_addrenv_destroy_region(addrenv->data, ARCH_DATA_NSECTS,
CONFIG_ARCH_DATA_VBASE);
#ifdef CONFIG_BUILD_KERNEL
/* Destroy the heap region */
up_addrenv_destroy_region(addrenv->heap, ARCH_HEAP_NSECTS,
CONFIG_ARCH_HEAP_VBASE);
memset(addrenv, 0, sizeof(group_addrenv_t));
#endif
return OK;
}
@@ -654,11 +658,13 @@ int up_addrenv_vdata(FAR group_addrenv_t *addrenv, uintptr_t textsize,
*
****************************************************************************/
#ifdef CONFIG_BUILD_KERNEL
ssize_t up_addrenv_heapsize(FAR const group_addrenv_t *addrenv)
{
DEBUGASSERT(addrenv);
return (ssize_t)addrenv->heapsize;
}
#endif
/****************************************************************************
* Name: up_addrenv_select
@@ -742,6 +748,7 @@ int up_addrenv_select(FAR const group_addrenv_t *addrenv,
}
}
#ifdef CONFIG_BUILD_KERNEL
for (vaddr = CONFIG_ARCH_HEAP_VBASE, i = 0;
i < ARCH_HEAP_NSECTS;
vaddr += SECTION_SIZE, i++)
@@ -765,6 +772,7 @@ int up_addrenv_select(FAR const group_addrenv_t *addrenv,
mmu_l1_clrentry(vaddr);
}
}
#endif
return OK;
}
@@ -812,6 +820,7 @@ int up_addrenv_restore(FAR const save_addrenv_t *oldenv)
mmu_l1_restore(vaddr, oldenv->data[i]);
}
#ifdef CONFIG_BUILD_KERNEL
for (vaddr = CONFIG_ARCH_HEAP_VBASE, i = 0;
i < ARCH_HEAP_NSECTS;
vaddr += SECTION_SIZE, i++)
@@ -820,6 +829,7 @@ int up_addrenv_restore(FAR const save_addrenv_t *oldenv)
mmu_l1_restore(vaddr, oldenv->heap[i]);
}
#endif
return OK;
}