__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Page management definitions for the Hexagon architecture
*
* Copyright (c) 2010-2013, The Linux Foundation. All rights reserved.
*/
#ifndef _ASM_PAGE_H
#define _ASM_PAGE_H
#include <linux/const.h>
/* This is probably not the most graceful way to handle this. */
#ifdef CONFIG_PAGE_SIZE_4KB
#define HEXAGON_L1_PTE_SIZE __HVM_PDE_S_4KB
#endif
#ifdef CONFIG_PAGE_SIZE_16KB
#define HEXAGON_L1_PTE_SIZE __HVM_PDE_S_16KB
#endif
#ifdef CONFIG_PAGE_SIZE_64KB
#define HEXAGON_L1_PTE_SIZE __HVM_PDE_S_64KB
#endif
#ifdef CONFIG_PAGE_SIZE_256KB
#define HEXAGON_L1_PTE_SIZE __HVM_PDE_S_256KB
#endif
#ifdef CONFIG_PAGE_SIZE_1MB
#define HEXAGON_L1_PTE_SIZE __HVM_PDE_S_1MB
#endif
/*
* These should be defined in hugetlb.h, but apparently not.
* "Huge" for us should be 4MB or 16MB, which are both represented
* in L1 PTE's. Right now, it's set up for 4MB.
*/
#ifdef CONFIG_HUGETLB_PAGE
#define HPAGE_SHIFT 22
#define HPAGE_SIZE (1UL << HPAGE_SHIFT)
#define HPAGE_MASK (~(HPAGE_SIZE-1))
#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT-PAGE_SHIFT)
#define HVM_HUGEPAGE_SIZE 0x5
#endif
#include <vdso/page.h>
#ifdef __KERNEL__
#ifndef __ASSEMBLY__
/*
* This is for PFN_DOWN, which mm.h needs. Seems the right place to pull it in.
*/
#include <linux/pfn.h>
/*
* We implement a two-level architecture-specific page table structure.
* Null intermediate page table level (pmd, pud) definitions will come from
* asm-generic/pagetable-nopmd.h and asm-generic/pagetable-nopud.h
*/
typedef struct { unsigned long pte; } pte_t;
typedef struct { unsigned long pgd; } pgd_t;
typedef struct { unsigned long pgprot; } pgprot_t;
typedef struct page *pgtable_t;
#define pte_val(x) ((x).pte)
#define pgd_val(x) ((x).pgd)
#define pgprot_val(x) ((x).pgprot)
#define __pte(x) ((pte_t) { (x) })
#define __pgd(x) ((pgd_t) { (x) })
#define __pgprot(x) ((pgprot_t) { (x) })
/* Needed for PAGE_OFFSET used in the macro right below */
#include <asm/mem-layout.h>
/*
* We need a __pa and a __va routine for kernel space.
* MIPS says they're only used during mem_init.
* also, check if we need a PHYS_OFFSET.
*/
#define __pa(x) ((unsigned long)(x) - PAGE_OFFSET + PHYS_OFFSET)
#define __va(x) ((void *)((unsigned long)(x) - PHYS_OFFSET + PAGE_OFFSET))
/* The "page frame" descriptor is defined in linux/mm.h */
struct page;
/* Returns page frame descriptor for virtual address. */
#define virt_to_page(kaddr) pfn_to_page(PFN_DOWN(__pa(kaddr)))
/* Default vm area behavior is non-executable. */
#define VM_DATA_DEFAULT_FLAGS VM_DATA_FLAGS_NON_EXEC
#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
/* Need to not use a define for linesize; may move this to another file. */
static inline void clear_page(void *page)
{
/* This can only be done on pages with L1 WB cache */
asm volatile(
" loop0(1f,%1);\n"
"1: { dczeroa(%0);\n"
" %0 = add(%0,#32); }:endloop0\n"
: "+r" (page)
: "r" (PAGE_SIZE/32)
: "lc0", "sa0", "memory"
);
}
#define copy_page(to, from) memcpy((to), (from), PAGE_SIZE)
/*
* Under assumption that kernel always "sees" user map...
*/
#define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
static inline unsigned long virt_to_pfn(const void *kaddr)
{
return __pa(kaddr) >> PAGE_SHIFT;
}
#define page_to_virt(page) __va(page_to_phys(page))
#include <asm/mem-layout.h>
#include <asm-generic/memory_model.h>
/* XXX Todo: implement assembly-optimized version of getorder. */
#include <asm-generic/getorder.h>
#endif /* ifdef __ASSEMBLY__ */
#endif /* ifdef __KERNEL__ */
#endif
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Kbuild | File | 193 B | 0644 |
|
| asm-offsets.h | File | 35 B | 0644 |
|
| atomic.h | File | 3.13 KB | 0644 |
|
| bitops.h | File | 6.46 KB | 0644 |
|
| cache.h | File | 555 B | 0644 |
|
| cacheflush.h | File | 2.8 KB | 0644 |
|
| checksum.h | File | 685 B | 0644 |
|
| cmpxchg.h | File | 1.97 KB | 0644 |
|
| delay.h | File | 344 B | 0644 |
|
| dma.h | File | 300 B | 0644 |
|
| elf.h | File | 5.62 KB | 0644 |
|
| exec.h | File | 398 B | 0644 |
|
| fixmap.h | File | 369 B | 0644 |
|
| fpu.h | File | 90 B | 0644 |
|
| futex.h | File | 2.25 KB | 0644 |
|
| hexagon_vm.h | File | 5.77 KB | 0644 |
|
| intrinsics.h | File | 369 B | 0644 |
|
| io.h | File | 2.54 KB | 0644 |
|
| irq.h | File | 576 B | 0644 |
|
| irqflags.h | File | 860 B | 0644 |
|
| kgdb.h | File | 754 B | 0644 |
|
| linkage.h | File | 237 B | 0644 |
|
| mem-layout.h | File | 2.8 KB | 0644 |
|
| mmu.h | File | 490 B | 0644 |
|
| mmu_context.h | File | 1.51 KB | 0644 |
|
| page.h | File | 3.58 KB | 0644 |
|
| perf_event.h | File | 207 B | 0644 |
|
| pgalloc.h | File | 2.64 KB | 0644 |
|
| pgtable.h | File | 10.99 KB | 0644 |
|
| processor.h | File | 2.94 KB | 0644 |
|
| ptrace.h | File | 626 B | 0644 |
|
| setup.h | File | 527 B | 0644 |
|
| smp.h | File | 707 B | 0644 |
|
| spinlock.h | File | 3.22 KB | 0644 |
|
| spinlock_types.h | File | 551 B | 0644 |
|
| string.h | File | 472 B | 0644 |
|
| suspend.h | File | 238 B | 0644 |
|
| switch_to.h | File | 478 B | 0644 |
|
| syscall.h | File | 1.14 KB | 0644 |
|
| syscalls.h | File | 204 B | 0644 |
|
| thread_info.h | File | 3.27 KB | 0644 |
|
| time.h | File | 346 B | 0644 |
|
| timex.h | File | 495 B | 0644 |
|
| tlb.h | File | 253 B | 0644 |
|
| tlbflush.h | File | 1.46 KB | 0644 |
|
| traps.h | File | 410 B | 0644 |
|
| uaccess.h | File | 1.1 KB | 0644 |
|
| unistd.h | File | 244 B | 0644 |
|
| vdso.h | File | 307 B | 0644 |
|
| vermagic.h | File | 299 B | 0644 |
|
| vm_fault.h | File | 359 B | 0644 |
|
| vm_mmu.h | File | 2.75 KB | 0644 |
|
| vmalloc.h | File | 99 B | 0644 |
|