1 /***************************************************************************
2 * Copyright (C) 2013 Andes Technology *
3 * Hsiangkai Wang <hkwang@andestech.com> *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
17 ***************************************************************************/
18 #ifndef __NDS32_REG_H__
19 #define __NDS32_REG_H__
21 #define SRIDX(a, b, c) ((a << 7) | (b << 3) | c)
22 #define NDS32_REGISTER_DISABLE (0x0)
24 enum nds32_reg_number_s {
25 R0 = 0, /* general registers */
64 CR0, /* system registers */
183 D0L24, /* audio registers */
285 enum nds32_reg_type_s {
286 NDS32_REG_TYPE_GPR = 0,
297 NDS32_REG_TYPE_SECURE,
302 const char *simple_mnemonic;
303 const char *symbolic_mnemonic;
305 enum nds32_reg_type_s type;
309 struct nds32_reg_exception_s {
311 uint32_t ex_value_bit_pos;
312 uint32_t ex_value_mask;
316 void nds32_reg_init(void);
317 uint32_t nds32_reg_sr_index(uint32_t number);
318 enum nds32_reg_type_s nds32_reg_type(uint32_t number);
319 uint8_t nds32_reg_size(uint32_t number);
320 const char *nds32_reg_simple_name(uint32_t number);
321 const char *nds32_reg_symbolic_name(uint32_t number);
322 bool nds32_reg_exception(uint32_t number, uint32_t value);