diff options
author | Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> | 2018-02-09 18:51:36 +0000 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2018-02-11 10:11:08 +1100 |
commit | 42a0938f92a842ed20b2ed4ce65231fca9b66f41 (patch) | |
tree | c6a0b7cd447e0aa3d0b7b5fc5194efe9c5b0826a /hw/misc | |
parent | 27c5cee1c390b6d6ed852dd10d0822cbb91a847e (diff) | |
download | qemu-42a0938f92a842ed20b2ed4ce65231fca9b66f41.zip qemu-42a0938f92a842ed20b2ed4ce65231fca9b66f41.tar.gz qemu-42a0938f92a842ed20b2ed4ce65231fca9b66f41.tar.bz2 |
cuda: minor cosmetic tidy-ups to get_next_irq_time()
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'hw/misc')
-rw-r--r-- | hw/misc/macio/cuda.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c index d4a52fb..7299052 100644 --- a/hw/misc/macio/cuda.c +++ b/hw/misc/macio/cuda.c @@ -184,36 +184,37 @@ static void set_counter(CUDAState *s, CUDATimer *ti, unsigned int val) cuda_timer_update(s, ti, ti->load_time); } -static int64_t get_next_irq_time(CUDATimer *s, int64_t current_time) +static int64_t get_next_irq_time(CUDATimer *ti, int64_t current_time) { int64_t d, next_time; unsigned int counter; /* current counter value */ - d = muldiv64(current_time - s->load_time, + d = muldiv64(current_time - ti->load_time, CUDA_TIMER_FREQ, NANOSECONDS_PER_SECOND); /* the timer goes down from latch to -1 (period of latch + 2) */ - if (d <= (s->counter_value + 1)) { - counter = (s->counter_value - d) & 0xffff; + if (d <= (ti->counter_value + 1)) { + counter = (ti->counter_value - d) & 0xffff; } else { - counter = (d - (s->counter_value + 1)) % (s->latch + 2); - counter = (s->latch - counter) & 0xffff; + counter = (d - (ti->counter_value + 1)) % (ti->latch + 2); + counter = (ti->latch - counter) & 0xffff; } /* Note: we consider the irq is raised on 0 */ if (counter == 0xffff) { - next_time = d + s->latch + 1; + next_time = d + ti->latch + 1; } else if (counter == 0) { - next_time = d + s->latch + 2; + next_time = d + ti->latch + 2; } else { next_time = d + counter; } CUDA_DPRINTF("latch=%d counter=%" PRId64 " delta_next=%" PRId64 "\n", - s->latch, d, next_time - d); + ti->latch, d, next_time - d); next_time = muldiv64(next_time, NANOSECONDS_PER_SECOND, CUDA_TIMER_FREQ) + - s->load_time; - if (next_time <= current_time) + ti->load_time; + if (next_time <= current_time) { next_time = current_time + 1; + } return next_time; } |