Changeset 142 for trunk/hal/x86_64/core/hal_interrupt.c
- Timestamp:
- Jul 5, 2017, 10:49:55 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/hal/x86_64/core/hal_interrupt.c
r51 r142 1 1 /* 2 * hal_interrupt.c - implementation of interrupt handler for TSAR-MIPS32 3 * 4 * Author Alain Greiner (2016,2017) 2 * hal_interrupt.c - Implementation of interrupt handler for x86_64 5 3 * 6 * Copyright (c) UPMC Sorbonne Universites4 * Copyright (c) 2017 Maxime Villard 7 5 * 8 6 * This file is part of ALMOS-MKH. … … 18 16 * 19 17 * 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,18 * along with ALMOS-MKH.; if not, write to the Free Software Foundation, 21 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 22 20 */ … … 28 26 #include <hal_interrupt.h> 29 27 28 #include <hal_kentry.h> 30 29 #include <hal_internal.h> 31 30 32 void hal_do_interrupt( thread_t * this, 33 reg_t * regs_tbl ) 31 /* -------------------------------------------------------------------------- */ 32 33 /* 34 * Timer interrupt 35 */ 36 void hal_timer_intr(struct trapframe *tf) 37 { 38 x86_printf("-> got timer: rip=%Z\n", tf->tf_rip); 39 return; 40 } 41 42 /* -------------------------------------------------------------------------- */ 43 44 #define PS2_DATA 0x60 45 46 #define PS2_STATUS 0x64 47 # define STATUS_OUT_FULL 0x00 48 # define STATUS_IN_FULL 0x01 49 # define STATUS_SYS_FLAG 0x02 50 51 #define PS2_CMD 0x64 52 53 /* 54 * US scancode table, found on the internet. 55 */ 56 unsigned char scancode_US[128] = 57 { 58 0, 27, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 59 '\b', '\t', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 60 '\n', 61 0, /* 29 - Control */ 62 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', '`', 63 0, /* Left shift */ 64 '\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 65 0, /* Right shift */ 66 '*', 67 0, /* Alt */ 68 ' ', /* Space bar */ 69 0, /* Caps lock */ 70 0, /* 59 - F1 key ... > */ 71 0, 0, 0, 0, 0, 0, 0, 0, 72 0, /* < ... F10 */ 73 0, /* 69 - Num lock*/ 74 0, /* Scroll Lock */ 75 0, /* Home key */ 76 0, /* Up Arrow */ 77 0, /* Page Up */ 78 '-', 79 0, /* Left Arrow */ 80 0, 81 0, /* Right Arrow */ 82 '+', 83 0, /* 79 - End key*/ 84 0, /* Down Arrow */ 85 0, /* Page Down */ 86 0, /* Insert Key */ 87 0, /* Delete Key */ 88 0, 0, 0, 89 0, /* F11 Key */ 90 0, /* F12 Key */ 91 0, /* All other keys are undefined */ 92 }; 93 94 /* 95 * Keyboard interrupt (8042 PS/2) 96 */ 97 void hal_keyboard_intr(struct trapframe *tf) 98 { 99 uint64_t val; 100 101 do { 102 val = in8(PS2_STATUS); 103 } while ((val & STATUS_IN_FULL) == 0); 104 105 val = in8(PS2_DATA); 106 107 x86_printf("-> got keyboard: rip=%Z key=%c ", tf->tf_rip, scancode_US[val]); 108 109 if (val & 0x80) 110 x86_printf("[released]\n"); 111 else 112 x86_printf("[pressed]\n"); 113 114 return; 115 } 116 117 118 /* -------------------------------------------------------------------------- */ 119 120 void hal_do_interrupt( thread_t * this, 121 reg_t * regs_tbl ) 34 122 { 35 123 x86_panic((char *)__func__);
Note: See TracChangeset
for help on using the changeset viewer.