aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/parisc/head.S15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/parisc/head.S b/src/parisc/head.S
index 6bad420..ff59680 100644
--- a/src/parisc/head.S
+++ b/src/parisc/head.S
@@ -9,6 +9,13 @@
#include "autoconf.h"
#include "autoversion.h"
+ /* load 32-bit 'value' into 'reg' with
+ sign-extension when running in wide mode. */
+ .macro load32_sign_extend value, reg
+ ldil L%\value, \reg
+ ldo R%\value(\reg), \reg
+ .endm
+
/* load 32-bit 'value' into 'reg' compensating for the ldil
* sign-extension when running in wide mode. */
.macro load32 value, reg
@@ -26,6 +33,14 @@
#endif
.endm
+ .macro load32_firmware value, reg
+ ldil L%\value, \reg
+ ldo R%\value(\reg), \reg
+#ifdef CONFIG_64BIT
+ depdi FIRMWARE_HIGH, 31, 32, \reg
+#endif
+ .endm
+
;! set the W bit
#define set_PSW_W .level 2.0 ! ssm PSW_W_SM, %r0 ! .level LEVEL