pc-bios: s390x: Move panic() into header and add infinite loop

panic() was defined for the ccw and net bios, i.e. twice, so it's
cleaner to rather put it into the header.

Also let's add an infinite loop into the assembly of disabled_wait() so
the caller doesn't need to take care of it.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20200624075226.92728-9-frankja@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Janosch Frank 2020-06-24 03:52:22 -04:00 committed by Thomas Huth
parent fe75c657b8
commit add923b72e
4 changed files with 10 additions and 19 deletions

View File

@ -46,13 +46,6 @@ void write_iplb_location(void)
lowcore->ptr_iplb = ptr2u32(&iplb); lowcore->ptr_iplb = ptr2u32(&iplb);
} }
void panic(const char *string)
{
sclp_print(string);
disabled_wait();
while (1) { }
}
unsigned int get_loadparm_index(void) unsigned int get_loadparm_index(void)
{ {
return atoui(loadparm_str); return atoui(loadparm_str);

View File

@ -439,14 +439,6 @@ static int net_try_direct_tftp_load(filename_ip_t *fn_ip)
return rc; return rc;
} }
void panic(const char *string)
{
sclp_print(string);
for (;;) {
disabled_wait();
}
}
void write_subsystem_identification(void) void write_subsystem_identification(void)
{ {
SubChannelId *schid = (SubChannelId *) 184; SubChannelId *schid = (SubChannelId *) 184;

View File

@ -50,12 +50,11 @@ typedef unsigned long long __u64;
#include "iplb.h" #include "iplb.h"
/* start.s */ /* start.s */
void disabled_wait(void); void disabled_wait(void) __attribute__ ((__noreturn__));
void consume_sclp_int(void); void consume_sclp_int(void);
void consume_io_int(void); void consume_io_int(void);
/* main.c */ /* main.c */
void panic(const char *string);
void write_subsystem_identification(void); void write_subsystem_identification(void);
void write_iplb_location(void); void write_iplb_location(void);
extern char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE))); extern char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE)));
@ -91,6 +90,12 @@ bool menu_is_enabled_enum(void);
#define MAX_BOOT_ENTRIES 31 #define MAX_BOOT_ENTRIES 31
static inline void panic(const char *string)
{
sclp_print(string);
disabled_wait();
}
static inline void fill_hex(char *out, unsigned char val) static inline void fill_hex(char *out, unsigned char val)
{ {
const char hex[] = "0123456789abcdef"; const char hex[] = "0123456789abcdef";

View File

@ -49,6 +49,7 @@ memsetxc:
disabled_wait: disabled_wait:
larl %r1,disabled_wait_psw larl %r1,disabled_wait_psw
lpswe 0(%r1) lpswe 0(%r1)
1: j 1b
/* /*