blob: f8afec2416148fa133d175e62e5c0b100fa10d54 [file] [log] [blame]
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021-2024, Arm Limited and Contributors. All rights reserved.
*/
#include "compiler.h"
#include <errno.h>
#include <stddef.h> /* dlmalloc requires size_t */
#include <stdint.h>
#include <string.h>
/* Allocating heap area */
#ifndef SP_HEAP_SIZE
#error "SP_HEAP_SIZE is undefined, please define it in the build system"
#endif
static uint8_t sp_heap[SP_HEAP_SIZE] __aligned(16);
static uint8_t *program_break = sp_heap;
/**
* Basic sbrk implementation which increases the program break through the
* sp_heap buffer.
*/
void *sbrk(ptrdiff_t incr)
{
uint8_t *previous_break = program_break;
uint8_t *new_break = program_break + incr;
if ((new_break < sp_heap) || (new_break > (sp_heap + sizeof(sp_heap))))
return (void *)(uintptr_t) -1;
program_break += incr;
return (void *) previous_break;
}
/*
* There's no way of including a custom configuration file without modifying
* malloc.c. As a workaround this file includes the missing stddef.h, sets the
* configuration values of dlmalloc and then includes malloc.c.
*/
/* dlmalloc configuration */
#define USE_SPIN_LOCKS 0
#define HAVE_MORECORE 1
#define HAVE_MMAP 0
#define HAVE_MREMAP 0
#define MALLOC_FAILURE_ACTION do {} while (0)
#define MMAP_CLEARS 0
#define MORECORE_CONTIGUOUS 1
#define MORECORE_CANNOT_TRIM 1
#define LACKS_SYS_PARAM_H 1
#define LACKS_SYS_TYPES_H 1
#define LACKS_TIME_H 1
#define LACKS_UNISTD_H 1
#define NO_MALLINFO 1
#define NO_MALLOC_STATS 1
#define DEFAULT_GRANULARITY 64
#include "malloc.c"