blob: 51ee9e289b48237028a0353d855a265831026b13 [file] [log] [blame]
Wolfgang Denk4646d2a2006-05-30 15:56:48 +02001/**
2 * @file IxNpeMhMacros_p.h
3 *
4 * @author Intel Corporation
5 * @date 21 Jan 2002
6 *
7 * @brief This file contains the macros for the IxNpeMh component.
8 *
9 *
10 * @par
11 * IXP400 SW Release version 2.0
12 *
13 * -- Copyright Notice --
14 *
15 * @par
16 * Copyright 2001-2005, Intel Corporation.
17 * All rights reserved.
18 *
19 * @par
Wolfgang Denkc57eadc2013-07-28 22:12:47 +020020 * SPDX-License-Identifier: BSD-3-Clause
Wolfgang Denk4646d2a2006-05-30 15:56:48 +020021 * @par
22 * -- End of Copyright Notice --
23*/
24
25/**
26 * @defgroup IxNpeMhMacros_p IxNpeMhMacros_p
27 *
28 * @brief Macros for the IxNpeMh component.
29 *
30 * @{
31 */
32
33#ifndef IXNPEMHMACROS_P_H
34#define IXNPEMHMACROS_P_H
35
36/* if we are running as a unit test */
37#ifdef IX_UNIT_TEST
38#undef NDEBUG
39#endif /* #ifdef IX_UNIT_TEST */
40
41#include "IxOsal.h"
42
43/*
44 * #defines for function return types, etc.
45 */
46
47#define IX_NPEMH_SHOW_TEXT_WIDTH (40) /**< text width for stats display */
48#define IX_NPEMH_SHOW_STAT_WIDTH (10) /**< stat width for stats display */
49
50/**
51 * @def IX_NPEMH_SHOW
52 *
53 * @brief Macro for displaying a stat preceded by a textual description.
54 */
55
56#define IX_NPEMH_SHOW(TEXT, STAT) \
57 ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, \
58 "%-40s: %10d\n", (int) TEXT, (int) STAT, 0, 0, 0, 0)
59
60/*
61 * Prototypes for interface functions.
62 */
63
64/**
65 * @typedef IxNpeMhTraceTypes
66 *
67 * @brief Enumeration defining IxNpeMh trace levels
68 */
69
70typedef enum
71{
72 IX_NPEMH_TRACE_OFF = IX_OSAL_LOG_LVL_NONE, /**< no trace */
73 IX_NPEMH_WARNING = IX_OSAL_LOG_LVL_WARNING, /**< warning */
74 IX_NPEMH_DEBUG = IX_OSAL_LOG_LVL_MESSAGE, /**< debug */
75 IX_NPEMH_FN_ENTRY_EXIT = IX_OSAL_LOG_LVL_DEBUG3 /**< function entry/exit */
76} IxNpeMhTraceTypes;
77
78#ifdef IX_UNIT_TEST
79#define IX_NPEMH_TRACE_LEVEL (IX_NPEMH_FN_ENTRY_EXIT) /**< trace level */
80#else
81#define IX_NPEMH_TRACE_LEVEL (IX_NPEMH_TRACE_OFF) /**< trace level */
82#endif
83
84/**
85 * @def IX_NPEMH_TRACE0
86 *
87 * @brief Trace macro taking 0 arguments.
88 */
89
90#define IX_NPEMH_TRACE0(LEVEL, STR) \
91 IX_NPEMH_TRACE6(LEVEL, STR, 0, 0, 0, 0, 0, 0)
92
93/**
94 * @def IX_NPEMH_TRACE1
95 *
96 * @brief Trace macro taking 1 argument.
97 */
98
99#define IX_NPEMH_TRACE1(LEVEL, STR, ARG1) \
100 IX_NPEMH_TRACE6(LEVEL, STR, ARG1, 0, 0, 0, 0, 0)
101
102/**
103 * @def IX_NPEMH_TRACE2
104 *
105 * @brief Trace macro taking 2 arguments.
106 */
107
108#define IX_NPEMH_TRACE2(LEVEL, STR, ARG1, ARG2) \
109 IX_NPEMH_TRACE6(LEVEL, STR, ARG1, ARG2, 0, 0, 0, 0)
110
111/**
112 * @def IX_NPEMH_TRACE3
113 *
114 * @brief Trace macro taking 3 arguments.
115 */
116
117#define IX_NPEMH_TRACE3(LEVEL, STR, ARG1, ARG2, ARG3) \
118 IX_NPEMH_TRACE6(LEVEL, STR, ARG1, ARG2, ARG3, 0, 0, 0)
119
120/**
121 * @def IX_NPEMH_TRACE4
122 *
123 * @brief Trace macro taking 4 arguments.
124 */
125
126#define IX_NPEMH_TRACE4(LEVEL, STR, ARG1, ARG2, ARG3, ARG4) \
127 IX_NPEMH_TRACE6(LEVEL, STR, ARG1, ARG2, ARG3, ARG4, 0, 0)
128
129/**
130 * @def IX_NPEMH_TRACE5
131 *
132 * @brief Trace macro taking 5 arguments.
133 */
134
135#define IX_NPEMH_TRACE5(LEVEL, STR, ARG1, ARG2, ARG3, ARG4, ARG5) \
136 IX_NPEMH_TRACE6(LEVEL, STR, ARG1, ARG2, ARG3, ARG4, ARG5, 0)
137
138/**
139 * @def IX_NPEMH_TRACE6
140 *
141 * @brief Trace macro taking 6 arguments.
142 */
143
144#define IX_NPEMH_TRACE6(LEVEL, STR, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
145{ \
146 if (LEVEL <= IX_NPEMH_TRACE_LEVEL) \
147 { \
148 (void) ixOsalLog (LEVEL, IX_OSAL_LOG_DEV_STDOUT, (STR), \
149 (int)(ARG1), (int)(ARG2), (int)(ARG3), \
150 (int)(ARG4), (int)(ARG5), (int)(ARG6)); \
151 } \
152}
153
154/**
155 * @def IX_NPEMH_ERROR_REPORT
156 *
157 * @brief Error reporting facility.
158 */
159
160#define IX_NPEMH_ERROR_REPORT(STR) \
161{ \
162 (void) ixOsalLog (IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR, \
163 (STR), 0, 0, 0, 0, 0, 0); \
164}
165
166/* if we are running on XScale, i.e. real environment */
167#if CPU==XSCALE
168
169/**
170 * @def IX_NPEMH_REGISTER_READ
171 *
172 * @brief This macro reads a memory-mapped register.
173 */
174
175#define IX_NPEMH_REGISTER_READ(registerAddress, value) \
176{ \
177 *value = IX_OSAL_READ_LONG(registerAddress); \
178}
179
180/**
181 * @def IX_NPEMH_REGISTER_READ_BITS
182 *
183 * @brief This macro partially reads a memory-mapped register.
184 */
185
186#define IX_NPEMH_REGISTER_READ_BITS(registerAddress, value, mask) \
187{ \
188 *value = (IX_OSAL_READ_LONG(registerAddress) & mask); \
189}
190
191/**
192 * @def IX_NPEMH_REGISTER_WRITE
193 *
194 * @brief This macro writes a memory-mapped register.
195 */
196
197#define IX_NPEMH_REGISTER_WRITE(registerAddress, value) \
198{ \
199 IX_OSAL_WRITE_LONG(registerAddress, value); \
200}
201
202/**
203 * @def IX_NPEMH_REGISTER_WRITE_BITS
204 *
205 * @brief This macro partially writes a memory-mapped register.
206 */
207
208#define IX_NPEMH_REGISTER_WRITE_BITS(registerAddress, value, mask) \
209{ \
210 UINT32 orig = IX_OSAL_READ_LONG(registerAddress); \
211 orig &= (~mask); \
212 orig |= (value & mask); \
213 IX_OSAL_WRITE_LONG(registerAddress, orig); \
214}
215
216
217/* if we are running as a unit test */
218#else /* #if CPU==XSCALE */
219
220#include "IxNpeMhTestRegister.h"
221
222/**
223 * @def IX_NPEMH_REGISTER_READ
224 *
225 * @brief This macro reads a memory-mapped register.
226 */
227
228#define IX_NPEMH_REGISTER_READ(registerAddress, value) \
229{ \
230 ixNpeMhTestRegisterRead (registerAddress, value); \
231}
232
233/**
234 * @def IX_NPEMH_REGISTER_READ_BITS
235 *
236 * @brief This macro partially reads a memory-mapped register.
237 */
238
239#define IX_NPEMH_REGISTER_READ_BITS(registerAddress, value, mask) \
240{ \
241 ixNpeMhTestRegisterReadBits (registerAddress, value, mask); \
242}
243
244/**
245 * @def IX_NPEMH_REGISTER_WRITE
246 *
247 * @brief This macro writes a memory-mapped register.
248 */
249
250#define IX_NPEMH_REGISTER_WRITE(registerAddress, value) \
251{ \
252 ixNpeMhTestRegisterWrite (registerAddress, value); \
253}
254
255/**
256 * @def IX_NPEMH_REGISTER_WRITE_BITS
257 *
258 * @brief This macro partially writes a memory-mapped register.
259 */
260
261#define IX_NPEMH_REGISTER_WRITE_BITS(registerAddress, value, mask) \
262{ \
263 ixNpeMhTestRegisterWriteBits (registerAddress, value, mask); \
264}
265
266#endif /* #if CPU==XSCALE */
267
268#endif /* IXNPEMHMACROS_P_H */
269
270/**
271 * @} defgroup IxNpeMhMacros_p
272 */