Lines Matching defs:rm

291 /* rm */
367 struct emu_rm *rm;
400 static int emu_rm_gpr_alloc(struct emu_rm *rm, int count);
1552 volgpr = emu_rm_gpr_alloc(sc->rm, 1);
1619 sc->cache_gpr[CACHE_IDX] = emu_rm_gpr_alloc(sc->rm, 1); \
1712 sc->mute_gpr[i] = emu_rm_gpr_alloc(sc->rm, 1);
1932 sc->dummy_gpr = emu_rm_gpr_alloc(sc->rm, 1);
2150 sc->dummy_gpr = emu_rm_gpr_alloc(sc->rm, 1);
2256 sbuf_printf(s, "DSP General Purpose Registers: %d used, %d total\n", sc->rm->num_used, sc->rm->num_gprs);
2345 struct emu_rm *rm;
2347 rm = malloc(sizeof(struct emu_rm), M_DEVBUF, M_NOWAIT | M_ZERO);
2348 if (rm == NULL) {
2351 sc->rm = rm;
2352 rm->card = sc;
2354 rm->num_used = 0;
2355 mtx_init(&(rm->gpr_lock), device_get_nameunit(sc->dev), "gpr alloc", MTX_DEF);
2356 rm->num_gprs = (maxcount < EMU_MAX_GPR ? maxcount : EMU_MAX_GPR);
2357 for (i = 0; i < rm->num_gprs; i++)
2358 rm->allocmap[i] = 0;
2360 rm->allocmap[0] = 1;
2361 rm->last_free_gpr = 1;
2372 mtx_lock(&(sc->rm->gpr_lock));
2373 for (i = 1; i < sc->rm->last_free_gpr; i++)
2374 if (sc->rm->allocmap[i] > 0)
2375 device_printf(sc->dev, "rm: gpr %d not free before uninit\n", i);
2376 mtx_unlock(&(sc->rm->gpr_lock));
2379 mtx_destroy(&(sc->rm->gpr_lock));
2380 free(sc->rm, M_DEVBUF);
2385 emu_rm_gpr_alloc(struct emu_rm *rm, int count)
2390 allocated_gpr = rm->num_gprs;
2392 mtx_lock(&(rm->gpr_lock));
2393 if (rm->last_free_gpr + count <= rm->num_gprs) {
2394 allocated_gpr = rm->last_free_gpr;
2395 rm->last_free_gpr += count;
2396 rm->allocmap[allocated_gpr] = count;
2398 rm->allocmap[allocated_gpr + i] = -(count - i);
2402 allocated_gpr = rm->num_gprs;
2403 while (i < rm->last_free_gpr - count) {
2404 if (rm->allocmap[i] > 0) {
2405 i += rm->allocmap[i];
2409 if (rm->allocmap[i + j] != 0)
2410 allocated_gpr = rm->num_gprs;
2416 if (allocated_gpr + count < rm->last_free_gpr) {
2417 rm->allocmap[allocated_gpr] = count;
2419 rm->allocmap[allocated_gpr + i] = -(count - i);
2422 if (allocated_gpr == rm->num_gprs)
2425 rm->num_used += count;
2426 mtx_unlock(&(rm->gpr_lock));
3391 if (sc->rm != NULL)