xref: /qemu/target/ppc/spr_common.h (revision 917ea4381add2eb57494c6aca24d8d80070fb9b1)
1a829cec3SBruno Larsen (billionai) /*
2a829cec3SBruno Larsen (billionai)  *  PowerPC emulation for qemu: read/write callbacks for SPRs
3a829cec3SBruno Larsen (billionai)  *
4a829cec3SBruno Larsen (billionai)  *  Copyright (C) 2021 Instituto de Pesquisas Eldorado
5a829cec3SBruno Larsen (billionai)  *
6a829cec3SBruno Larsen (billionai)  * This library is free software; you can redistribute it and/or
7a829cec3SBruno Larsen (billionai)  * modify it under the terms of the GNU Lesser General Public
8a829cec3SBruno Larsen (billionai)  * License as published by the Free Software Foundation; either
9a829cec3SBruno Larsen (billionai)  * version 2.1 of the License, or (at your option) any later version.
10a829cec3SBruno Larsen (billionai)  *
11a829cec3SBruno Larsen (billionai)  * This library is distributed in the hope that it will be useful,
12a829cec3SBruno Larsen (billionai)  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13a829cec3SBruno Larsen (billionai)  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14a829cec3SBruno Larsen (billionai)  * Lesser General Public License for more details.
15a829cec3SBruno Larsen (billionai)  *
16a829cec3SBruno Larsen (billionai)  * You should have received a copy of the GNU Lesser General Public
17a829cec3SBruno Larsen (billionai)  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
18a829cec3SBruno Larsen (billionai)  */
1999e964efSFabiano Rosas #ifndef SPR_COMMON_H
2099e964efSFabiano Rosas #define SPR_COMMON_H
21a829cec3SBruno Larsen (billionai) 
223e770bf7SBruno Larsen (billionai) #define SPR_NOACCESS (&spr_noaccess)
233e770bf7SBruno Larsen (billionai) 
24a829cec3SBruno Larsen (billionai) /* prototypes for readers and writers for SPRs */
25a829cec3SBruno Larsen (billionai) void spr_noaccess(DisasContext *ctx, int gprn, int sprn);
26a829cec3SBruno Larsen (billionai) void spr_read_generic(DisasContext *ctx, int gprn, int sprn);
27a829cec3SBruno Larsen (billionai) void spr_write_generic(DisasContext *ctx, int sprn, int gprn);
28c2eff582SDaniel Henrique Barboza void spr_write_MMCR0(DisasContext *ctx, int sprn, int gprn);
29a6f91249SDaniel Henrique Barboza void spr_write_MMCR1(DisasContext *ctx, int sprn, int gprn);
30308b9fadSDaniel Henrique Barboza void spr_write_PMC(DisasContext *ctx, int sprn, int gprn);
317aeac354SDaniel Henrique Barboza void spr_write_CTRL(DisasContext *ctx, int sprn, int gprn);
32a829cec3SBruno Larsen (billionai) void spr_read_xer(DisasContext *ctx, int gprn, int sprn);
33a829cec3SBruno Larsen (billionai) void spr_write_xer(DisasContext *ctx, int sprn, int gprn);
34a829cec3SBruno Larsen (billionai) void spr_read_lr(DisasContext *ctx, int gprn, int sprn);
35a829cec3SBruno Larsen (billionai) void spr_write_lr(DisasContext *ctx, int sprn, int gprn);
36a829cec3SBruno Larsen (billionai) void spr_read_ctr(DisasContext *ctx, int gprn, int sprn);
37a829cec3SBruno Larsen (billionai) void spr_write_ctr(DisasContext *ctx, int sprn, int gprn);
38a829cec3SBruno Larsen (billionai) void spr_read_ureg(DisasContext *ctx, int gprn, int sprn);
39565cb109SGustavo Romero void spr_read_MMCR0_ureg(DisasContext *ctx, int gprn, int sprn);
407b3ecf16SDaniel Henrique Barboza void spr_read_MMCR2_ureg(DisasContext *ctx, int gprn, int sprn);
41308b9fadSDaniel Henrique Barboza void spr_read_PMC(DisasContext *ctx, int gprn, int sprn);
42cedf7069SDaniel Henrique Barboza void spr_read_PMC14_ureg(DisasContext *ctx, int gprn, int sprn);
43cedf7069SDaniel Henrique Barboza void spr_read_PMC56_ureg(DisasContext *ctx, int gprn, int sprn);
44a829cec3SBruno Larsen (billionai) void spr_read_tbl(DisasContext *ctx, int gprn, int sprn);
45a829cec3SBruno Larsen (billionai) void spr_read_tbu(DisasContext *ctx, int gprn, int sprn);
46a829cec3SBruno Larsen (billionai) void spr_read_atbl(DisasContext *ctx, int gprn, int sprn);
47a829cec3SBruno Larsen (billionai) void spr_read_atbu(DisasContext *ctx, int gprn, int sprn);
48a829cec3SBruno Larsen (billionai) void spr_read_spefscr(DisasContext *ctx, int gprn, int sprn);
49a829cec3SBruno Larsen (billionai) void spr_write_spefscr(DisasContext *ctx, int sprn, int gprn);
50565cb109SGustavo Romero void spr_write_MMCR0_ureg(DisasContext *ctx, int sprn, int gprn);
517b3ecf16SDaniel Henrique Barboza void spr_write_MMCR2_ureg(DisasContext *ctx, int sprn, int gprn);
52cedf7069SDaniel Henrique Barboza void spr_write_PMC14_ureg(DisasContext *ctx, int sprn, int gprn);
53cedf7069SDaniel Henrique Barboza void spr_write_PMC56_ureg(DisasContext *ctx, int sprn, int gprn);
54a829cec3SBruno Larsen (billionai) 
55a829cec3SBruno Larsen (billionai) #ifndef CONFIG_USER_ONLY
56a829cec3SBruno Larsen (billionai) void spr_write_generic32(DisasContext *ctx, int sprn, int gprn);
57a829cec3SBruno Larsen (billionai) void spr_write_clear(DisasContext *ctx, int sprn, int gprn);
58a829cec3SBruno Larsen (billionai) void spr_access_nop(DisasContext *ctx, int sprn, int gprn);
59a829cec3SBruno Larsen (billionai) void spr_read_decr(DisasContext *ctx, int gprn, int sprn);
60a829cec3SBruno Larsen (billionai) void spr_write_decr(DisasContext *ctx, int sprn, int gprn);
61a829cec3SBruno Larsen (billionai) void spr_write_tbl(DisasContext *ctx, int sprn, int gprn);
62a829cec3SBruno Larsen (billionai) void spr_write_tbu(DisasContext *ctx, int sprn, int gprn);
63a829cec3SBruno Larsen (billionai) void spr_write_atbl(DisasContext *ctx, int sprn, int gprn);
64a829cec3SBruno Larsen (billionai) void spr_write_atbu(DisasContext *ctx, int sprn, int gprn);
65a829cec3SBruno Larsen (billionai) void spr_read_ibat(DisasContext *ctx, int gprn, int sprn);
66a829cec3SBruno Larsen (billionai) void spr_read_ibat_h(DisasContext *ctx, int gprn, int sprn);
67a829cec3SBruno Larsen (billionai) void spr_write_ibatu(DisasContext *ctx, int sprn, int gprn);
68a829cec3SBruno Larsen (billionai) void spr_write_ibatu_h(DisasContext *ctx, int sprn, int gprn);
69a829cec3SBruno Larsen (billionai) void spr_write_ibatl(DisasContext *ctx, int sprn, int gprn);
70a829cec3SBruno Larsen (billionai) void spr_write_ibatl_h(DisasContext *ctx, int sprn, int gprn);
71a829cec3SBruno Larsen (billionai) void spr_read_dbat(DisasContext *ctx, int gprn, int sprn);
72a829cec3SBruno Larsen (billionai) void spr_read_dbat_h(DisasContext *ctx, int gprn, int sprn);
73a829cec3SBruno Larsen (billionai) void spr_write_dbatu(DisasContext *ctx, int sprn, int gprn);
74a829cec3SBruno Larsen (billionai) void spr_write_dbatu_h(DisasContext *ctx, int sprn, int gprn);
75a829cec3SBruno Larsen (billionai) void spr_write_dbatl(DisasContext *ctx, int sprn, int gprn);
76a829cec3SBruno Larsen (billionai) void spr_write_dbatl_h(DisasContext *ctx, int sprn, int gprn);
77a829cec3SBruno Larsen (billionai) void spr_write_sdr1(DisasContext *ctx, int sprn, int gprn);
78a829cec3SBruno Larsen (billionai) void spr_read_40x_pit(DisasContext *ctx, int gprn, int sprn);
79a829cec3SBruno Larsen (billionai) void spr_write_40x_pit(DisasContext *ctx, int sprn, int gprn);
80a829cec3SBruno Larsen (billionai) void spr_write_40x_dbcr0(DisasContext *ctx, int sprn, int gprn);
81a829cec3SBruno Larsen (billionai) void spr_write_40x_sler(DisasContext *ctx, int sprn, int gprn);
82cbd8f17dSCédric Le Goater void spr_write_40x_tcr(DisasContext *ctx, int sprn, int gprn);
83cbd8f17dSCédric Le Goater void spr_write_40x_tsr(DisasContext *ctx, int sprn, int gprn);
84dd69d140SCédric Le Goater void spr_write_40x_pid(DisasContext *ctx, int sprn, int gprn);
85a829cec3SBruno Larsen (billionai) void spr_write_booke_tcr(DisasContext *ctx, int sprn, int gprn);
86a829cec3SBruno Larsen (billionai) void spr_write_booke_tsr(DisasContext *ctx, int sprn, int gprn);
87a829cec3SBruno Larsen (billionai) void spr_read_403_pbr(DisasContext *ctx, int gprn, int sprn);
88a829cec3SBruno Larsen (billionai) void spr_write_403_pbr(DisasContext *ctx, int sprn, int gprn);
89a829cec3SBruno Larsen (billionai) void spr_write_pir(DisasContext *ctx, int sprn, int gprn);
90a829cec3SBruno Larsen (billionai) void spr_write_excp_prefix(DisasContext *ctx, int sprn, int gprn);
91a829cec3SBruno Larsen (billionai) void spr_write_excp_vector(DisasContext *ctx, int sprn, int gprn);
92a829cec3SBruno Larsen (billionai) void spr_read_thrm(DisasContext *ctx, int gprn, int sprn);
93a829cec3SBruno Larsen (billionai) void spr_write_e500_l1csr0(DisasContext *ctx, int sprn, int gprn);
94a829cec3SBruno Larsen (billionai) void spr_write_e500_l1csr1(DisasContext *ctx, int sprn, int gprn);
95a829cec3SBruno Larsen (billionai) void spr_write_e500_l2csr0(DisasContext *ctx, int sprn, int gprn);
96a829cec3SBruno Larsen (billionai) void spr_write_booke206_mmucsr0(DisasContext *ctx, int sprn, int gprn);
97a829cec3SBruno Larsen (billionai) void spr_write_booke_pid(DisasContext *ctx, int sprn, int gprn);
98a829cec3SBruno Larsen (billionai) void spr_write_eplc(DisasContext *ctx, int sprn, int gprn);
99a829cec3SBruno Larsen (billionai) void spr_write_epsc(DisasContext *ctx, int sprn, int gprn);
100a829cec3SBruno Larsen (billionai) void spr_write_mas73(DisasContext *ctx, int sprn, int gprn);
101a829cec3SBruno Larsen (billionai) void spr_read_mas73(DisasContext *ctx, int gprn, int sprn);
102a829cec3SBruno Larsen (billionai) #ifdef TARGET_PPC64
103a829cec3SBruno Larsen (billionai) void spr_read_cfar(DisasContext *ctx, int gprn, int sprn);
104a829cec3SBruno Larsen (billionai) void spr_write_cfar(DisasContext *ctx, int sprn, int gprn);
105a829cec3SBruno Larsen (billionai) void spr_write_ureg(DisasContext *ctx, int sprn, int gprn);
106a829cec3SBruno Larsen (billionai) void spr_read_purr(DisasContext *ctx, int gprn, int sprn);
107a829cec3SBruno Larsen (billionai) void spr_write_purr(DisasContext *ctx, int sprn, int gprn);
108a829cec3SBruno Larsen (billionai) void spr_read_hdecr(DisasContext *ctx, int gprn, int sprn);
109a829cec3SBruno Larsen (billionai) void spr_write_hdecr(DisasContext *ctx, int sprn, int gprn);
110a829cec3SBruno Larsen (billionai) void spr_read_vtb(DisasContext *ctx, int gprn, int sprn);
111a829cec3SBruno Larsen (billionai) void spr_write_vtb(DisasContext *ctx, int sprn, int gprn);
112a829cec3SBruno Larsen (billionai) void spr_write_tbu40(DisasContext *ctx, int sprn, int gprn);
113a829cec3SBruno Larsen (billionai) void spr_write_pidr(DisasContext *ctx, int sprn, int gprn);
114a829cec3SBruno Larsen (billionai) void spr_write_lpidr(DisasContext *ctx, int sprn, int gprn);
115a829cec3SBruno Larsen (billionai) void spr_read_hior(DisasContext *ctx, int gprn, int sprn);
116a829cec3SBruno Larsen (billionai) void spr_write_hior(DisasContext *ctx, int sprn, int gprn);
117a829cec3SBruno Larsen (billionai) void spr_write_ptcr(DisasContext *ctx, int sprn, int gprn);
118a829cec3SBruno Larsen (billionai) void spr_write_pcr(DisasContext *ctx, int sprn, int gprn);
119a829cec3SBruno Larsen (billionai) void spr_read_dpdes(DisasContext *ctx, int gprn, int sprn);
120a829cec3SBruno Larsen (billionai) void spr_write_dpdes(DisasContext *ctx, int sprn, int gprn);
121a829cec3SBruno Larsen (billionai) void spr_write_amr(DisasContext *ctx, int sprn, int gprn);
122a829cec3SBruno Larsen (billionai) void spr_write_uamor(DisasContext *ctx, int sprn, int gprn);
123a829cec3SBruno Larsen (billionai) void spr_write_iamr(DisasContext *ctx, int sprn, int gprn);
124a829cec3SBruno Larsen (billionai) #endif
125a829cec3SBruno Larsen (billionai) #endif
126a829cec3SBruno Larsen (billionai) 
127a829cec3SBruno Larsen (billionai) #ifdef TARGET_PPC64
128a829cec3SBruno Larsen (billionai) void spr_read_prev_upper32(DisasContext *ctx, int gprn, int sprn);
129a829cec3SBruno Larsen (billionai) void spr_write_prev_upper32(DisasContext *ctx, int sprn, int gprn);
130a829cec3SBruno Larsen (billionai) void spr_read_tar(DisasContext *ctx, int gprn, int sprn);
131a829cec3SBruno Larsen (billionai) void spr_write_tar(DisasContext *ctx, int sprn, int gprn);
132a829cec3SBruno Larsen (billionai) void spr_read_tm(DisasContext *ctx, int gprn, int sprn);
133a829cec3SBruno Larsen (billionai) void spr_write_tm(DisasContext *ctx, int sprn, int gprn);
134a829cec3SBruno Larsen (billionai) void spr_read_tm_upper32(DisasContext *ctx, int gprn, int sprn);
135a829cec3SBruno Larsen (billionai) void spr_write_tm_upper32(DisasContext *ctx, int sprn, int gprn);
136a829cec3SBruno Larsen (billionai) void spr_read_ebb(DisasContext *ctx, int gprn, int sprn);
137a829cec3SBruno Larsen (billionai) void spr_write_ebb(DisasContext *ctx, int sprn, int gprn);
138a829cec3SBruno Larsen (billionai) void spr_read_ebb_upper32(DisasContext *ctx, int gprn, int sprn);
139a829cec3SBruno Larsen (billionai) void spr_write_ebb_upper32(DisasContext *ctx, int sprn, int gprn);
140a829cec3SBruno Larsen (billionai) void spr_write_hmer(DisasContext *ctx, int sprn, int gprn);
141a829cec3SBruno Larsen (billionai) void spr_write_lpcr(DisasContext *ctx, int sprn, int gprn);
142a829cec3SBruno Larsen (billionai) #endif
143a829cec3SBruno Larsen (billionai) 
144*917ea438SFabiano Rosas void register_low_BATs(CPUPPCState *env);
145*917ea438SFabiano Rosas void register_high_BATs(CPUPPCState *env);
146*917ea438SFabiano Rosas void register_sdr1_sprs(CPUPPCState *env);
147*917ea438SFabiano Rosas void register_thrm_sprs(CPUPPCState *env);
148*917ea438SFabiano Rosas void register_usprgh_sprs(CPUPPCState *env);
149*917ea438SFabiano Rosas void register_non_embedded_sprs(CPUPPCState *env);
150*917ea438SFabiano Rosas void register_6xx_7xx_soft_tlb(CPUPPCState *env, int nb_tlbs, int nb_ways);
151*917ea438SFabiano Rosas 
152a829cec3SBruno Larsen (billionai) #endif
153