~maresja1/helenos/qemu_porting

« back to all changes in this revision

Viewing changes to abi/include/ddi/irq.h

  • Committer: Martin Decky
  • Date: 2011-08-09 18:08:23 UTC
  • Revision ID: martin@decky.cz-20110809180823-yf3gc26yqs7p30sq
do not provide general access to kernel headers from uspace, only allow specific headers to be accessed or shared
externalize headers which serve as kernel/uspace API/ABI into a special tree

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2006 Jakub Jermar
 
3
 * All rights reserved.
 
4
 *
 
5
 * Redistribution and use in source and binary forms, with or without
 
6
 * modification, are permitted provided that the following conditions
 
7
 * are met:
 
8
 *
 
9
 * - Redistributions of source code must retain the above copyright
 
10
 *   notice, this list of conditions and the following disclaimer.
 
11
 * - Redistributions in binary form must reproduce the above copyright
 
12
 *   notice, this list of conditions and the following disclaimer in the
 
13
 *   documentation and/or other materials provided with the distribution.
 
14
 * - The name of the author may not be used to endorse or promote products
 
15
 *   derived from this software without specific prior written permission.
 
16
 *
 
17
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 
18
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 
19
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 
20
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 
21
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 
22
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
23
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
24
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
25
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 
26
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
27
 */
 
28
 
 
29
/** @addtogroup genericddi
 
30
 * @{
 
31
 */
 
32
/** @file
 
33
 */
 
34
 
 
35
#ifndef ABI_DDI_IRQ_H_
 
36
#define ABI_DDI_IRQ_H_
 
37
 
 
38
typedef enum {
 
39
        /** Read 1 byte from the I/O space. */
 
40
        CMD_PIO_READ_8 = 1,
 
41
        /** Read 2 bytes from the I/O space. */
 
42
        CMD_PIO_READ_16,
 
43
        /** Read 4 bytes from the I/O space. */
 
44
        CMD_PIO_READ_32,
 
45
        
 
46
        /** Write 1 byte to the I/O space. */
 
47
        CMD_PIO_WRITE_8,
 
48
        /** Write 2 bytes to the I/O space. */
 
49
        CMD_PIO_WRITE_16,
 
50
        /** Write 4 bytes to the I/O space. */
 
51
        CMD_PIO_WRITE_32,
 
52
        
 
53
        /**
 
54
         * Write 1 byte from the source argument
 
55
         * to the I/O space.
 
56
         */
 
57
        CMD_PIO_WRITE_A_8,
 
58
        /**
 
59
         * Write 2 bytes from the source argument
 
60
         * to the I/O space.
 
61
         */
 
62
        CMD_PIO_WRITE_A_16,
 
63
        /**
 
64
         * Write 4 bytes from the source argument
 
65
         * to the I/O space.
 
66
         */
 
67
        CMD_PIO_WRITE_A_32,
 
68
        
 
69
        /** Read 1 byte from the memory space. */
 
70
        CMD_MEM_READ_8,
 
71
        /** Read 2 bytes from the memory space. */
 
72
        CMD_MEM_READ_16,
 
73
        /** Read 4 bytes from the memory space. */
 
74
        CMD_MEM_READ_32,
 
75
        
 
76
        /** Write 1 byte to the memory space. */
 
77
        CMD_MEM_WRITE_8,
 
78
        /** Write 2 bytes to the memory space. */
 
79
        CMD_MEM_WRITE_16,
 
80
        /** Write 4 bytes to the memory space. */
 
81
        CMD_MEM_WRITE_32,
 
82
        
 
83
        /** Write 1 byte from the source argument to the memory space. */
 
84
        CMD_MEM_WRITE_A_8,
 
85
        /** Write 2 bytes from the source argument to the memory space. */
 
86
        CMD_MEM_WRITE_A_16,
 
87
        /** Write 4 bytes from the source argument to the memory space. */
 
88
        CMD_MEM_WRITE_A_32,
 
89
        
 
90
        /**
 
91
         * Perform a bit masking on the source argument
 
92
         * and store the result into the destination argument.
 
93
         */
 
94
        CMD_BTEST,
 
95
        
 
96
        /**
 
97
         * Predicate the execution of the following
 
98
         * N commands by the boolean value of the source
 
99
         * argument.
 
100
         */
 
101
        CMD_PREDICATE,
 
102
        
 
103
        /** Accept the interrupt. */
 
104
        CMD_ACCEPT,
 
105
        
 
106
        /** Decline the interrupt. */
 
107
        CMD_DECLINE,
 
108
        CMD_LAST
 
109
} irq_cmd_type;
 
110
 
 
111
typedef struct {
 
112
        irq_cmd_type cmd;
 
113
        void *addr;
 
114
        uint32_t value;
 
115
        uintptr_t srcarg;
 
116
        uintptr_t dstarg;
 
117
} irq_cmd_t;
 
118
 
 
119
typedef struct {
 
120
        size_t cmdcount;
 
121
        irq_cmd_t *cmds;
 
122
} irq_code_t;
 
123
 
 
124
#endif
 
125
 
 
126
/** @}
 
127
 */