1/** 2 * \file 3 * \brief Dispatcher entry points. 4 */ 5 6/* 7 * Copyright (c) 2007-2009, ETH Zurich. 8 * Copyright (c) 2015, Hewlett Packard Enterprise Development LP. 9 * All rights reserved. 10 * 11 * This file is distributed under the terms in the attached LICENSE file. 12 * If you do not find this file, copies can be found by writing to: 13 * ETH Zurich D-INFK, Universitaetstr. 6, CH-8092 Zurich. Attn: Systems Group. 14 */ 15 16#ifndef __ASSEMBLER__ 17#define __ASSEMBLER__ // GCC Bug c/25993 18#endif /* __ASSEMBLER__ */ 19 20#include <barrelfish/dispatch.h> 21#include <asmoffsets.h> 22 23.text 24.extern disp_run, disp_pagefault, disp_pagefault_disabled, disp_trap 25.globl run_entry, pagefault_entry, disabled_pagefault_entry, trap_entry 26 27.macro init_sp offset 28 /* Offset to the top of the required stack. */ 29 ldr x10, =(OFFSETOF_DISP_GENERIC + \offset) 30 add sp, x0, x10 31.endm 32 33/* void run_entry(struct disp_priv* p) */ 34run_entry: 35 init_sp OFFSETOF_DISP_PRIV_STACK_LIMIT 36 b disp_run 37 38/* 39 * void pagefault_entry(struct disp_priv *p, vaddr_t fault_addr, 40 * uintptr_t error, vaddr_t pc) 41 */ 42pagefault_entry: 43 init_sp OFFSETOF_DISP_PRIV_STACK_LIMIT 44 b disp_pagefault 45 46/* 47 * void disabled_pagefault_entry(struct disp_priv *p, vaddr_t fault_addr, 48 * uintptr_t error, vaddr_t pc) 49 */ 50disabled_pagefault_entry: 51 init_sp OFFSETOF_DISP_PRIV_TRAP_STACK_LIMIT 52 b disp_pagefault_disabled 53 54/* 55 * void trap_entry(struct disp_priv *p, uintptr_t irq, 56 * uintptr_t error, vaddr_t pc) 57 */ 58trap_entry: 59 init_sp OFFSETOF_DISP_PRIV_TRAP_STACK_LIMIT 60 b disp_trap 61