From 6a8fc51848215a5854ebec11e75ed6cc4ed76a4d Mon Sep 17 00:00:00 2001 From: Chips Date: Sun, 10 Jul 2016 16:50:25 +0200 Subject: [PATCH] Solve rpi1 compilation issue --- Makefile | 6 ++++-- src/drawing.cpp | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 623c8fcc..818e1edf 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ endif ifeq ($(PLATFORM),rpi2) CPU_FLAGS += -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard - MORE_CFLAGS += -DCAPSLOCK_DEBIAN_WORKAROUND + MORE_CFLAGS += -DCAPSLOCK_DEBIAN_WORKAROUND -DARMV6T2 LDFLAGS += -lbcm_host DEFS += -DRASPBERRY HAVE_NEON = 1 @@ -17,10 +17,12 @@ else ifeq ($(PLATFORM),rpi1) HAVE_DISPMANX = 1 DEFS += -DRASPBERRY else ifeq ($(PLATFORM),generic-sdl) + MORE_CFLAGS += -DARMV6T2 HAVE_SDL_DISPLAY = 1 else ifeq ($(PLATFORM),gles) # For Raspberry Pi uncomment below line #LDFLAGS += -lbcm_host + MORE_CFLAGS += -DARMV6T2 HAVE_GLES_DISPLAY = 1 HAVE_NEON = 1 endif @@ -39,7 +41,7 @@ PANDORA=1 SDL_CFLAGS = `sdl-config --cflags` DEFS += `xml2-config --cflags` -DEFS += -DCPU_arm -DARM_ASSEMBLY -DARMV6_ASSEMBLY -DARMV6T2 -DGP2X -DPANDORA -DSIX_AXIS_WORKAROUND +DEFS += -DCPU_arm -DARM_ASSEMBLY -DARMV6_ASSEMBLY -DGP2X -DPANDORA -DSIX_AXIS_WORKAROUND DEFS += -DWITH_INGAME_WARNING DEFS += -DROM_PATH_PREFIX=\"./\" -DDATA_PREFIX=\"./data/\" -DSAVE_PREFIX=\"./saves/\" DEFS += -DUSE_SDL diff --git a/src/drawing.cpp b/src/drawing.cpp index a4c25679..562d4f91 100644 --- a/src/drawing.cpp +++ b/src/drawing.cpp @@ -461,7 +461,7 @@ static void dummy_worker (int start, int stop) { } - +#ifdef ARMV6T2 STATIC_INLINE int DECODE_HAM8_1(int col, int pv) { __asm__ __volatile__ ( @@ -511,6 +511,7 @@ STATIC_INLINE int DECODE_HAM6_3(int col, int pv) : [col] "+r" (col) , [pv] "+r" (pv) ); return (col); } +#endif static int ham_decode_pixel; static uae_u16 ham_lastcolor; @@ -542,9 +543,15 @@ static void init_ham_decoding (void) switch (pv & 0x3) { case 0x0: ham_lastcolor = colors_for_drawing.acolors[pv >> 2]; break; +#ifdef ARMV6T2 case 0x1: ham_lastcolor = DECODE_HAM8_1(ham_lastcolor, pv); break; case 0x2: ham_lastcolor = DECODE_HAM8_2(ham_lastcolor, pv); break; case 0x3: ham_lastcolor = DECODE_HAM8_3(ham_lastcolor, pv); break; +#else + case 0x1: ham_lastcolor &= 0xFFFF03; ham_lastcolor |= (pv & 0xFC); break; + case 0x2: ham_lastcolor &= 0x03FFFF; ham_lastcolor |= (pv & 0xFC) << 16; break; + case 0x3: ham_lastcolor &= 0xFF03FF; ham_lastcolor |= (pv & 0xFC) << 8; break; +#endif } } } else { /* AGA mode HAM6 */ @@ -553,9 +560,15 @@ static void init_ham_decoding (void) switch (pv & 0x30) { case 0x00: ham_lastcolor = colors_for_drawing.acolors[pv]; break; +#ifdef ARMV6T2 case 0x10: ham_lastcolor = DECODE_HAM6_1(ham_lastcolor, pv); break; case 0x20: ham_lastcolor = DECODE_HAM6_2(ham_lastcolor, pv); break; case 0x30: ham_lastcolor = DECODE_HAM6_3(ham_lastcolor, pv); break; +#else + case 0x10: ham_lastcolor &= 0xFFFF00; ham_lastcolor |= (pv & 0xF) << 4; break; + case 0x20: ham_lastcolor &= 0x00FFFF; ham_lastcolor |= (pv & 0xF) << 20; break; + case 0x30: ham_lastcolor &= 0xFF00FF; ham_lastcolor |= (pv & 0xF) << 12; break; +#endif } } } @@ -566,9 +579,15 @@ static void init_ham_decoding (void) switch (pv & 0x30) { case 0x00: ham_lastcolor = colors_for_drawing.acolors[pv]; break; +#ifdef ARMV6T2 case 0x10: ham_lastcolor = DECODE_HAM6_1(ham_lastcolor, pv); break; case 0x20: ham_lastcolor = DECODE_HAM6_2(ham_lastcolor, pv); break; case 0x30: ham_lastcolor = DECODE_HAM6_3(ham_lastcolor, pv); break; +#else + case 0x10: ham_lastcolor &= 0xFF0; ham_lastcolor |= (pv & 0xF); break; + case 0x20: ham_lastcolor &= 0x0FF; ham_lastcolor |= (pv & 0xF) << 8; break; + case 0x30: ham_lastcolor &= 0xF0F; ham_lastcolor |= (pv & 0xF) << 4; break; +#endif } } } @@ -596,9 +615,15 @@ static void decode_ham (int pix, int stoppos) switch (pv & 0x3) { case 0x0: ham_lastcolor = colors_for_drawing.acolors[pv >> 2]; break; +#ifdef ARMV6T2 case 0x1: ham_lastcolor = DECODE_HAM8_1(ham_lastcolor, pv); break; case 0x2: ham_lastcolor = DECODE_HAM8_2(ham_lastcolor, pv); break; case 0x3: ham_lastcolor = DECODE_HAM8_3(ham_lastcolor, pv); break; +#else + case 0x1: ham_lastcolor &= 0xFFFF03; ham_lastcolor |= (pv & 0xFC); break; + case 0x2: ham_lastcolor &= 0x03FFFF; ham_lastcolor |= (pv & 0xFC) << 16; break; + case 0x3: ham_lastcolor &= 0xFF03FF; ham_lastcolor |= (pv & 0xFC) << 8; break; +#endif } ham_linebuf[ham_decode_pixel++] = ham_lastcolor; } @@ -608,9 +633,15 @@ static void decode_ham (int pix, int stoppos) switch (pv & 0x30) { case 0x00: ham_lastcolor = colors_for_drawing.acolors[pv]; break; +#ifdef ARMV6T2 case 0x10: ham_lastcolor = DECODE_HAM6_1(ham_lastcolor, pv); break; case 0x20: ham_lastcolor = DECODE_HAM6_2(ham_lastcolor, pv); break; case 0x30: ham_lastcolor = DECODE_HAM6_3(ham_lastcolor, pv); break; +#else + case 0x10: ham_lastcolor &= 0xFFFF00; ham_lastcolor |= (pv & 0xF) << 4; break; + case 0x20: ham_lastcolor &= 0x00FFFF; ham_lastcolor |= (pv & 0xF) << 20; break; + case 0x30: ham_lastcolor &= 0xFF00FF; ham_lastcolor |= (pv & 0xF) << 12; break; +#endif } ham_linebuf[ham_decode_pixel++] = ham_lastcolor; } @@ -622,9 +653,15 @@ static void decode_ham (int pix, int stoppos) switch (pv & 0x30) { case 0x00: ham_lastcolor = colors_for_drawing.acolors[pv]; break; +#ifdef ARMV6T2 case 0x10: ham_lastcolor = DECODE_HAM6_1(ham_lastcolor, pv); break; case 0x20: ham_lastcolor = DECODE_HAM6_2(ham_lastcolor, pv); break; case 0x30: ham_lastcolor = DECODE_HAM6_3(ham_lastcolor, pv); break; +#else + case 0x10: ham_lastcolor &= 0xFF0; ham_lastcolor |= (pv & 0xF); break; + case 0x20: ham_lastcolor &= 0x0FF; ham_lastcolor |= (pv & 0xF) << 8; break; + case 0x30: ham_lastcolor &= 0xF0F; ham_lastcolor |= (pv & 0xF) << 4; break; +#endif } ham_linebuf[ham_decode_pixel++] = ham_lastcolor; }