vectoriales tutorial programas para online mac imagenes graficos descargar crear linux-kernel arm embedded-linux

linux kernel - tutorial - Mapeo de páginas de vectores en linux para ARM



inkscape windows (1)

La respuesta está en su enlace devicemaps_init() (sobre la línea 1250 en 3.14).

/* * Create a mapping for the machine vectors at the high-vectors * location (0xffff0000). If we aren''t using high-vectors, also * create a mapping at the low-vectors virtual address. */ map.pfn = __phys_to_pfn(virt_to_phys(vectors)); map.virtual = 0xffff0000; map.length = PAGE_SIZE; #ifdef CONFIG_KUSER_HELPERS map.type = MT_HIGH_VECTORS; #else map.type = MT_LOW_VECTORS; #endif create_mapping(&map);

Hay un código adicional allí para hacer más asignaciones. Tenga en cuenta que hay una instrucción vectorial física más un código para los modos de transición . Esto se hace a través de la macro del ensamblador vector_stub . Una explicación en los comentarios es muy buena (también vea el 2do enlace relacionado).

Vector stubs. This code is copied to 0xffff1000 so we can use branches in the vectors, rather than ldr''s. Note that this code must not exceed a page size. Common stub entry macro: Enter in IRQ mode, spsr = SVC/USR CPSR, lr = SVC/USR PC SP points to a minimal amount of processor-private memory, the address of which is copied into r0 for the mode specific abort handler.

para que podamos usar ramas en los vectores significa la primera instrucción en la tabla de vectores.

Relacionado: Encuentre la dirección física de la tabla de vectores de excepción
Linux kernel arm pila de excepciones init

Estoy tratando de entender cómo la página de vectores está mapeada a 0xffff0000. Me estoy refiriendo al kernel 3.14.

Según el comentario en early_trap_init() traps.c, los vectores se copian de entry-armv.S a la página de vectores.

Parece que early_trap_init() se llama desde devicemaps_init() mmu.c.

Antes de llamar a early_trap_init() , está creando una página de vectores usando early_alloc() y no pude ver ninguna asignación aquí.

¿Pueden ayudarme a comprender cómo se hace el mapeo de páginas de vectores?