@@ -229,6 +229,18 @@ static inline uint64_t stctg(int cr)
return value;
}
+#define CTL0_LOW_ADDR_PROT (63 - 35)
+#define CTL0_EDAT (63 - 40)
+#define CTL0_IEP (63 - 43)
+#define CTL0_AFP (63 - 45)
+#define CTL0_VECTOR (63 - 46)
+#define CTL0_EMERGENCY_SIGNAL (63 - 49)
+#define CTL0_EXTERNAL_CALL (63 - 50)
+#define CTL0_CLOCK_COMPARATOR (63 - 52)
+#define CTL0_SERVICE_SIGNAL (63 - 54)
+
+#define CTL2_GUARDED_STORAGE (63 - 59)
+
static inline void ctl_set_bit(int cr, unsigned int bit)
{
uint64_t reg;
@@ -38,12 +38,12 @@ static inline void set_fpc_dxc(uint8_t dxc)
static inline void afp_enable(void)
{
- ctl_set_bit(0, 63 - 45);
+ ctl_set_bit(0, CTL0_AFP);
}
static inline void afp_disable(void)
{
- ctl_clear_bit(0, 63 - 45);
+ ctl_clear_bit(0, CTL0_AFP);
}
#endif
@@ -27,13 +27,13 @@ void check_pgm_int_code(uint16_t code);
/* Activate low-address protection */
static inline void low_prot_enable(void)
{
- ctl_set_bit(0, 63 - 35);
+ ctl_set_bit(0, CTL0_LOW_ADDR_PROT);
}
/* Disable low-address protection */
static inline void low_prot_disable(void)
{
- ctl_clear_bit(0, 63 - 35);
+ ctl_clear_bit(0, CTL0_LOW_ADDR_PROT);
}
#endif
@@ -50,7 +50,7 @@ void sclp_setup_int(void)
{
uint64_t mask;
- ctl_set_bit(0, 9);
+ ctl_set_bit(0, CTL0_SERVICE_SIGNAL);
mask = extract_psw_mask();
mask |= PSW_MASK_EXT;
@@ -59,7 +59,7 @@ void sclp_setup_int(void)
void sclp_handle_ext(void)
{
- ctl_clear_bit(0, 9);
+ ctl_clear_bit(0, CTL0_SERVICE_SIGNAL);
spin_lock(&sclp_lock);
sclp_busy = false;
spin_unlock(&sclp_lock);
@@ -86,7 +86,7 @@ static void test_bite(void)
asm volatile("stck %0" : "=Q" (time) : : "cc");
time += (uint64_t)(16000 * 1000) << 12;
asm volatile("sckc %0" : : "Q" (time));
- ctl_set_bit(0, 11);
+ ctl_set_bit(0, CTL0_CLOCK_COMPARATOR);
mask = extract_psw_mask();
mask |= PSW_MASK_EXT;
load_psw_mask(mask);
@@ -145,7 +145,7 @@ static void test_special(void)
static void init(void)
{
/* Enable control bit for gs */
- ctl_set_bit(2, 4);
+ ctl_set_bit(2, CTL2_GUARDED_STORAGE);
/* Setup gs registers to guard the gs_area */
gs_cb.gsd = gs_area | 25;
@@ -22,7 +22,7 @@ static void test_iep(void)
void (*fn)(void);
/* Enable IEP */
- ctl_set_bit(0, 20);
+ ctl_set_bit(0, CTL0_IEP);
/* Get and protect a page with the IEP bit */
iepbuf = alloc_page();
@@ -40,7 +40,7 @@ static void test_iep(void)
check_pgm_int_code(PGM_INT_CODE_PROTECTION);
report_prefix_pop();
unprotect_page(iepbuf, PAGE_ENTRY_IEP);
- ctl_clear_bit(0, 20);
+ ctl_clear_bit(0, CTL0_IEP);
free_page(iepbuf);
}
@@ -150,7 +150,7 @@ static void ecall_setup(void)
/* Put a skey into the ext new psw */
lc->ext_new_psw.mask = 0x00F0000180000000UL;
/* Open up ext masks */
- ctl_set_bit(0, 13);
+ ctl_set_bit(0, CTL0_EXTERNAL_CALL);
mask = extract_psw_mask();
mask |= PSW_MASK_EXT;
load_psw_mask(mask);
@@ -154,7 +154,7 @@ static void ecall(void)
struct lowcore *lc = (void *)0x0;
expect_ext_int();
- ctl_set_bit(0, 13);
+ ctl_set_bit(0, CTL0_EXTERNAL_CALL);
mask = extract_psw_mask();
mask |= PSW_MASK_EXT;
load_psw_mask(mask);
@@ -188,7 +188,7 @@ static void emcall(void)
struct lowcore *lc = (void *)0x0;
expect_ext_int();
- ctl_set_bit(0, 14);
+ ctl_set_bit(0, CTL0_EMERGENCY_SIGNAL);
mask = extract_psw_mask();
mask |= PSW_MASK_EXT;
load_psw_mask(mask);
@@ -283,8 +283,8 @@ static void test_local_ints(void)
unsigned long mask;
/* Open masks for ecall and emcall */
- ctl_set_bit(0, 13);
- ctl_set_bit(0, 14);
+ ctl_set_bit(0, CTL0_EXTERNAL_CALL);
+ ctl_set_bit(0, CTL0_EMERGENCY_SIGNAL);
mask = extract_psw_mask();
mask |= PSW_MASK_EXT;
load_psw_mask(mask);
@@ -106,7 +106,7 @@ static void test_bcd_add(void)
static void init(void)
{
/* Enable vector instructions */
- ctl_set_bit(0, 17);
+ ctl_set_bit(0, CTL0_VECTOR);
/* Preset vector registers to 0xff */
memset(pagebuf, 0xff, PAGE_SIZE);