blob: c0f0bf7674c6c3f25a893c5efd7bb8c151b89136 [file] [log] [blame]
/*
* s390x io implementation
*
* Copyright (c) 2017 Red Hat Inc
*
* Authors:
* Thomas Huth <thuth@redhat.com>
* David Hildenbrand <david@redhat.com>
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU Library General Public License version 2.
*/
#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_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);
}
}