Module Name: src
Committed By: ad
Date: Thu Jan 9 10:43:45 UTC 2020
Modified Files:
src/sys/uvm: uvm_page.h
Log Message:
Use __SHIFTIN()/__SHIFTOUT(). Suggested by riastradh@.
To generate a diff of this commit:
cvs rdiff -u -r1.93 -r1.94 src/sys/uvm/uvm_page.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/uvm/uvm_page.h
diff -u src/sys/uvm/uvm_page.h:1.93 src/sys/uvm/uvm_page.h:1.94
--- src/sys/uvm/uvm_page.h:1.93 Tue Dec 31 22:42:51 2019
+++ src/sys/uvm/uvm_page.h Thu Jan 9 10:43:45 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_page.h,v 1.93 2019/12/31 22:42:51 ad Exp $ */
+/* $NetBSD: uvm_page.h,v 1.94 2020/01/09 10:43:45 ad Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -397,10 +397,14 @@ int uvm_direct_process(struct vm_page **
*
* None of this is set in stone; it can be adjusted as needed.
*/
+
+#define UVM_PHYSADDR_FREELIST __BITS(0,4)
+#define UVM_PHYSADDR_BUCKET __BITS(5,9)
+
static inline unsigned
uvm_page_get_freelist(struct vm_page *pg)
{
- unsigned fl = pg->phys_addr & 0x1f;
+ unsigned fl = __SHIFTOUT(pg->phys_addr, UVM_PHYSADDR_FREELIST);
KASSERT(fl == (unsigned)uvm_page_lookup_freelist(pg));
return fl;
}
@@ -408,21 +412,23 @@ uvm_page_get_freelist(struct vm_page *pg
static inline unsigned
uvm_page_get_bucket(struct vm_page *pg)
{
- return (pg->phys_addr & 0x3e0) >> 5;
+ return __SHIFTOUT(pg->phys_addr, UVM_PHYSADDR_BUCKET);
}
static inline void
uvm_page_set_freelist(struct vm_page *pg, unsigned fl)
{
KASSERT(fl < 32);
- pg->phys_addr = (pg->phys_addr & ~0x1f) | fl;
+ pg->phys_addr &= ~UVM_PHYSADDR_FREELIST;
+ pg->phys_addr |= __SHIFTIN(fl, UVM_PHYSADDR_FREELIST);
}
static inline void
uvm_page_set_bucket(struct vm_page *pg, unsigned b)
{
KASSERT(b < 32);
- pg->phys_addr = (pg->phys_addr & ~0x3e0) | (b << 5);
+ pg->phys_addr &= ~UVM_PHYSADDR_BUCKET;
+ pg->phys_addr |= __SHIFTIN(b, UVM_PHYSADDR_BUCKET);
}
#ifdef DEBUG