提交 655beb3b 编写于 作者: 还_没_想_好's avatar 还_没_想_好 提交者: mysterywolf

[memheap] Fix the Oz optimization problem of AC6 compiler

上级 90d9b449
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
#define MEMITEM_SIZE(item) ((rt_ubase_t)item->next - (rt_ubase_t)item - RT_MEMHEAP_SIZE) #define MEMITEM_SIZE(item) ((rt_ubase_t)item->next - (rt_ubase_t)item - RT_MEMHEAP_SIZE)
#define MEMITEM(ptr) (struct rt_memheap_item*)((rt_uint8_t*)ptr - RT_MEMHEAP_SIZE) #define MEMITEM(ptr) (struct rt_memheap_item*)((rt_uint8_t*)ptr - RT_MEMHEAP_SIZE)
static void _remove_next_ptr(struct rt_memheap_item *next_ptr) static void _remove_next_ptr(volatile struct rt_memheap_item *next_ptr)
{ {
/* Fix the crash problem after opening Oz optimization on ac6 */ /* Fix the crash problem after opening Oz optimization on ac6 */
/* Fix IAR compiler warning */ /* Fix IAR compiler warning */
...@@ -392,7 +392,7 @@ void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize) ...@@ -392,7 +392,7 @@ void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize)
if (newsize > oldsize) if (newsize > oldsize)
{ {
void *new_ptr; void *new_ptr;
struct rt_memheap_item *next_ptr; volatile struct rt_memheap_item *next_ptr;
if (heap->locked == RT_FALSE) if (heap->locked == RT_FALSE)
{ {
...@@ -980,6 +980,8 @@ int memheaptrace(int argc, char *argv[]) ...@@ -980,6 +980,8 @@ int memheaptrace(int argc, char *argv[])
rt_kprintf("%5d", block_size); rt_kprintf("%5d", block_size);
else if (block_size < 1024 * 1024) else if (block_size < 1024 * 1024)
rt_kprintf("%4dK", block_size / 1024); rt_kprintf("%4dK", block_size / 1024);
else if (block_size < 1024 * 1024 * 100)
rt_kprintf("%2d.%dM", block_size / (1024 * 1024), (block_size % (1024 * 1024) * 10) / (1024 * 1024));
else else
rt_kprintf("%4dM", block_size / (1024 * 1024)); rt_kprintf("%4dM", block_size / (1024 * 1024));
/* dump thread name */ /* dump thread name */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册