Re: [GHC] #7794: GHCi "Prelude.undefined" exceptions on ARM; ByteCodeItbls.mkJumpToAddr unimplemented

#7794: GHCi "Prelude.undefined" exceptions on ARM; ByteCodeItbls.mkJumpToAddr unimplemented -------------------------------+--------------------------- Reporter: cjwatson | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.8.1 Component: GHCi | Version: 7.6.2 Resolution: | Keywords: Operating System: Linux | Architecture: arm Type of failure: GHCi crash | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------+--------------------------- Comment (by RoboTux): Inlining the call of the cacheflush system call (the call behind __clear_cache) should work but it means the cache would be flush every time mkJumpToAddr is called. I don't know enough the context of the code generation but if that function is called several time after 1 code generation then it's suboptimal. The patch then become: +#elif arm_TARGET_ARCH +type ItblCode = Word32 +mkJumpToAddr a + = [ 0xe92d0080 -- push {r7} + , 0xe3a0780f -- mov r7, #983040 ; 0xf0000 + , 0xe2877002 -- add r7, r7, #2 + , 0xe3a02000 -- mov r2, #0 + , 0xef000000 -- swi 0x0 + , 0xe8bd0080 -- pop {r7} + , 0xe51ff004 -- ldr pc, [pc, #-4] # pc reads as <current insn>+8 + , fromIntegral (ptrToInt a) ] -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/7794#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC