arch/hexagon/kernel/vm_init_segtable.S

Source file repositories/reference/linux-study-clean/arch/hexagon/kernel/vm_init_segtable.S

File Facts

System
Linux kernel
Corpus path
arch/hexagon/kernel/vm_init_segtable.S
Extension
.S
Size
12163 bytes
Lines
430
Domain
Architecture Layer
Bucket
arch/hexagon
Inferred role
Architecture Layer: arch/hexagon
Status
atlas-only

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

#include <asm/vm_mmu.h>
/*  #include <asm/iomap.h>  */

/*
 * Start with mapping PA=0 to both VA=0x0 and VA=0xc000000 as 16MB large pages.
 * No user mode access, RWX, write-back cache.  The entry needs
 * to be replicated for all 4 virtual segments mapping to the page.
 */

/* "Big Kernel Page"  */
#define BKP(pa) (((pa) & __HVM_PTE_PGMASK_4MB)		\
		| __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X	\
		| __HEXAGON_C_WB_L2 << 6			\
		| __HVM_PDE_S_16MB)

/*  No cache version  */

#define BKPG_IO(pa) (((pa) & __HVM_PTE_PGMASK_16MB) \
			| __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X \
			| __HVM_PDE_S_16MB | __HEXAGON_C_DEV << 6 )

#define FOURK_IO(pa) (((pa) & __HVM_PTE_PGMASK_4KB) \
			| __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X \
			| __HEXAGON_C_DEV << 6 )

#define L2_PTR(pa) (((pa) & __HVM_PTE_PGMASK_4KB) \
			| __HVM_PDE_S_4KB  )

#define X __HVM_PDE_S_INVALID

	.p2align 12
	.globl swapper_pg_dir
	.globl _K_init_segtable
swapper_pg_dir:
/* VA 0x00000000 */
	.word X,X,X,X
	.word X,X,X,X
	.word X,X,X,X
	.word X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
/* VA 0x40000000 */
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
/* VA 0x80000000 */
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
	.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
/*0xa8*/.word X,X,X,X
#ifdef CONFIG_COMET_EARLY_UART_DEBUG
UART_PTE_ENTRY:
/*0xa9*/.word BKPG_IO(0xa9000000),BKPG_IO(0xa9000000),BKPG_IO(0xa9000000),BKPG_IO(0xa9000000)
#else
/*0xa9*/.word X,X,X,X
#endif
/*0xaa*/.word X,X,X,X

Annotation

Implementation Notes