s390/early: move control registers setup in C code
Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
Родитель
13f9bae579
Коммит
c02ee6a16a
|
@ -11,6 +11,7 @@
|
|||
#include <linux/bits.h>
|
||||
|
||||
#define CR0_CLOCK_COMPARATOR_SIGN BIT(63 - 10)
|
||||
#define CR0_LOW_ADDRESS_PROTECTION BIT(63 - 35)
|
||||
#define CR0_EMERGENCY_SIGNAL_SUBMASK BIT(63 - 49)
|
||||
#define CR0_EXTERNAL_CALL_SUBMASK BIT(63 - 50)
|
||||
#define CR0_CLOCK_COMPARATOR_SUBMASK BIT(63 - 52)
|
||||
|
|
|
@ -260,6 +260,17 @@ static inline void save_vector_registers(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
static inline void setup_control_registers(void)
|
||||
{
|
||||
unsigned long reg;
|
||||
|
||||
__ctl_store(reg, 0, 0);
|
||||
reg |= CR0_LOW_ADDRESS_PROTECTION;
|
||||
reg |= CR0_EMERGENCY_SIGNAL_SUBMASK;
|
||||
reg |= CR0_EXTERNAL_CALL_SUBMASK;
|
||||
__ctl_load(reg, 0, 0);
|
||||
}
|
||||
|
||||
static int __init disable_vector_extension(char *str)
|
||||
{
|
||||
S390_lowcore.machine_flags &= ~MACHINE_FLAG_VX;
|
||||
|
@ -317,5 +328,6 @@ void __init startup_init(void)
|
|||
save_vector_registers();
|
||||
setup_topology();
|
||||
sclp_early_detect();
|
||||
setup_control_registers();
|
||||
lockdep_on();
|
||||
}
|
||||
|
|
|
@ -42,12 +42,6 @@ ENTRY(startup_continue)
|
|||
#
|
||||
brasl %r14,startup_init
|
||||
|
||||
# check control registers
|
||||
stctg %c0,%c15,0(%r15)
|
||||
oi 6(%r15),0x60 # enable sigp emergency & external call
|
||||
oi 4(%r15),0x10 # switch on low address proctection
|
||||
lctlg %c0,%c15,0(%r15)
|
||||
|
||||
lam 0,15,.Laregs-.LPG1(%r13) # load acrs needed by uaccess
|
||||
brasl %r14,start_kernel # go to C code
|
||||
#
|
||||
|
|
Загрузка…
Ссылка в новой задаче