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

Function k6_mrinit

freebsd/i386/i386/k6_mem.c:101–129  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

99}
100
101static void
102k6_mrinit(struct mem_range_softc *sc)
103{
104 u_int64_t reg;
105 u_int32_t addr, mask, wc, uc;
106 int d;
107
108 sc->mr_cap = 0;
109 sc->mr_ndesc = 2; /* XXX (BFF) For now, we only have one msr for this */
110 sc->mr_desc = malloc(sc->mr_ndesc * sizeof(struct mem_range_desc),
111 M_MEMDESC, M_NOWAIT | M_ZERO);
112 if (sc->mr_desc == NULL)
113 panic("k6_mrinit: malloc returns NULL");
114
115 reg = rdmsr(UWCCR);
116 for (d = 0; d < sc->mr_ndesc; d++) {
117 u_int32_t one = (reg & (0xffffffff << (32 * d))) >> (32 * d);
118
119 K6_REG_GET(one, addr, mask, wc, uc);
120 sc->mr_desc[d].mr_base = addr;
121 sc->mr_desc[d].mr_len = ffs(mask) << 17;
122 if (wc)
123 sc->mr_desc[d].mr_flags |= MDF_WRITECOMBINE;
124 if (uc)
125 sc->mr_desc[d].mr_flags |= MDF_UNCACHEABLE;
126 }
127
128 printf("K6-family MTRR support enabled (%d registers)\n", sc->mr_ndesc);
129}
130
131static int
132k6_mrset(struct mem_range_softc *sc, struct mem_range_desc *desc, int *arg)

Callers

nothing calls this directly

Calls 5

mallocFunction · 0.85
panicFunction · 0.50
rdmsrFunction · 0.50
ffsFunction · 0.50
printfFunction · 0.50

Tested by

no test coverage detected