linux/arch/arc/include/asm/mmzone.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Copyright (C) 2016 Synopsys, Inc. (www.synopsys.com)
   4 */
   5
   6#ifndef _ASM_ARC_MMZONE_H
   7#define _ASM_ARC_MMZONE_H
   8
   9#ifdef CONFIG_DISCONTIGMEM
  10
  11extern struct pglist_data node_data[];
  12#define NODE_DATA(nid) (&node_data[nid])
  13
  14static inline int pfn_to_nid(unsigned long pfn)
  15{
  16        int is_end_low = 1;
  17
  18        if (IS_ENABLED(CONFIG_ARC_HAS_PAE40))
  19                is_end_low = pfn <= virt_to_pfn(0xFFFFFFFFUL);
  20
  21        /*
  22         * node 0: lowmem:             0x8000_0000   to 0xFFFF_FFFF
  23         * node 1: HIGHMEM w/o  PAE40: 0x0           to 0x7FFF_FFFF
  24         *         HIGHMEM with PAE40: 0x1_0000_0000 to ...
  25         */
  26        if (pfn >= ARCH_PFN_OFFSET && is_end_low)
  27                return 0;
  28
  29        return 1;
  30}
  31
  32static inline int pfn_valid(unsigned long pfn)
  33{
  34        int nid = pfn_to_nid(pfn);
  35
  36        return (pfn <= node_end_pfn(nid));
  37}
  38#endif /* CONFIG_DISCONTIGMEM  */
  39
  40#endif
  41