diff options
-rw-r--r-- | src/parisc/head.S | 15 |
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 |