Commit 19d36c21 authored by Jeremy Kerr's avatar Jeremy Kerr Committed by Michael Ellerman

powernv: Use _GLOBAL_TOC for opal wrappers

Currently, we can't call opal wrappers from modules when using the LE
ABIv2, which requires a TOC init. If we do we'll try and load the opal
entry point using the wrong toc and probably explode or worse jump to
the wrong address.

Nothing in upstream is making opal calls from a module, but we do export
one of the wrappers so we should fix this anyway.

This change uses the _GLOBAL_TOC() macro (rather than _GLOBAL) for the
opal wrappers, so that we can do non-local calls to them.
Signed-off-by: default avatarJeremy Kerr <jk@ozlabs.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent fcbb539f
...@@ -58,7 +58,7 @@ END_FTR_SECTION(0, 1); \ ...@@ -58,7 +58,7 @@ END_FTR_SECTION(0, 1); \
*/ */
#define OPAL_CALL(name, token) \ #define OPAL_CALL(name, token) \
_GLOBAL(name); \ _GLOBAL_TOC(name); \
mflr r0; \ mflr r0; \
std r0,16(r1); \ std r0,16(r1); \
li r0,token; \ li r0,token; \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment