target/sh4: only save flags state at the end of the TB
[qemu/ar7.git] / tests / ptimer-test-stubs.c
blob8a1b0a336cfafa1b42fbf044a03399f066193c3d
1 /*
2 * Stubs for the ptimer-test
4 * Copyright (c) 2016 Dmitry Osipenko <digetx@gmail.com>
6 * This work is licensed under the terms of the GNU GPL, version 2 or later.
7 * See the COPYING file in the top-level directory.
9 */
11 #include "qemu/osdep.h"
12 #include "qemu/main-loop.h"
13 #include "sysemu/replay.h"
14 #include "migration/vmstate.h"
16 #include "ptimer-test.h"
18 const VMStateInfo vmstate_info_uint8;
19 const VMStateInfo vmstate_info_uint32;
20 const VMStateInfo vmstate_info_uint64;
21 const VMStateInfo vmstate_info_int64;
22 const VMStateInfo vmstate_info_timer;
24 struct QEMUBH {
25 QEMUBHFunc *cb;
26 void *opaque;
29 QEMUTimerListGroup main_loop_tlg;
31 int64_t ptimer_test_time_ns;
33 void timer_init_tl(QEMUTimer *ts,
34 QEMUTimerList *timer_list, int scale,
35 QEMUTimerCB *cb, void *opaque)
37 ts->timer_list = timer_list;
38 ts->cb = cb;
39 ts->opaque = opaque;
40 ts->scale = scale;
41 ts->expire_time = -1;
44 void timer_mod(QEMUTimer *ts, int64_t expire_time)
46 QEMUTimerList *timer_list = ts->timer_list;
47 QEMUTimer *t = &timer_list->active_timers;
49 while (t->next != NULL) {
50 if (t->next == ts) {
51 break;
54 t = t->next;
57 ts->expire_time = MAX(expire_time * ts->scale, 0);
58 ts->next = NULL;
59 t->next = ts;
62 void timer_del(QEMUTimer *ts)
64 QEMUTimerList *timer_list = ts->timer_list;
65 QEMUTimer *t = &timer_list->active_timers;
67 while (t->next != NULL) {
68 if (t->next == ts) {
69 t->next = ts->next;
70 return;
73 t = t->next;
77 int64_t qemu_clock_get_ns(QEMUClockType type)
79 return ptimer_test_time_ns;
82 int64_t qemu_clock_deadline_ns_all(QEMUClockType type)
84 QEMUTimerList *timer_list = main_loop_tlg.tl[type];
85 QEMUTimer *t = timer_list->active_timers.next;
86 int64_t deadline = -1;
88 while (t != NULL) {
89 if (deadline == -1) {
90 deadline = t->expire_time;
91 } else {
92 deadline = MIN(deadline, t->expire_time);
95 t = t->next;
98 return deadline;
101 QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque)
103 QEMUBH *bh = g_new(QEMUBH, 1);
105 bh->cb = cb;
106 bh->opaque = opaque;
108 return bh;
111 void qemu_bh_delete(QEMUBH *bh)
113 g_free(bh);
116 void replay_bh_schedule_event(QEMUBH *bh)
118 bh->cb(bh->opaque);