+2013-12-08 Vladimir Serbinenko <phcoder@gmail.com>
+
+ Make arm-emu work.
+
2013-12-07 Vladimir Serbinenko <phcoder@gmail.com>
* util/grub-mkfont.c: Replace stpcpy with grub_stpcpy.
if COND_arm
CFLAGS_PLATFORM += -mthumb-interwork
CCASFLAGS_PLATFORM = -mthumb-interwork
+if !COND_emu
LDFLAGS_PLATFORM = -Wl,--wrap=__clear_cache
endif
+endif
if COND_arm64
CFLAGS_PLATFORM += -mcmodel=large
endif
-#if defined(__ia64__)
+#if defined(__ia64__) || defined (__arm__) || defined (__aarch64__)
#include <grub/cache.h>
void __clear_cache (char *beg, char *end);
.set macro
#elif defined(__powerpc__)
#include "../powerpc/cache.S"
-#elif defined(__ia64__)
+#elif defined(__ia64__) || defined(__arm__) || defined(__aarch64__)
#else
#error "No target cpu type is defined"
#endif
return GRUB_ERR_BAD_MODULE;
}
-#if defined (__ia64__) || defined (__powerpc__) || defined (__mips__)
-void grub_arch_dl_get_tramp_got_size (const void *ehdr __attribute__ ((unused)),
- grub_size_t *tramp, grub_size_t *got)
+#if !defined (__i386__) && !defined (__x86_64__) && !defined (__sparc__)
+grub_err_t
+grub_arch_dl_get_tramp_got_size (const void *ehdr __attribute__ ((unused)),
+ grub_size_t *tramp, grub_size_t *got)
{
*tramp = 0;
*got = 0;
+ return GRUB_ERR_BAD_MODULE;
}
#endif
#include "../powerpc/dl.c"
#elif defined(__ia64__)
#include "../ia64/dl.c"
+#elif defined(__arm__)
+#include "../arm/dl_helper.c"
+#include "../arm/dl.c"
+#elif defined(__aarch64__)
+#include "../arm64/dl_helper.c"
+#include "../arm64/dl.c"
#else
#error "No target cpu type is defined"
#endif
return q;
}
-#ifndef GRUB_UTIL
+#if !defined (GRUB_UTIL) && !defined (GRUB_MACHINE_EMU)
#if defined (__arm__)
for (y = mode_info->height - 1; y >= 0; y--)
{
- grub_uint32_t *iptr = (grub_uint32_t *) ((grub_uint8_t *) ptr + mode_info->pitch * y);
+ grub_uint32_t *iptr = (grub_uint32_t *) ptr + (mode_info->pitch / 4) * y;
int x;
grub_uint8_t *optr = buffer;
for (x = 0; x < (int) mode_info->width; x++)
for (y = mode_info->height - 1; y >= 0; y--)
{
- grub_uint16_t *iptr = (grub_uint16_t *) ((grub_uint8_t *) ptr + mode_info->pitch * y);
+ grub_uint16_t *iptr = (grub_uint16_t *) ptr + (mode_info->pitch / 2) * y;
int x;
grub_uint8_t *optr = buffer;
for (x = 0; x < (int) mode_info->width; x++)