blob: ef9f59e381fd0563d0c2c9ecd69eb63bac9d060b [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* s390x io implementation
*
* Copyright (c) 2017 Red Hat Inc
*
* Authors:
* Thomas Huth <thuth@redhat.com>
* David Hildenbrand <david@redhat.com>
*/
#include <libcflat.h>
#include <argv.h>
#include <asm/spinlock.h>
#include <asm/facility.h>
#include <asm/sigp.h>
#include "sclp.h"
#include "smp.h"
extern char ipl_args[];
uint64_t stfl_doublewords[NB_STFL_DOUBLEWORDS];
static struct spinlock lock;
void setup(void);
void puts(const char *s)
{
spin_lock(&lock);
sclp_print(s);
spin_unlock(&lock);
}
void setup(void)
{
setup_args_progname(ipl_args);
setup_facilities();
sclp_read_info();
sclp_facilities_setup();
sclp_console_setup();
sclp_memory_setup();
smp_setup();
}
void exit(int code)
{
smp_teardown();
printf("\nEXIT: STATUS=%d\n", ((code) << 1) | 1);
while (1) {
sigp(stap(), SIGP_STOP, 0, NULL);
}
}