Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / legion / src / procs / sunsparc / libniagara / include / modarith_types.h
CommitLineData
920dae64
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: modarith_types.h
5* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
6* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
7*
8* The above named program is free software; you can redistribute it and/or
9* modify it under the terms of the GNU General Public
10* License version 2 as published by the Free Software Foundation.
11*
12* The above named program is distributed in the hope that it will be
13* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15* General Public License for more details.
16*
17* You should have received a copy of the GNU General Public
18* License along with this work; if not, write to the Free Software
19* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
20*
21* ========== Copyright Header End ============================================
22*/
23/*
24 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
26 */
27
28#ifndef _MODARITH_TYPES_H
29#define _MODARITH_TYPES_H
30
31#pragma ident "@(#)modarith_types.h 1.2 07/02/19 SMI"
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37#define MA_MEM_XWORDS 160
38#define MA_N_ADDR 6
39
40typedef struct MODARITH {
41 /* PERRINJ not implemented */
42 unsigned char strand; /* two bit integer */
43 unsigned char busy;
44 unsigned char do_interrupt;
45 unsigned char op;
46 unsigned char length; /* true length (field + 1) */
47 uint64_t ma_data_p; /* physaddr for load and store */
48 unsigned char ADDR[MA_N_ADDR]; /* offsets into MA memory */
49 uint64_t n_prime; /* for Montgomery multiplication */
50 uint64_t ma_mem[MA_MEM_XWORDS]; /* 1280 bytes of MA memory */
51 pthread_mutex_t lock;
52} mod_arith_t;
53
54
55
56typedef enum {
57 MOD_ARITH_DONE,
58 MOD_ARITH_LD_COMPLETE,
59 MOD_ARITH_DATA_ACCESS_EX_TRAP,
60 MOD_ARITH_MEM_ALIGN_TRAP,
61 MOD_ARITH_ILLEGAL_INST_TRAP,
62 MOD_ARITH_FATAL,
63 MOD_ARITH_UNIMPLEMENTED
64} mod_arith_rv_t;
65
66#ifdef __cplusplus
67}
68#endif
69
70#endif /* _MODARITH_TYPES_H */