mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 12:44:11 +08:00
[S390] Add exception handler for diagnose 224
To be able to run with the diagnose 224 switched off, a potential specification exception has to be handled. Signed-off-by: Michael Holzheu <holzheu@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
3f0a6766e0
commit
c41d4e3e68
@ -481,9 +481,17 @@ out:
|
||||
|
||||
/* Diagnose 224 functions */
|
||||
|
||||
static void diag224(void *ptr)
|
||||
static int diag224(void *ptr)
|
||||
{
|
||||
asm volatile("diag %0,%1,0x224" : :"d" (0), "d"(ptr) : "memory");
|
||||
int rc = -ENOTSUPP;
|
||||
|
||||
asm volatile(
|
||||
" diag %1,%2,0x224\n"
|
||||
"0: lhi %0,0x0\n"
|
||||
"1:\n"
|
||||
EX_TABLE(0b,1b)
|
||||
: "+d" (rc) :"d" (0), "d" (ptr) : "memory");
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int diag224_get_name_table(void)
|
||||
@ -492,7 +500,10 @@ static int diag224_get_name_table(void)
|
||||
diag224_cpu_names = kmalloc(PAGE_SIZE, GFP_KERNEL | GFP_DMA);
|
||||
if (!diag224_cpu_names)
|
||||
return -ENOMEM;
|
||||
diag224(diag224_cpu_names);
|
||||
if (diag224(diag224_cpu_names)) {
|
||||
kfree(diag224_cpu_names);
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
EBCASC(diag224_cpu_names + 16, (*diag224_cpu_names + 1) * 16);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user