arch/csky/mm/init.c

Source file repositories/reference/linux-study-clean/arch/csky/mm/init.c

File Facts

System
Linux kernel
Corpus path
arch/csky/mm/init.c
Extension
.c
Size
3724 bytes
Lines
150
Domain
Architecture Layer
Bucket
arch/csky
Inferred role
Architecture Layer: exported/initcall integration point
Status
integration implementation candidate

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

if (pmd_none(*pmd)) {
					pte = (pte_t *) memblock_alloc_low(PAGE_SIZE, PAGE_SIZE);
					if (!pte)
						panic("%s: Failed to allocate %lu bytes align=%lx\n",
						      __func__, PAGE_SIZE,
						      PAGE_SIZE);

					set_pmd(pmd, __pmd(__pa(pte)));
					BUG_ON(pte != pte_offset_kernel(pmd, 0));
				}
				vaddr += PMD_SIZE;
			}
			k = 0;
		}
		j = 0;
	}
}

void __init fixaddr_init(void)
{
	unsigned long vaddr;

	vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
	fixrange_init(vaddr, vaddr + PMD_SIZE, swapper_pg_dir);
}

static const pgprot_t protection_map[16] = {
	[VM_NONE]					= PAGE_NONE,
	[VM_READ]					= PAGE_READ,
	[VM_WRITE]					= PAGE_READ,
	[VM_WRITE | VM_READ]				= PAGE_READ,
	[VM_EXEC]					= PAGE_READ,
	[VM_EXEC | VM_READ]				= PAGE_READ,
	[VM_EXEC | VM_WRITE]				= PAGE_READ,
	[VM_EXEC | VM_WRITE | VM_READ]			= PAGE_READ,
	[VM_SHARED]					= PAGE_NONE,
	[VM_SHARED | VM_READ]				= PAGE_READ,
	[VM_SHARED | VM_WRITE]				= PAGE_WRITE,
	[VM_SHARED | VM_WRITE | VM_READ]		= PAGE_WRITE,
	[VM_SHARED | VM_EXEC]				= PAGE_READ,
	[VM_SHARED | VM_EXEC | VM_READ]			= PAGE_READ,
	[VM_SHARED | VM_EXEC | VM_WRITE]		= PAGE_WRITE,
	[VM_SHARED | VM_EXEC | VM_WRITE | VM_READ]	= PAGE_WRITE
};
DECLARE_VM_GET_PAGE_PROT

Annotation

Implementation Notes