- Timestamp:
- Oct 2, 2012, 9:56:32 AM (13 years ago)
- Location:
- trunk/src/os2ahci
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/os2ahci/init.asm
r133 r141 14 14 PUBLIC _asm_strat ; low-level strategy routine 15 15 PUBLIC _asm_idc_entry ; low-level IDC entry point 16 PUBLIC _asm_krnl_exit ; low-level kernel exit routine 16 17 PUBLIC _readl ; MMIO read (32 bits) 17 18 PUBLIC _writel ; MMIO write (32 bits) … … 91 92 EXTRN _reset_ctxhook : NEAR ; C reset context hook 92 93 EXTRN _engine_ctxhook : NEAR ; C engine context hook 94 EXTRN _apm_suspend : NEAR ; C routine for INT13 IO enable 93 95 _TEXT ENDS 94 96 … … 152 154 RET 153 155 _asm_idc_entry ENDP 156 157 ; Kernel exit routine to enable INT13 I/O (called before a trap dump occurrs) 158 _asm_krnl_exit PROC FAR 159 160 PUSH ES 161 PUSH DS 162 MOV AX,DGROUP 163 MOV DS,AX 164 CLD 165 166 ; call C routine 167 CALL _apm_suspend 168 169 POP DS 170 POP ES 171 172 RET 173 _asm_krnl_exit ENDP 174 154 175 155 176 .386 -
trunk/src/os2ahci/os2ahci.c
r133 r141 59 59 } 60 60 61 /* constants for undefined kernel exit routine; 62 * see register_krnl_exit() func */ 63 #define DevHlp_RegisterKrnlExit 0x006f 64 65 #define FLAG_KRNL_EXIT_ADD 0x1000 66 #define FLAG_KRNL_EXIT_REMOVE 0x2000 67 68 #define TYPE_KRNL_EXIT_NMI 0x0000 /* non masked interrupts */ 69 #define TYPE_KRNL_EXIT_SFF 0x0001 /* system fatal faults */ 70 #define TYPE_KRNL_EXIT_PROCDUMP 0x0002 71 #define TYPE_KRNL_EXIT_DYN 0x0003 72 #define TYPE_KRNL_EXIT_INT13 0x0004 /* enable int13 IO */ 73 61 74 /* ------------------------ typedefs and structures ------------------------ */ 62 75 63 76 /* -------------------------- function prototypes -------------------------- */ 64 77 65 void _cdecl small_code_ (void); 66 67 static int add_unit_info (IORB_CONFIGURATION _far *iorb_conf, int dt_ai, 68 int a, int p, int d, int scsi_id); 78 void _cdecl small_code_ (void); 79 80 static int add_unit_info (IORB_CONFIGURATION _far *iorb_conf, int dt_ai, 81 int a, int p, int d, int scsi_id); 82 83 static void register_krnl_exit (void); 69 84 70 85 /* ------------------------ global/static variables ------------------------ */ … … 381 396 rsp->CodeEnd = (u16) end_of_code; 382 397 rsp->DataEnd = (u16) &end_of_data; 398 399 /* register kernel exit routine for trap dumps */ 400 register_krnl_exit(); 401 383 402 return(STDON); 384 403 … … 1494 1513 } 1495 1514 1515 /******************************************************************************* 1516 * Register kernel exit handler for trap dumps. Our exit handler will be called 1517 * right before the kernel starts a dump; that's where we reset the controller 1518 * so it supports BIOS int13 I/O calls. 1519 */ 1520 static void register_krnl_exit(void) 1521 { 1522 _asm { 1523 1524 push ds 1525 push es 1526 push bx 1527 push si 1528 push di 1529 1530 mov ax, FLAG_KRNL_EXIT_ADD 1531 mov cx, TYPE_KRNL_EXIT_INT13 1532 mov bx, SEG asm_krnl_exit 1533 mov si, OFFSET asm_krnl_exit 1534 mov dl, DevHlp_RegisterKrnlExit 1535 call Device_Help 1536 1537 pop di 1538 pop si 1539 pop bx 1540 pop es 1541 pop ds 1542 } 1543 1544 dprintf("Registered kernel exit routine for INT13 mode\n"); 1545 } -
trunk/src/os2ahci/os2ahci.h
r133 r141 392 392 extern void _cdecl _far reset_hook (void); 393 393 extern void _cdecl _far engine_hook (void); 394 extern void _cdecl _far asm_krnl_exit (void); 394 395 395 396 /* os2ahci.c */ -
trunk/src/os2ahci/version.h
r138 r141 14 14 15 15 16 #define VERSION 12 4/* driver version (2 implied decimals) */16 #define VERSION 125 /* driver version (2 implied decimals) */ 17 17
Note:
See TracChangeset
for help on using the changeset viewer.