source: mainline/abi/include/ddi/irq.h@ 6c34f587

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 6c34f587 was 8486c07, checked in by Martin Decky <martin@…>, 13 years ago

IRQ pseudocode improvements

  • rename CMD_BTEST to CMD_AND (less cryptic)
  • implement CMD_LOAD to load a constant value into a scratch register
  • implement simple pseudocode static checker
  • slightly alter the semantics of several pseudocode commands (scratch[0] is a usable field, although not propagated to the IPC notification)
  • Property mode set to 100644
File size: 3.1 KB
Line 
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
38typedef struct {
39 uintptr_t base;
40 size_t size;
41} irq_pio_range_t;
42
43typedef enum {
44 /** Read 1 byte from the I/O space.
45 *
46 * *addr(8) -> scratch[dstarg]
47 */
48 CMD_PIO_READ_8 = 1,
49
50 /** Read 2 bytes from the I/O space.
51 *
52 * *addr(16) -> scratch[dstarg]
53 */
54 CMD_PIO_READ_16,
55
56 /** Read 4 bytes from the I/O space.
57 *
58 * *addr(32) -> scratch[dstarg]
59 */
60 CMD_PIO_READ_32,
61
62 /** Write 1 byte to the I/O space.
63 *
64 * value(8) -> *addr
65 */
66 CMD_PIO_WRITE_8,
67
68 /** Write 2 bytes to the I/O space.
69 *
70 * value(16) -> *addr
71 */
72 CMD_PIO_WRITE_16,
73
74 /** Write 4 bytes to the I/O space.
75 *
76 * value(32) -> *addr
77 */
78 CMD_PIO_WRITE_32,
79
80 /** Write 1 byte to the I/O space.
81 *
82 * scratch[srcarg](8) -> *addr
83 */
84 CMD_PIO_WRITE_A_8,
85
86 /** Write 2 bytes to the I/O space.
87 *
88 * scratch[srcarg](16) -> *addr
89 */
90 CMD_PIO_WRITE_A_16,
91
92 /** Write 4 bytes to the I/O space.
93 *
94 * scratch[srcarg](32) -> *addr
95 */
96 CMD_PIO_WRITE_A_32,
97
98 /** Load value.
99 *
100 * value -> scratch[dstarg]
101 */
102 CMD_LOAD,
103
104 /** Perform bitwise conjunction.
105 *
106 * scratch[srcarg] & value -> scratch[dstarg]
107 */
108 CMD_AND,
109
110 /** Predicate the execution of the following commands.
111 *
112 * if (scratch[srcarg] == 0)
113 * (skip the following 'value' commands)
114 */
115 CMD_PREDICATE,
116
117 /** Accept the interrupt. */
118 CMD_ACCEPT,
119
120 /** Decline the interrupt. */
121 CMD_DECLINE,
122 CMD_LAST
123} irq_cmd_type;
124
125typedef struct {
126 irq_cmd_type cmd;
127 void *addr;
128 uint32_t value;
129 uintptr_t srcarg;
130 uintptr_t dstarg;
131} irq_cmd_t;
132
133typedef struct {
134 size_t rangecount;
135 irq_pio_range_t *ranges;
136 size_t cmdcount;
137 irq_cmd_t *cmds;
138} irq_code_t;
139
140#endif
141
142/** @}
143 */
Note: See TracBrowser for help on using the repository browser.