1/*
2** Copyright 2001, Travis Geiselbrecht. All rights reserved.
3** Distributed under the terms of the NewOS License.
4*/
5
6
7#include <boot/stage2.h>
8#include <kernel.h>
9#include <debug.h>
10
11#include <timer.h>
12#include <arch/timer.h>
13
14
15static bigtime_t sTickRate;
16
17
18void
19arch_timer_set_hardware_timer(bigtime_t timeout)
20{
21	bigtime_t new_val_64;
22
23	if(timeout < 1000)
24		timeout = 1000;
25
26	new_val_64 = (timeout * sTickRate) / 1000000;
27
28	asm("mtdec	%0" :: "r"((uint32)new_val_64));
29}
30
31
32void
33arch_timer_clear_hardware_timer()
34{
35	asm("mtdec	%0" :: "r"(0x7fffffff));
36}
37
38
39int
40arch_init_timer(kernel_args *ka)
41{
42	sTickRate = ka->arch_args.time_base_frequency;
43
44	return 0;
45}
46
47