| [16] | 1 | /* | 
|---|
 | 2 |  * hal_interrupt.h - Architecture specific interrupt handler API definition. | 
|---|
| [17] | 3 |  * | 
|---|
| [16] | 4 |  * Author   Alain Greiner (2016,2017) | 
|---|
 | 5 |  * | 
|---|
 | 6 |  * Copyright (c) UPMC Sorbonne Universites | 
|---|
 | 7 |  * | 
|---|
 | 8 |  * This file is part of ALMOS-MKH. | 
|---|
 | 9 |  * | 
|---|
 | 10 |  * ALMOS-MKH is free software; you can redistribute it and/or modify it | 
|---|
 | 11 |  * under the terms of the GNU General Public License as published by | 
|---|
 | 12 |  * the Free Software Foundation; version 2.0 of the License. | 
|---|
 | 13 |  * | 
|---|
 | 14 |  * ALMOS-MKH is distributed in the hope that it will be useful, but | 
|---|
 | 15 |  * WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
 | 16 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|---|
 | 17 |  * General Public License for more details. | 
|---|
 | 18 |  * | 
|---|
 | 19 |  * You should have received a copy of the GNU General Public License | 
|---|
 | 20 |  * along with ALMOS-MKH; if not, write to the Free Software Foundation, | 
|---|
 | 21 |  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | 
|---|
 | 22 |  */ | 
|---|
 | 23 |  | 
|---|
 | 24 | #ifndef _HAL_INTERRUPT_H_ | 
|---|
 | 25 | #define _HAL_INTERRUPT_H_ | 
|---|
 | 26 |  | 
|---|
 | 27 | #include <hal_types.h> | 
|---|
 | 28 |  | 
|---|
 | 29 | ////////////////////////////////////////////////////////////////////////////////////////// | 
|---|
 | 30 | //     Architecture specific interrupt handler API | 
|---|
 | 31 | // | 
|---|
 | 32 | // The interrupted thread context (core registers) has been saved by the hal_kentry | 
|---|
 | 33 | // function, in the cpu_uzone array stored in the user thread descriptor (for a core in | 
|---|
| [17] | 34 | // user mode), or in the kernel stack (for a core in kernel mode). | 
|---|
| [16] | 35 | // This array can be used (or not) by the specific interrupt handler. | 
|---|
 | 36 | // | 
|---|
 | 37 | // Any architecture specific implementation must implement this API. | 
|---|
 | 38 | ////////////////////////////////////////////////////////////////////////////////////////// | 
|---|
 | 39 |  | 
|---|
 | 40 | /**** forward declaration  ****/ | 
|---|
 | 41 |  | 
|---|
 | 42 | struct thread_s; | 
|---|
 | 43 |  | 
|---|
 | 44 | /****************************************************************************************** | 
|---|
| [17] | 45 |  * This function implements the TSAR_MIPS32 specific interrupt handler. | 
|---|
| [16] | 46 |  ****************************************************************************************** | 
|---|
 | 47 |  * @ this     : pointer on the interrupted thread. | 
|---|
 | 48 |  * @ regs_tbl : array containing the core registers values, saved by hal_kentry. | 
|---|
 | 49 |  *****************************************************************************************/ | 
|---|
| [17] | 50 | void hal_do_interrupt( struct thread_s * this, | 
|---|
| [16] | 51 |                                reg_t           * regs_tbl ); | 
|---|
 | 52 |  | 
|---|
 | 53 |  | 
|---|
 | 54 | #endif   // _HAL_INTERRUPT_H_ | 
|---|