return pte | paddr;
}
+static inline int ukarch_paddr_isvalid(__paddr_t addr)
{
+ return ARM64_PADDR_VALID(addr);
+}
+
static inline int ukarch_paddr_range_isvalid(__paddr_t start, __sz len)
{
__paddr_t end = start + len - 1;
return (ARM64_PADDR_VALID(end)) && (ARM64_PADDR_VALID(start));
}
+static inline int ukarch_vaddr_isvalid(__vaddr_t addr)
+{
+ return ARM64_VADDR_VALID(addr);
+}
+
static inline int ukarch_vaddr_range_isvalid(__vaddr_t start, __sz len)
{
__vaddr_t end = start + len - 1;
((__vaddr_t)(((__ssz)(vaddr) << (64 - X86_VADDR_BITS)) >> \
(64 - X86_VADDR_BITS)))
+static inline int ukarch_vaddr_isvalid(__vaddr_t addr)
{
+ return X86_VADDR_CANONICALIZE(addr) == addr;
+}
+
static inline int ukarch_vaddr_range_isvalid(__vaddr_t start, __sz len)
{
__vaddr_t end = start + len - 1;
*/
int ukarch_vaddr_range_isvalid(__vaddr_t start, __sz len);
-#define ukarch_vaddr_isvalid(vaddr) \
- ukarch_vaddr_range_isvalid(vaddr, vaddr)
+/**
+ * Tests if a virtual address is valid on the current architecture.
+ *
+ * @param addr the virtual address to test
+ * @return a non-zero value if the address is supported
+ */
+int ukarch_vaddr_isvalid(__vaddr_t addr);
/**
* Tests if a certain range of physical addresses is valid on the current
*/
int ukarch_paddr_range_isvalid(__paddr_t start, __sz len);
-#define ukarch_paddr_isvalid(paddr) \
- ukarch_paddr_range_isvalid(paddr, paddr)
+/**
+ * Tests if a physical address is valid on the current architecture.
+ *
+ * @param addr the physical address to test
+ * @return a non-zero value if the address is supported
+ */
+int ukarch_paddr_isvalid(__paddr_t addr);
/**
* Reads a page table entry from the given page table.
#define X86_PG_VALID_PADDR(paddr) ((paddr) <= x86_pg_maxphysaddr)
+int ukarch_paddr_isvalid(__paddr_t addr)
{
+ return X86_PG_VALID_PADDR(addr);
+}
+
int ukarch_paddr_range_isvalid(__paddr_t start, __sz len)
{
__paddr_t end = start + len - 1;