Commit e70bc57b authored by Janosch Frank's avatar Janosch Frank Committed by Thomas Huth
Browse files

pc-bios: s390x: Consolidate timing functions into time.h



Let's consolidate timing related functions into one header.

Signed-off-by: default avatarJanosch Frank <frankja@linux.ibm.com>
Acked-by: default avatarThomas Huth <thuth@redhat.com>
Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
Message-Id: <20200624075226.92728-3-frankja@linux.ibm.com>
Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
parent 8c6cc7b9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
#include "libc.h"
#include "s390-ccw.h"
#include "sclp.h"
#include "s390-time.h"

#define KEYCODE_NO_INP '\0'
#define KEYCODE_ESCAPE '\033'
+3 −12
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#include "s390-ccw.h"
#include "cio.h"
#include "virtio.h"
#include "s390-time.h"

#define DEFAULT_BOOT_RETRIES 10
#define DEFAULT_TFTP_RETRIES 20
@@ -57,24 +58,14 @@ static SubChannelId net_schid = { .one = 1 };
static uint8_t mac[6];
static uint64_t dest_timer;

static uint64_t get_timer_ms(void)
{
    uint64_t clk;

    asm volatile(" stck %0 " : : "Q"(clk) : "memory");

    /* Bit 51 is incremented each microsecond */
    return (clk >> (63 - 51)) / 1000;
}

void set_timer(int val)
{
    dest_timer = get_timer_ms() + val;
    dest_timer = get_time_ms() + val;
}

int get_timer(void)
{
    return dest_timer - get_timer_ms();
    return dest_timer - get_time_ms();
}

int get_sec_ticks(void)
+4 −4
Original line number Diff line number Diff line
@@ -74,8 +74,6 @@ unsigned long virtio_load_direct(ulong rec_list1, ulong rec_list2,
bool virtio_is_supported(SubChannelId schid);
void virtio_blk_setup_device(SubChannelId schid);
int virtio_read(ulong sector, void *load_addr);
u64 get_clock(void);
ulong get_second(void);

/* bootmap.c */
void zipl_load(void);
@@ -153,11 +151,13 @@ static inline void yield(void)

#define MAX_SECTOR_SIZE 4096

#include "s390-time.h"

static inline void sleep(unsigned int seconds)
{
    ulong target = get_second() + seconds;
    ulong target = get_time_seconds() + seconds;

    while (get_second() < target) {
    while (get_time_seconds() < target) {
        yield();
    }
}
+23 −0
Original line number Diff line number Diff line
#ifndef TIME_H
#define TIME_H

static inline u64 get_clock(void)
{
    u64 r;

    asm volatile("stck %0" : "=Q" (r) : : "cc");
    return r;
}

static inline u64 get_time_ms(void)
{
    /* Bit 51 is incremented each microsecond */
    return (get_clock() >> 12) / 1000;
}

static inline u64 get_time_seconds(void)
{
    return get_time_ms() / 1000;
}

#endif
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <ethernet.h>
#include "s390-ccw.h"
#include "virtio.h"
#include "s390-time.h"

#ifndef DEBUG_VIRTIO_NET
#define DEBUG_VIRTIO_NET 0
Loading