mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 16:50:55 +08:00
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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user