pkgsrc-ng/emulators/gpsp-rpi/patches/patch-arm_warm.c
2016-01-21 23:40:00 +01:00

60 lines
1.3 KiB
C

$NetBSD: patch-arm_warm.c,v 1.1 2015/02/06 02:02:03 jmcneill Exp $
--- arm/warm.c.orig 2015-01-06 20:57:45.000000000 +0000
+++ arm/warm.c
@@ -42,15 +42,18 @@
#define WARM_CODE
#include "warm.h"
+#if defined(__linux__)
/* provided by glibc */
extern long init_module(void *, unsigned long, const char *);
extern long delete_module(const char *, unsigned int);
+#endif
static int warm_fd = -1;
static int kernel_version;
static void sys_cacheflush(void *start, void *end)
{
+#if defined(__linux__)
#ifdef __ARM_EABI__
/* EABI version */
int num = __ARM_NR_cacheflush;
@@ -68,12 +71,16 @@ static void sys_cacheflush(void *start,
"swi %2" : : "r" (start), "r" (end), "i" __ARM_NR_cacheflush
: "r0", "r1", "r2", "r3");
#endif
+#else
+ __clear_cache(start, end);
+#endif
}
/* Those are here because system() occasionaly fails on Wiz
* with errno 12 for some unknown reason */
static int manual_insmod_26(const char *fname, const char *opts)
{
+#if defined(__linux__)
unsigned long len, read_len;
int ret = -1;
void *buff;
@@ -104,11 +111,18 @@ fail1:
fail0:
fclose(f);
return ret;
+#else
+ return -1;
+#endif
}
static int manual_rmmod(const char *name)
{
+#if defined(__linux__)
return delete_module(name, O_NONBLOCK|O_EXCL);
+#else
+ return 0;
+#endif
}
int warm_init(void)