[GHC] #7794: GHCi "Prelude.undefined" exceptions on ARM; ByteCodeItbls.mkJumpToAddr unimplemented
GHC
ghc-devs at haskell.org
Wed Aug 21 11:59:06 UTC 2013
#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
More information about the ghc-tickets
mailing list