Lines Matching +full:global +full:- +full:reset
4 * Copyright (c) 2011-2012 Jia Liu <proljc@gmail.com>
25 #include "system/reset.h"
29 /* Tick Timer global state to allow all cores to be in sync */
40 or1k_timer->ttcr = val; in cpu_openrisc_count_set()
41 or1k_timer->ttcr_offset = val; in cpu_openrisc_count_set()
42 or1k_timer->clk_offset = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); in cpu_openrisc_count_set()
47 return or1k_timer->ttcr; in cpu_openrisc_count_get()
55 if (!cpu->env.is_counting) { in cpu_openrisc_count_update()
59 or1k_timer->ttcr = or1k_timer->ttcr_offset + in cpu_openrisc_count_update()
60 DIV_ROUND_UP(now - or1k_timer->clk_offset, TIMER_PERIOD); in cpu_openrisc_count_update()
69 if (!cpu->env.is_counting) { in cpu_openrisc_timer_update()
76 if ((cpu->env.ttmr & TTMR_TP) <= (or1k_timer->ttcr & TTMR_TP)) { in cpu_openrisc_timer_update()
77 wait = TTMR_TP - (or1k_timer->ttcr & TTMR_TP) + 1; in cpu_openrisc_timer_update()
78 wait += cpu->env.ttmr & TTMR_TP; in cpu_openrisc_timer_update()
80 wait = (cpu->env.ttmr & TTMR_TP) - (or1k_timer->ttcr & TTMR_TP); in cpu_openrisc_timer_update()
83 timer_mod(cpu->env.timer, next); in cpu_openrisc_timer_update()
88 cpu->env.is_counting = 1; in cpu_openrisc_count_start()
94 timer_del(cpu->env.timer); in cpu_openrisc_count_stop()
96 cpu->env.is_counting = 0; in cpu_openrisc_count_stop()
103 if ((cpu->env.ttmr & TTMR_IE) && in openrisc_timer_cb()
104 timer_expired(cpu->env.timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL))) { in openrisc_timer_cb()
107 cpu->env.ttmr |= TTMR_IP; in openrisc_timer_cb()
108 cs->interrupt_request |= CPU_INTERRUPT_TIMER; in openrisc_timer_cb()
111 switch (cpu->env.ttmr & TTMR_M) { in openrisc_timer_cb()
116 or1k_timer->ttcr_offset -= (cpu->env.ttmr & TTMR_TP); in openrisc_timer_cb()
129 /* Reset the per CPU counter state. */
134 if (cpu->env.is_counting) { in openrisc_count_reset()
137 cpu->env.ttmr = 0x00000000; in openrisc_count_reset()
140 /* Reset the global timer state. */
161 cpu->env.timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, &openrisc_timer_cb, cpu); in cpu_openrisc_clock_init()