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

Function k6_mrmake

freebsd/i386/i386/k6_mem.c:79–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

77};
78
79static __inline int
80k6_mrmake(struct mem_range_desc *desc, u_int32_t *mtrr)
81{
82 u_int32_t len = 0, wc, uc;
83 int bit;
84
85 if (desc->mr_base &~ 0xfffe0000)
86 return (EINVAL);
87 if (desc->mr_len < 131072 || !powerof2(desc->mr_len))
88 return (EINVAL);
89 if (desc->mr_flags &~ (MDF_WRITECOMBINE|MDF_UNCACHEABLE|MDF_FORCE))
90 return (EOPNOTSUPP);
91
92 for (bit = ffs(desc->mr_len >> 17) - 1; bit < 15; bit++)
93 len |= 1 << bit;
94 wc = (desc->mr_flags & MDF_WRITECOMBINE) ? 1 : 0;
95 uc = (desc->mr_flags & MDF_UNCACHEABLE) ? 1 : 0;
96
97 *mtrr = K6_REG_MAKE(desc->mr_base, len, wc, uc);
98 return (0);
99}
100
101static void
102k6_mrinit(struct mem_range_softc *sc)

Callers 1

k6_mrsetFunction · 0.85

Calls 1

ffsFunction · 0.50

Tested by

no test coverage detected