Changeset d0c5901 in mainline
- Timestamp:
- 2006-06-02T14:07:29Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c034b16
- Parents:
- 116d1ef4
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia64/include/arch.h
r116d1ef4 rd0c5901 32 32 #define LOADED_PROG_STACK_PAGES_NO 2 33 33 34 #include <arch/ski/ski.h> 35 34 36 #endif -
arch/ia64/include/interrupt.h
r116d1ef4 rd0c5901 34 34 #include <arch/register.h> 35 35 36 #define IRQ_COUNT 1 /* TODO */ 36 #define IRQ_COUNT 257 /* 256 NOT suppotred IRQS*//* TODO */ 37 #define IRQ_KBD 256 /* One simulated interrupt for ski simulator keyboard*/ 37 38 38 39 /** External Interrupt vectors. */ … … 120 121 extern void nop_handler(__u64 vector, istate_t *istate); 121 122 extern void external_interrupt(__u64 vector, istate_t *istate); 123 extern void virtual_interrupt(__u64 irq, void *param); 122 124 extern void disabled_fp_register(__u64 vector, istate_t *istate); 123 125 -
arch/ia64/include/ski/ski.h
r116d1ef4 rd0c5901 31 31 32 32 #include <arch/types.h> 33 #include <console/console.h> 33 34 34 35 #define SKI_INIT_CONSOLE 20 … … 37 38 38 39 extern void ski_init_console(void); 40 extern void ski_set_console_sysinfo(void); 39 41 extern void poll_keyboard(void); 40 42 43 extern chardev_t ski_uconsole; 44 extern int kbd_uspace; 45 41 46 #endif -
arch/ia64/src/ia64.c
r116d1ef4 rd0c5901 73 73 void arch_post_mm_init(void) 74 74 { 75 ski_set_console_sysinfo(); 75 76 } 76 77 -
arch/ia64/src/interrupt.c
r116d1ef4 rd0c5901 45 45 #include <proc/scheduler.h> 46 46 #include <ipc/sysipc.h> 47 #include <ipc/irq.h> 48 #include <ipc/ipc.h> 47 49 48 50 … … 53 55 54 56 #define BUNDLE_SIZE 16 57 55 58 56 59 char *vector_names_64_bundle[VECTORS_64_BUNDLE] = { … … 135 138 printf("Interrupted context dump:\n"); 136 139 printf("ar.bsp=%p\tar.bspstore=%p\n", istate->ar_bsp, istate->ar_bspstore); 137 printf("ar.rnat=%# llx\tar.rsc=%$llx\n", istate->ar_rnat, istate->ar_rsc);138 printf("ar.ifs=%# llx\tar.pfs=%#llx\n", istate->ar_ifs, istate->ar_pfs);139 printf("cr.isr=%# llx\tcr.ipsr=%#llx\t\n", istate->cr_isr.value, istate->cr_ipsr);140 printf("ar.rnat=%#018llx\tar.rsc=%#018llx\n", istate->ar_rnat, istate->ar_rsc); 141 printf("ar.ifs=%#018llx\tar.pfs=%#018llx\n", istate->ar_ifs, istate->ar_pfs); 142 printf("cr.isr=%#018llx\tcr.ipsr=%#018llx\t\n", istate->cr_isr.value, istate->cr_ipsr); 140 143 141 printf("cr.iip=%# llx, #%d\t(%s)\n", istate->cr_iip, istate->cr_isr.ei, iip ? iip : "?");142 printf("cr.iipa=%# llx\t(%s)\n", istate->cr_iipa, iipa ? iipa : "?");143 printf("cr.ifa=%# llx\t(%s)\n", istate->cr_ifa, ifa ? ifa : "?");144 printf("cr.iip=%#018llx, #%d\t(%s)\n", istate->cr_iip, istate->cr_isr.ei, iip); 145 printf("cr.iipa=%#018llx\t(%s)\n", istate->cr_iipa, iipa); 146 printf("cr.ifa=%#018llx\t(%s)\n", istate->cr_ifa, ifa); 144 147 } 145 148 … … 243 246 } 244 247 248 void virtual_interrupt(__u64 irq,void *param) 249 { 250 switch(irq) { 251 case IRQ_KBD: 252 if(kbd_uspace) ipc_irq_send_notif(irq); 253 break; 254 default: 255 panic("\nUnhandled Virtual Interrupt request %d\n", irq); 256 break; 257 } 258 } 259 245 260 /* Reregister irq to be IPC-ready */ 246 261 void irq_ipc_bind_arch(__native irq) 247 262 { 263 if(irq==IRQ_KBD) { 264 kbd_uspace=1; 265 return; 266 } 248 267 panic("not implemented\n"); 249 268 /* TODO */ 250 269 } 270 271 272 -
arch/ia64/src/ski/ski.c
r116d1ef4 rd0c5901 30 30 #include <console/console.h> 31 31 #include <console/chardev.h> 32 #include <arch/interrupt.h> 33 #include <sysinfo/sysinfo.h> 32 34 33 static chardev_t ski_console; 35 chardev_t ski_console; 36 chardev_t ski_uconsole; 34 37 static bool kb_disable; 38 int kbd_uspace=0; 35 39 36 40 static void ski_putchar(chardev_t *d, const char ch); … … 112 116 if(ch == '\r') 113 117 ch = '\n'; 114 if (ch) 115 chardev_push_character(&ski_console, ch); 118 if (ch){ 119 if(kbd_uspace){ 120 chardev_push_character(&ski_uconsole, ch); 121 virtual_interrupt(IRQ_KBD,NULL); 122 } 123 else { 124 chardev_push_character(&ski_console, ch); 125 126 } 127 128 } 116 129 } 117 130 … … 153 166 154 167 chardev_initialize("ski_console", &ski_console, &ski_ops); 168 chardev_initialize("ski_uconsole", &ski_uconsole, &ski_ops); 155 169 stdin = &ski_console; 156 170 stdout = &ski_console; 171 157 172 } 173 /** Setup console sysinfo (i.e. Keyboard IRQ) 174 * 175 * Because sysinfo neads memory allocation/dealocation 176 * this functions should be called separetely from init. 177 * 178 */ 179 void ski_set_console_sysinfo(void) 180 { 181 sysinfo_set_item_val("kbd",NULL,true); 182 sysinfo_set_item_val("kbd.irq",NULL,IRQ_KBD); 183 } -
generic/include/ipc/irq.h
r116d1ef4 rd0c5901 43 43 CMD_PORT_READ_1, 44 44 CMD_PORT_WRITE_1, 45 CMD_IA64_GETCHAR, 45 46 CMD_LAST 46 47 } irq_cmd_type; -
generic/src/ipc/irq.c
r116d1ef4 rd0c5901 49 49 #include <atomic.h> 50 50 #include <syscall/copy.h> 51 #include <console/console.h> 51 52 52 53 typedef struct { … … 102 103 case CMD_PORT_WRITE_1: 103 104 outb((long)code->cmds[i].addr, code->cmds[i].value); 105 break; 106 #endif 107 #if defined(ia64) 108 case CMD_IA64_GETCHAR: 109 IPC_SET_ARG2(call->data, _getc(&ski_uconsole)); 104 110 break; 105 111 #endif
Note:
See TracChangeset
for help on using the changeset viewer.