- Timestamp:
- Feb 20, 2001, 5:58:33 AM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/win32k/dev32/d32init.c
r5119 r5202 1 /* $Id: d32init.c,v 1.3 5 2001-02-11 23:44:38bird Exp $1 /* $Id: d32init.c,v 1.36 2001-02-20 04:58:33 bird Exp $ 2 2 * 3 3 * d32init.c - 32-bits init routines. … … 777 777 * push edi 778 778 * mov eax, dword ptr [xxxxxxxx] 779 * 779 * or 780 * movzx esp, sp 781 * or 782 * call rel32 783 * popf 780 784 */ 781 785 if ((pach[0] == 0x55 && (pach[1] == 0x8b || pach[1] == 0xa1)) /* the two first prologs */ … … 801 805 (pach[0] == 0xa1 && !fOverload) /* the next prolog */ 802 806 || 803 (pach[0] == 0x57 && pach[1] == 0x8b && !fOverload) /* the last prolog */ 807 (pach[0] == 0x57 && pach[1] == 0x8b && !fOverload) /* the next prolog */ 808 || 809 (pach[0] == 0x0f && pach[1] == 0xb7 && pach[2] == 0xe4 && !fOverload) /* the next prolog */ 810 || 811 (pach[0] == 0xe8 && pach[5] == 0x9d && !fOverload) /* the last prolog */ 804 812 ) 805 813 { … … 815 823 switch (*pach) 816 824 { 825 case 0x0f: 826 if (pach[1] != 0xb7 && pach[2] != 0xe4) /* movzx esp, sp */ 827 { 828 kprintf(("interpretFunctionProlog32: unknown instruction 0x%x 0x%x 0x%x\n", pach[0], pach[1], pach[2])); 829 return -11; 830 } 831 pach += 2; 832 cb += 2; 833 break; 834 835 817 836 /* simple one byte prefixes */ 818 837 case 0x2e: /* cs segment override */ … … 839 858 case 0x56: /* push si */ 840 859 case 0x57: /* push di */ 860 case 0x06: /* push es */ 861 case 0x0e: /* push cs */ 862 case 0x1e: /* push ds */ 863 case 0x16: /* push ss */ 841 864 break; 842 865 … … 877 900 pach += cbWord; 878 901 cb += cbWord; 902 break; 903 904 /* fixed five byte instructions */ 905 case 0xe8: /* call imm32 */ 906 pach =+ 4; 907 cb =+ 4; 879 908 break; 880 909
Note:
See TracChangeset
for help on using the changeset viewer.