hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Broadcom SiliconBackplane ARM definitions
 *
 * Copyright (C) 1999-2019, Broadcom.
 *
 *      Unless you and Broadcom execute a separate written software license
 * agreement governing use of this software, this software is licensed to you
 * under the terms of the GNU General Public License version 2 (the "GPL"),
 * available at http://www.broadcom.com/licenses/GPLv2.php, with the
 * following added to such license:
 *
 *      As a special exception, the copyright holders of this software give you
 * permission to link this software with independent modules, and to copy and
 * distribute the resulting executable under terms of your choice, provided that
 * you also meet, for each linked independent module, the terms and conditions of
 * the license of that module.  An independent module is a module which is not
 * derived from this software.  The special exception does not apply to any
 * modifications of the software.
 *
 *      Notwithstanding the above, under no circumstances may you combine this
 * software in any way with any other Broadcom software provided under a license
 * other than the GPL, without Broadcom's express prior written consent.
 *
 *
 * <<Broadcom-WL-IPTag/Open:>>
 *
 * $Id: sbhndarm.h 799498 2019-01-16 06:02:27Z $
 */
 
#ifndef    _sbhndarm_h_
#define    _sbhndarm_h_
 
#ifndef _LANGUAGE_ASSEMBLY
 
/* cpp contortions to concatenate w/arg prescan */
#ifndef PAD
#define    _PADLINE(line)    pad ## line
#define    _XSTR(line)    _PADLINE(line)
#define    PAD        _XSTR(__LINE__)
#endif    /* PAD */
 
/* cortex-m3 */
typedef volatile struct {
   uint32    corecontrol;    /* 0x0 */
   uint32    corestatus;    /* 0x4 */
   uint32    PAD[1];
   uint32    biststatus;    /* 0xc */
   uint32    nmiisrst;    /* 0x10 */
   uint32    nmimask;    /* 0x14 */
   uint32    isrmask;    /* 0x18 */
   uint32    PAD[1];
   uint32    resetlog;    /* 0x20 */
   uint32    gpioselect;    /* 0x24 */
   uint32    gpioenable;    /* 0x28 */
   uint32    PAD[1];
   uint32    bpaddrlo;    /* 0x30 */
   uint32    bpaddrhi;    /* 0x34 */
   uint32    bpdata;        /* 0x38 */
   uint32    bpindaccess;    /* 0x3c */
   uint32    ovlidx;        /* 0x40 */
   uint32    ovlmatch;    /* 0x44 */
   uint32    ovladdr;    /* 0x48 */
   uint32    PAD[13];
   uint32    bwalloc;    /* 0x80 */
   uint32    PAD[3];
   uint32    cyclecnt;    /* 0x90 */
   uint32    inttimer;    /* 0x94 */
   uint32    intmask;    /* 0x98 */
   uint32    intstatus;    /* 0x9c */
   uint32    PAD[80];
   uint32    clk_ctl_st;    /* 0x1e0 */
   uint32  PAD[1];
   uint32  powerctl;    /* 0x1e8 */
} cm3regs_t;
#define ARM_CM3_REG(regs, reg)    (&((cm3regs_t *)regs)->reg)
 
/* cortex-R4 */
typedef volatile struct {
   uint32    corecontrol;    /* 0x0 */
   uint32    corecapabilities; /* 0x4 */
   uint32    corestatus;    /* 0x8 */
   uint32    biststatus;    /* 0xc */
   uint32    nmiisrst;    /* 0x10 */
   uint32    nmimask;    /* 0x14 */
   uint32    isrmask;    /* 0x18 */
   uint32    swintreg;    /* 0x1C */
   uint32    intstatus;    /* 0x20 */
   uint32    intmask;    /* 0x24 */
   uint32    cyclecnt;    /* 0x28 */
   uint32    inttimer;    /* 0x2c */
   uint32    gpioselect;    /* 0x30 */
   uint32    gpioenable;    /* 0x34 */
   uint32    PAD[2];
   uint32    bankidx;    /* 0x40 */
   uint32    bankinfo;    /* 0x44 */
   uint32    bankstbyctl;    /* 0x48 */
   uint32    bankpda;    /* 0x4c */
   uint32    PAD[6];
   uint32    tcampatchctrl;    /* 0x68 */
   uint32    tcampatchtblbaseaddr;    /* 0x6c */
   uint32    tcamcmdreg;    /* 0x70 */
   uint32    tcamdatareg;    /* 0x74 */
   uint32    tcambankxmaskreg;    /* 0x78 */
   uint32    PAD[89];
   uint32    clk_ctl_st;    /* 0x1e0 */
   uint32  PAD[1];
   uint32  powerctl;    /* 0x1e8 */
} cr4regs_t;
#define ARM_CR4_REG(regs, reg)    (&((cr4regs_t *)regs)->reg)
 
/* cortex-A7 */
typedef volatile struct {
   uint32    corecontrol;    /* 0x0 */
   uint32    corecapabilities; /* 0x4 */
   uint32    corestatus;    /* 0x8 */
   uint32    tracecontrol;    /* 0xc */
   uint32    PAD[8];
   uint32    gpioselect;    /* 0x30 */
   uint32    gpioenable;    /* 0x34 */
   uint32    PAD[106];
   uint32    clk_ctl_st;    /* 0x1e0 */
   uint32  PAD[1];
   uint32  powerctl;    /* 0x1e8 */
} ca7regs_t;
#define ARM_CA7_REG(regs, reg)    (&((ca7regs_t *)regs)->reg)
 
#if defined(__ARM_ARCH_7M__)
#define ARMREG(regs, reg)    ARM_CM3_REG(regs, reg)
#endif    /* __ARM_ARCH_7M__ */
 
#if defined(__ARM_ARCH_7R__)
#define ARMREG(regs, reg)    ARM_CR4_REG(regs, reg)
#endif    /* __ARM_ARCH_7R__ */
 
#if defined(__ARM_ARCH_7A__)
#define ARMREG(regs, reg)    ARM_CA7_REG(regs, reg)
#endif    /* __ARM_ARCH_7A__ */
 
#endif    /* _LANGUAGE_ASSEMBLY */
 
#endif    /* _sbhndarm_h_ */