projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
SPARC NCG: Use .skip instead of .space in assembler
[ghc-hetmet.git]
/
compiler
/
nativeGen
/
PositionIndependentCode.hs
diff --git
a/compiler/nativeGen/PositionIndependentCode.hs
b/compiler/nativeGen/PositionIndependentCode.hs
index
3f32c38
..
edb8846
100644
(file)
--- a/
compiler/nativeGen/PositionIndependentCode.hs
+++ b/
compiler/nativeGen/PositionIndependentCode.hs
@@
-14,6
+14,8
@@
module PositionIndependentCode (
initializePicBase
) where
initializePicBase
) where
+#include "HsVersions.h"
+
{-
This module handles generation of position independent code and
dynamic-linking related issues for the native code generator.
{-
This module handles generation of position independent code and
dynamic-linking related issues for the native code generator.
@@
-54,7
+56,6
@@
module PositionIndependentCode (
#include "nativeGen/NCG.h"
import Cmm
#include "nativeGen/NCG.h"
import Cmm
-import MachOp ( MachOp(MO_Add), wordRep, MachRep(..) )
import CLabel ( CLabel, pprCLabel,
mkDynamicLinkerLabel, DynamicLinkerLabelInfo(..),
dynamicLinkerLabelInfo, mkPicBaseLabel,
import CLabel ( CLabel, pprCLabel,
mkDynamicLinkerLabel, DynamicLinkerLabelInfo(..),
dynamicLinkerLabelInfo, mkPicBaseLabel,
@@
-116,7
+117,7
@@
cmmMakeDynamicReference dflags addImport referenceKind lbl
AccessViaSymbolPtr -> do
let symbolPtr = mkDynamicLinkerLabel SymbolPtr lbl
addImport symbolPtr
AccessViaSymbolPtr -> do
let symbolPtr = mkDynamicLinkerLabel SymbolPtr lbl
addImport symbolPtr
- return $ CmmLoad (cmmMakePicReference symbolPtr) wordRep
+ return $ CmmLoad (cmmMakePicReference symbolPtr) bWord
AccessDirectly -> case referenceKind of
-- for data, we might have to make some calculations:
DataReference -> return $ cmmMakePicReference lbl
AccessDirectly -> case referenceKind of
-- for data, we might have to make some calculations:
DataReference -> return $ cmmMakePicReference lbl
@@
-140,7
+141,7
@@
cmmMakePicReference :: CLabel -> CmmExpr
-- everything gets relocated at runtime
cmmMakePicReference lbl
-- everything gets relocated at runtime
cmmMakePicReference lbl
- | (opt_PIC || not opt_Static) && absoluteLabel lbl = CmmMachOp (MO_Add wordRep) [
+ | (opt_PIC || not opt_Static) && absoluteLabel lbl = CmmMachOp (MO_Add wordWidth) [
CmmReg (CmmGlobal PicBaseReg),
CmmLit $ picRelative lbl
]
CmmReg (CmmGlobal PicBaseReg),
CmmLit $ picRelative lbl
]
@@
-550,12
+551,12
@@
pprImportedSymbol importedLbl
ptext symbolSize <+> pprCLabel_asm lbl
]
ptext symbolSize <+> pprCLabel_asm lbl
]
--- PLT code stubs are generated automatically be the dynamic linker.
+-- PLT code stubs are generated automatically by the dynamic linker.
| otherwise = empty
where
| otherwise = empty
where
- symbolSize = case wordRep of
- I32 -> sLit "\t.long"
- I64 -> sLit "\t.quad"
+ symbolSize = case wordWidth of
+ W32 -> sLit "\t.long"
+ W64 -> sLit "\t.quad"
_ -> panic "Unknown wordRep in pprImportedSymbol"
#else
_ -> panic "Unknown wordRep in pprImportedSymbol"
#else
@@
-614,7
+615,7
@@
initializePicBase picReg
(CmmProc info lab params (ListGraph blocks) : statics)
= do
gotOffLabel <- getNewLabelNat
(CmmProc info lab params (ListGraph blocks) : statics)
= do
gotOffLabel <- getNewLabelNat
- tmp <- getNewRegNat wordRep
+ tmp <- getNewRegNat $ intSize wordWidth
let
gotOffset = CmmData Text [
CmmDataLabel gotOffLabel,
let
gotOffset = CmmData Text [
CmmDataLabel gotOffLabel,
@@
-626,7
+627,7
@@
initializePicBase picReg
(ImmCLbl mkPicBaseLabel)
BasicBlock bID insns = head blocks
b' = BasicBlock bID (FETCHPC picReg
(ImmCLbl mkPicBaseLabel)
BasicBlock bID insns = head blocks
b' = BasicBlock bID (FETCHPC picReg
- : LD wordRep tmp
+ : LD wordSize tmp
(AddrRegImm picReg offsetToOffset)
: ADD picReg picReg (RIReg tmp)
: insns)
(AddrRegImm picReg offsetToOffset)
: ADD picReg picReg (RIReg tmp)
: insns)