@@ -14,12 +14,12 @@
#include <asm/facility.h>
#include <asm/arch_def.h>
-#define NR_STFL_BYTES 256
-extern uint8_t stfl_bytes[];
+#define NB_STFL_DOUBLEWORDS 32
+extern uint64_t stfl_doublewords[];
static inline bool test_facility(int nr)
{
- return stfl_bytes[nr / 8] & (0x80U >> (nr % 8));
+ return stfl_doublewords[nr / 64] & (0x8000000000000000UL >> (nr % 64));
}
static inline void stfl(void)
@@ -27,9 +27,9 @@ static inline void stfl(void)
asm volatile(" stfl 0(0)\n" : : : "memory");
}
-static inline void stfle(uint8_t *fac, unsigned int len)
+static inline void stfle(uint64_t *fac, unsigned int nb_doublewords)
{
- register unsigned long r0 asm("0") = len - 1;
+ register unsigned long r0 asm("0") = nb_doublewords - 1;
asm volatile(" .insn s,0xb2b00000,0(%1)\n"
: "+d" (r0) : "a" (fac) : "memory", "cc");
@@ -40,9 +40,9 @@ static inline void setup_facilities(void)
struct lowcore *lc = NULL;
stfl();
- memcpy(stfl_bytes, &lc->stfl, sizeof(lc->stfl));
+ memcpy(stfl_doublewords, &lc->stfl, sizeof(lc->stfl));
if (test_facility(7))
- stfle(stfl_bytes, NR_STFL_BYTES);
+ stfle(stfl_doublewords, NB_STFL_DOUBLEWORDS);
}
#endif
@@ -19,7 +19,7 @@
#include "smp.h"
extern char ipl_args[];
-uint8_t stfl_bytes[NR_STFL_BYTES] __attribute__((aligned(8)));
+uint64_t stfl_doublewords[NB_STFL_DOUBLEWORDS];
static struct spinlock lock;