Amiberry: RPi 1 builds fail after latest JIT FPU fixes

Created on 9 Feb 2018  Â·  4Comments  Â·  Source: midwan/amiberry

@midwan

RPi 1 builds for SDL2 both fail rpi1-sdl2 rpi1-sdl2-dispmanx

Required Information:

  • DietPi Version | v6.2
  • SBC Device | RPi 3 Model B (armv7l) (index=3)
  • Distro | stretch (index=4)
  • Command | make -j 4 all PLATFORM=rpi1-sdl2-dispmanx
  • Error Handler | G_ERROR_HANDLER

Additional Information (if applicable):

  • Software title |

Expected behaviour:

Actual behaviour:

Steps to reproduce:

Additional logs:

Log file contents:
 #define CC_MVN_ri(cc,Rd,i)               _OP1(cc,_MVN,0,Rd,SHIFT_IMM(i))
                                                            ^~~~~~~~~
src/jit/compemu_midfunc_arm2.cpp:4986:2: note: in expansion of macro ‘CC_MVN_ri’
  CC_MVN_ri(NATIVE_CC_NE, REG_WORK2, ARM_Z_FLAG);
  ^~~~~~~~~
src/jit/codegen_arm.h:71:76: warning: result of ‘(536870912 << 4)’ requires 35 bits to represent, but ‘int’ only has 32 bits [-Wshift-overflow=]
                   (c & 0x0ffffff0) == 0 ? (0x200 | ((c >> 28) & 0xf) | ((c << 4) & 0xf0)) : \
                                                                            ^
src/jit/codegen_arm.h:62:25: note: in definition of macro ‘_W’
 #define _W(c) emit_long(c)
                         ^
src/jit/codegen_arm.h:489:42: note: in expansion of macro ‘_OP3’
 #define CC_EOR_rri(cc,Rd,Rn,i)           _OP3(cc,_EOR,0,Rd,Rn,SHIFT_IMM(i))
                                          ^~~~
src/jit/codegen_arm.h:105:37: note: in expansion of macro ‘IMM32’
 #define SHIFT_IMM(c) (0x02000000 | (IMM32((c))))
                                     ^~~~~
src/jit/codegen_arm.h:489:63: note: in expansion of macro ‘SHIFT_IMM’
 #define CC_EOR_rri(cc,Rd,Rn,i)           _OP3(cc,_EOR,0,Rd,Rn,SHIFT_IMM(i))
                                                               ^~~~~~~~~
src/jit/codegen_arm.h:501:42: note: in expansion of macro ‘CC_EOR_rri’
 #define EOR_rri(Rd,Rn,i)                 CC_EOR_rri(NATIVE_CC_AL,Rd,Rn,i)
                                          ^~~~~~~~~~
src/jit/compemu_midfunc_arm2.cpp:4990:2: note: in expansion of macro ‘EOR_rri’
  EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG);
  ^~~~~~~
src/jit/codegen_arm.h:71:76: warning: result of ‘(536870912 << 4)’ requires 35 bits to represent, but ‘int’ only has 32 bits [-Wshift-overflow=]
                   (c & 0x0ffffff0) == 0 ? (0x200 | ((c >> 28) & 0xf) | ((c << 4) & 0xf0)) : \
                                                                            ^
src/jit/codegen_arm.h:62:25: note: in definition of macro ‘_W’
 #define _W(c) emit_long(c)
                         ^
src/jit/codegen_arm.h:489:42: note: in expansion of macro ‘_OP3’
 #define CC_EOR_rri(cc,Rd,Rn,i)           _OP3(cc,_EOR,0,Rd,Rn,SHIFT_IMM(i))
                                          ^~~~
src/jit/codegen_arm.h:105:37: note: in expansion of macro ‘IMM32’
 #define SHIFT_IMM(c) (0x02000000 | (IMM32((c))))
                                     ^~~~~
src/jit/codegen_arm.h:489:63: note: in expansion of macro ‘SHIFT_IMM’
 #define CC_EOR_rri(cc,Rd,Rn,i)           _OP3(cc,_EOR,0,Rd,Rn,SHIFT_IMM(i))
                                                               ^~~~~~~~~
src/jit/codegen_arm.h:501:42: note: in expansion of macro ‘CC_EOR_rri’
 #define EOR_rri(Rd,Rn,i)                 CC_EOR_rri(NATIVE_CC_AL,Rd,Rn,i)
                                          ^~~~~~~~~~
src/jit/compemu_midfunc_arm2.cpp:4996:2: note: in expansion of macro ‘EOR_rri’
  EOR_rri(REG_WORK1, REG_WORK1, ARM_C_FLAG);
  ^~~~~~~
Makefile:409: recipe for target 'src/jit/compemu_support.o' failed
make: *** [src/jit/compemu_support.o] Error 1
make: *** Waiting for unfinished jobs....
bug

All 4 comments

@Fourdee
Thanks, I'll take a look at it

It's not for SDL2 only, it affects all RPI1 versions. However, it may be related to GCC 6.3 as it did build in GCC 4.9 (on Jessie).

I'll check what it's complaining about.

Nope, not related to the compiler.
It's related to the recent JIT FPU fixes, some functions cannot be resolved on the RPI1.

Actual errors:

In file included from src/jit/compemu_support.cpp:807:0:
src/jit/codegen_arm.cpp: In function ‘void compemu_raw_handle_except(uae_s32)’:
src/jit/codegen_arm.cpp:952:49: error: ‘MOVW_ri16’ was not declared in this scope
   MOVW_ri16(REG_WORK2, (uae_u32)(&jit_exception));
                                                 ^
src/jit/codegen_arm.cpp:953:57: error: ‘MOVT_ri16’ was not declared in this scope
   MOVT_ri16(REG_WORK2, ((uae_u32)(&jit_exception)) >> 16);
                                                         ^
In file included from src/jit/compemu_support.cpp:1487:0:
src/jit/compemu_midfunc_arm2.cpp: In function ‘void jnf_DIVU(uae_u32, uae_u32, uae_u32)’:
src/jit/compemu_midfunc_arm2.cpp:1867:49: error: ‘MOVW_ri16’ was not declared in this scope
   MOVW_ri16(REG_WORK2, (uae_u32)(&jit_exception));
                                                 ^
src/jit/compemu_midfunc_arm2.cpp:1868:57: error: ‘MOVT_ri16’ was not declared in this scope
   MOVT_ri16(REG_WORK2, ((uae_u32)(&jit_exception)) >> 16);
                                                         ^
src/jit/compemu_midfunc_arm2.cpp: In function ‘void jff_DIVU(uae_u32, uae_u32, uae_u32)’:
src/jit/compemu_midfunc_arm2.cpp:1912:49: error: ‘MOVW_ri16’ was not declared in this scope
   MOVW_ri16(REG_WORK2, (uae_u32)(&jit_exception));
                                                 ^
src/jit/compemu_midfunc_arm2.cpp:1913:57: error: ‘MOVT_ri16’ was not declared in this scope
   MOVT_ri16(REG_WORK2, ((uae_u32)(&jit_exception)) >> 16);
                                                         ^
src/jit/compemu_midfunc_arm2.cpp: In function ‘void jnf_DIVS(uae_u32, uae_u32, uae_u32)’:
src/jit/compemu_midfunc_arm2.cpp:1976:49: error: ‘MOVW_ri16’ was not declared in this scope
   MOVW_ri16(REG_WORK2, (uae_u32)(&jit_exception));
                                                 ^
src/jit/compemu_midfunc_arm2.cpp:1977:57: error: ‘MOVT_ri16’ was not declared in this scope
   MOVT_ri16(REG_WORK2, ((uae_u32)(&jit_exception)) >> 16);
                                                         ^
src/jit/compemu_midfunc_arm2.cpp: In function ‘void jff_DIVS(uae_u32, uae_u32, uae_u32)’:
src/jit/compemu_midfunc_arm2.cpp:2031:49: error: ‘MOVW_ri16’ was not declared in this scope
   MOVW_ri16(REG_WORK2, (uae_u32)(&jit_exception));
                                                 ^
src/jit/compemu_midfunc_arm2.cpp:2032:57: error: ‘MOVT_ri16’ was not declared in this scope
   MOVT_ri16(REG_WORK2, ((uae_u32)(&jit_exception)) >> 16);
                                                         ^
Makefile:398: recipe for target 'src/jit/compemu_support.o' failed
make: *** [src/jit/compemu_support.o] Error 1

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jonpatterson picture jonpatterson  Â·  8Comments

nemo93 picture nemo93  Â·  10Comments

Fourdee picture Fourdee  Â·  4Comments

qqplayer picture qqplayer  Â·  10Comments

phalkon13 picture phalkon13  Â·  3Comments