[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