Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Alex D
GHC
Commits
581a6a7c
Commit
581a6a7c
authored
Jan 21, 2009
by
Ben.Lippmeier@anu.edu.au
Browse files
SPARC NCG: Also do misaligned reads
parent
485ab9c9
Changes
1
Hide whitespace changes
Inline
Side-by-side
rts/RtsAPI.c
View file @
581a6a7c
...
...
@@ -292,6 +292,12 @@ rts_getInt32 (HaskellObj p)
return
(
HsInt32
)(
HsInt
)(
UNTAG_CLOSURE
(
p
)
->
payload
[
0
]);
}
#ifdef sparc_HOST_ARCH
/* The closures returned by allocateLocal are only guaranteed to be 32 bit
aligned, because that's the size of pointers. SPARC v9 can't do
misaligned loads/stores, so we have to read the 64bit word in chunks */
HsInt64
rts_getInt64
(
HaskellObj
p
)
{
...
...
@@ -302,6 +308,25 @@ rts_getInt64 (HaskellObj p)
tmp
=
(
HsInt64
*
)
&
(
UNTAG_CLOSURE
(
p
)
->
payload
[
0
]);
return
*
tmp
;
}
#else
HsInt64
rts_getInt64
(
HaskellObj
p
)
{
HsInt32
*
tmp
;
// See comment above:
// ASSERT(p->header.info == I64zh_con_info ||
// p->header.info == I64zh_static_info);
tmp
=
(
HsInt32
*
)
&
(
UNTAG_CLOSURE
(
p
)
->
payload
[
0
]);
HsInt64
i
=
(
HsInt64
)(
tmp
[
0
]
<<
32
)
|
(
HsInt64
)
tmp
[
1
];
return
i
}
#endif
/* sparc_HOST_ARCH */
HsWord
rts_getWord
(
HaskellObj
p
)
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment