#ifndef _ASM_SET_MEMORY_H
#define _ASM_SET_MEMORY_H
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/atomic.h>
#include <sys/param.h>
#include <uvm/uvm_extern.h>
#include <machine/pmap.h>
#if defined(__amd64__) || defined(__i386__)
static inline int
set_pages_array_wb(struct vm_page **pages, int addrinarray)
{
int i;
for (i = 0; i < addrinarray; i++)
atomic_clearbits_int(&pages[i]->pg_flags, PG_PMAP_WC);
return 0;
}
static inline int
set_pages_array_wc(struct vm_page **pages, int addrinarray)
{
int i;
for (i = 0; i < addrinarray; i++)
atomic_setbits_int(&pages[i]->pg_flags, PG_PMAP_WC);
return 0;
}
static inline int
set_pages_array_uc(struct vm_page **pages, int addrinarray)
{
return 0;
}
static inline int
set_pages_wb(struct vm_page *page, int numpages)
{
struct vm_page *pg;
paddr_t start = VM_PAGE_TO_PHYS(page);
int i;
for (i = 0; i < numpages; i++) {
pg = PHYS_TO_VM_PAGE(start + (i * PAGE_SIZE));
if (pg != NULL)
atomic_clearbits_int(&pg->pg_flags, PG_PMAP_WC);
}
return 0;
}
static inline int
set_pages_uc(struct vm_page *page, int numpages)
{
return 0;
}
#endif
#endif