pc-bios/s390-ccw: add utility functions and "export" some others
Add several utility functions, make IPL_check and IPL_assert generally available, etc. Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Eugene (jno) Dvurechenski <jno@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
c9262e8a84
commit
dc25e843f6
|
@ -264,24 +264,6 @@ typedef enum {
|
||||||
|
|
||||||
/* utility code below */
|
/* utility code below */
|
||||||
|
|
||||||
static inline void IPL_assert(bool term, const char *message)
|
|
||||||
{
|
|
||||||
if (!term) {
|
|
||||||
sclp_print("\n! ");
|
|
||||||
sclp_print(message);
|
|
||||||
panic(" !\n"); /* no return */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void IPL_check(bool term, const char *message)
|
|
||||||
{
|
|
||||||
if (!term) {
|
|
||||||
sclp_print("\n! WARNING: ");
|
|
||||||
sclp_print(message);
|
|
||||||
sclp_print(" !\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static const unsigned char ebc2asc[256] =
|
static const unsigned char ebc2asc[256] =
|
||||||
/* 0123456789abcdef0123456789abcdef */
|
/* 0123456789abcdef0123456789abcdef */
|
||||||
"................................" /* 1F */
|
"................................" /* 1F */
|
||||||
|
|
|
@ -67,6 +67,7 @@ bool virtio_is_blk(struct subchannel_id schid);
|
||||||
void virtio_setup_block(struct subchannel_id schid);
|
void virtio_setup_block(struct subchannel_id schid);
|
||||||
int virtio_read(ulong sector, void *load_addr);
|
int virtio_read(ulong sector, void *load_addr);
|
||||||
int enable_mss_facility(void);
|
int enable_mss_facility(void);
|
||||||
|
ulong get_second(void);
|
||||||
|
|
||||||
/* bootmap.c */
|
/* bootmap.c */
|
||||||
void zipl_load(void);
|
void zipl_load(void);
|
||||||
|
@ -143,4 +144,42 @@ static inline void yield(void)
|
||||||
|
|
||||||
#define MAX_SECTOR_SIZE 4096
|
#define MAX_SECTOR_SIZE 4096
|
||||||
|
|
||||||
|
static inline void sleep(unsigned int seconds)
|
||||||
|
{
|
||||||
|
ulong target = get_second() + seconds;
|
||||||
|
|
||||||
|
while (get_second() < target) {
|
||||||
|
yield();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *memcpy(void *s1, const void *s2, size_t n)
|
||||||
|
{
|
||||||
|
uint8_t *p1 = s1;
|
||||||
|
const uint8_t *p2 = s2;
|
||||||
|
|
||||||
|
while (n--) {
|
||||||
|
p1[n] = p2[n];
|
||||||
|
}
|
||||||
|
return s1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void IPL_assert(bool term, const char *message)
|
||||||
|
{
|
||||||
|
if (!term) {
|
||||||
|
sclp_print("\n! ");
|
||||||
|
sclp_print(message);
|
||||||
|
panic(" !\n"); /* no return */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void IPL_check(bool term, const char *message)
|
||||||
|
{
|
||||||
|
if (!term) {
|
||||||
|
sclp_print("\n! WARNING: ");
|
||||||
|
sclp_print(message);
|
||||||
|
sclp_print(" !\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* S390_CCW_H */
|
#endif /* S390_CCW_H */
|
||||||
|
|
|
@ -162,7 +162,7 @@ static u64 get_clock(void)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ulong get_second(void)
|
ulong get_second(void)
|
||||||
{
|
{
|
||||||
return (get_clock() >> 12) / 1000000;
|
return (get_clock() >> 12) / 1000000;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue