IRQ: added irq source capability and make the inthandler setup use it
[barrelfish] / lib / barrelfish / arch / x86 / sys_debug.c
1 /**
2  * \file
3  * \brief Debug system calls for all x86 architectures, user-side
4  */
5
6 /*
7  * Copyright (c) 2007, 2008, 2009, 2010, ETH Zurich.
8  * All rights reserved.
9  *
10  * This file is distributed under the terms in the attached LICENSE file.
11  * If you do not find this file, copies can be found by writing to:
12  * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
13  */
14
15 #include <barrelfish/barrelfish.h>
16 #include <barrelfish/dispatch.h>
17 #include <barrelfish/syscall_arch.h>
18 #include <barrelfish_kpi/sys_debug.h>
19 #include <barrelfish/sys_debug.h>
20 #include <stdio.h>
21 #include <inttypes.h>
22
23 errval_t sys_debug_get_tsc_per_ms(uint64_t *ret)
24 {
25     struct sysret sr = syscall2(SYSCALL_DEBUG, DEBUG_GET_TSC_PER_MS);
26     *ret = sr.value;
27     return sr.error;
28 }
29
30 errval_t sys_debug_create_irq_src_cap(struct capref cap, uint16_t gsi)
31 {
32     uint8_t dcn_vbits = get_cnode_valid_bits(cap);
33     capaddr_t dcn_addr = get_cnode_addr(cap);
34
35     struct sysret sr = syscall6(SYSCALL_DEBUG, DEBUG_CREATE_IRQ_SRC_CAP, dcn_vbits, dcn_addr,
36         cap.slot, gsi);
37     return sr.error;
38 }
39
40 errval_t sys_debug_get_apic_id(uint8_t *ret)
41 {
42     struct sysret sr = syscall2(SYSCALL_DEBUG, DEBUG_GET_APIC_ID);
43     *ret = sr.value;
44     return sr.error;
45 }
46
47 errval_t sys_debug_get_apic_timer(uint32_t *ret)
48 {
49     struct sysret sr = syscall2(SYSCALL_DEBUG, DEBUG_GET_APIC_TIMER);
50     *ret = sr.value;
51     return sr.error;
52 }
53
54 errval_t sys_debug_get_apic_ticks_per_sec(uint32_t *ret)
55 {
56     struct sysret sr = syscall2(SYSCALL_DEBUG, DEBUG_GET_APIC_TICKS_PER_SEC);
57     *ret = sr.value;
58     return sr.error;
59 }