提交 5beab991 编写于 作者: M Martin Schwidefsky

[S390] iucv cr0 enablement bit

Do not set the cr0 enablement bit for iucv by default in head[31|64].S,
move the enablement to iucv_init in the iucv base layer.
Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
上级 89c9b66b
...@@ -45,7 +45,7 @@ ENTRY(startup_continue) ...@@ -45,7 +45,7 @@ ENTRY(startup_continue)
# virtual and never return ... # virtual and never return ...
.align 8 .align 8
.Lentry:.long 0x00080000,0x80000000 + _stext .Lentry:.long 0x00080000,0x80000000 + _stext
.Lctl: .long 0x04b50002 # cr0: various things .Lctl: .long 0x04b50000 # cr0: various things
.long 0 # cr1: primary space segment table .long 0 # cr1: primary space segment table
.long .Lduct # cr2: dispatchable unit control table .long .Lduct # cr2: dispatchable unit control table
.long 0 # cr3: instruction authorization .long 0 # cr3: instruction authorization
......
...@@ -46,7 +46,7 @@ ENTRY(startup_continue) ...@@ -46,7 +46,7 @@ ENTRY(startup_continue)
.align 16 .align 16
.LPG1: .LPG1:
.Lentry:.quad 0x0000000180000000,_stext .Lentry:.quad 0x0000000180000000,_stext
.Lctl: .quad 0x04350002 # cr0: various things .Lctl: .quad 0x04350000 # cr0: various things
.quad 0 # cr1: primary space segment table .quad 0 # cr1: primary space segment table
.quad .Lduct # cr2: dispatchable unit control table .quad .Lduct # cr2: dispatchable unit control table
.quad 0 # cr3: instruction authorization .quad 0 # cr3: instruction authorization
......
...@@ -1988,12 +1988,13 @@ static int __init iucv_init(void) ...@@ -1988,12 +1988,13 @@ static int __init iucv_init(void)
rc = -EPROTONOSUPPORT; rc = -EPROTONOSUPPORT;
goto out; goto out;
} }
ctl_set_bit(0, 1);
rc = iucv_query_maxconn(); rc = iucv_query_maxconn();
if (rc) if (rc)
goto out; goto out_ctl;
rc = register_external_interrupt(0x4000, iucv_external_interrupt); rc = register_external_interrupt(0x4000, iucv_external_interrupt);
if (rc) if (rc)
goto out; goto out_ctl;
iucv_root = root_device_register("iucv"); iucv_root = root_device_register("iucv");
if (IS_ERR(iucv_root)) { if (IS_ERR(iucv_root)) {
rc = PTR_ERR(iucv_root); rc = PTR_ERR(iucv_root);
...@@ -2055,6 +2056,8 @@ static int __init iucv_init(void) ...@@ -2055,6 +2056,8 @@ static int __init iucv_init(void)
root_device_unregister(iucv_root); root_device_unregister(iucv_root);
out_int: out_int:
unregister_external_interrupt(0x4000, iucv_external_interrupt); unregister_external_interrupt(0x4000, iucv_external_interrupt);
out_ctl:
ctl_clear_bit(0, 1);
out: out:
return rc; return rc;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册