MCPcopy Create free account
hub / github.com/F-Stack/f-stack / decode_win_cpu_set

Function decode_win_cpu_set

freebsd/arm/mv/mv_common.c:1165–1218  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1163}
1164
1165int
1166decode_win_cpu_set(int target, int attr, vm_paddr_t base, uint32_t size,
1167 vm_paddr_t remap)
1168{
1169 uint32_t br, cr;
1170 int win, i;
1171
1172 if (remap == ~0) {
1173 win = soc_decode_win_spec->mv_win_cpu_max - 1;
1174 i = -1;
1175 } else {
1176 win = 0;
1177 i = 1;
1178 }
1179
1180 while ((win >= 0) && (win < soc_decode_win_spec->mv_win_cpu_max)) {
1181 cr = win_cpu_cr_read(win);
1182 if ((cr & MV_WIN_CPU_ENABLE_BIT) == 0)
1183 break;
1184 if ((cr & ((0xff << MV_WIN_CPU_ATTR_SHIFT) |
1185 (0x1f << MV_WIN_CPU_TARGET_SHIFT))) ==
1186 ((attr << MV_WIN_CPU_ATTR_SHIFT) |
1187 (target << MV_WIN_CPU_TARGET_SHIFT)))
1188 break;
1189 win += i;
1190 }
1191 if ((win < 0) || (win >= soc_decode_win_spec->mv_win_cpu_max) ||
1192 ((remap != ~0) && (win_cpu_can_remap(win) == 0)))
1193 return (-1);
1194
1195 br = base & 0xffff0000;
1196 win_cpu_br_write(win, br);
1197
1198 if (win_cpu_can_remap(win)) {
1199 if (remap != ~0) {
1200 win_cpu_remap_l_write(win, remap & 0xffff0000);
1201 win_cpu_remap_h_write(win, 0);
1202 } else {
1203 /*
1204 * Remap function is not used for a given window
1205 * (capable of remapping) - set remap field with the
1206 * same value as base.
1207 */
1208 win_cpu_remap_l_write(win, base & 0xffff0000);
1209 win_cpu_remap_h_write(win, 0);
1210 }
1211 }
1212
1213 cr = ((size - 1) & 0xffff0000) | (attr << MV_WIN_CPU_ATTR_SHIFT) |
1214 (target << MV_WIN_CPU_TARGET_SHIFT) | MV_WIN_CPU_ENABLE_BIT;
1215 win_cpu_cr_write(win, cr);
1216
1217 return (0);
1218}
1219
1220static void
1221decode_win_cpu_setup(void)

Callers 2

mv_pcib_decode_winFunction · 0.85
decode_win_cpu_setupFunction · 0.85

Calls 6

win_cpu_cr_readFunction · 0.85
win_cpu_can_remapFunction · 0.85
win_cpu_br_writeFunction · 0.85
win_cpu_remap_l_writeFunction · 0.85
win_cpu_remap_h_writeFunction · 0.85
win_cpu_cr_writeFunction · 0.85

Tested by

no test coverage detected