malloc.c: Implement a PA-RISC specific malloc()
On x86 mremap() is used to provide malloc'ed memory.
This can't be used on PA-RISC, so provide an own malloc()
implementation.
Since PA-RISC is fully 32-/64-bit use "unsigned long" instead
of "u32".
Signed-off-by: Helge Deller <deller@gmx.de>
diff --git a/src/malloc.c b/src/malloc.c
index 3733855..b840883 100644
--- a/src/malloc.c
+++ b/src/malloc.c
@@ -232,7 +232,7 @@
****************************************************************/
// Allocate physical memory from the given zone and track it as a PMM allocation
-u32
+unsigned long
malloc_palloc(struct zone_s *zone, u32 size, u32 align)
{
ASSERT32FLAT();
@@ -263,7 +263,7 @@
// Allocate virtual memory from the given zone
void * __malloc
-_malloc(struct zone_s *zone, u32 size, u32 align)
+x86_malloc(struct zone_s *zone, u32 size, u32 align)
{
return memremap(malloc_palloc(zone, size, align), size);
}
diff --git a/src/malloc.h b/src/malloc.h
index 960a7f8..73962b4 100644
--- a/src/malloc.h
+++ b/src/malloc.h
@@ -1,6 +1,7 @@
#ifndef __MALLOC_H
#define __MALLOC_H
+#include "autoconf.h" // CONFIG_*
#include "types.h" // u32
// malloc.c
@@ -15,8 +16,11 @@
extern u32 LegacyRamSize;
void malloc_init(void);
void malloc_prepboot(void);
-u32 malloc_palloc(struct zone_s *zone, u32 size, u32 align);
-void *_malloc(struct zone_s *zone, u32 size, u32 align);
+unsigned long malloc_palloc(struct zone_s *zone, u32 size, u32 align);
+void *parisc_malloc(u32 size, u32 align);
+void *x86_malloc(struct zone_s *zone, u32 size, u32 align);
+#define _malloc(zone, size, align) \
+ (CONFIG_X86 ? x86_malloc(zone, size, align) : parisc_malloc(size, align))
int malloc_pfree(u32 data);
void free(void *data);
u32 malloc_getspace(struct zone_s *zone);