trunk/src/emu/cpu/i386/i386priv.h
| r24598 | r24599 | |
| 746 | 746 | UINT32 address = cpustate->pc, error; |
| 747 | 747 | |
| 748 | 748 | if( address & 0x1 ) { /* Unaligned read */ |
| 749 | | value = (FETCH(cpustate) << 0) | |
| 750 | | (FETCH(cpustate) << 8); |
| 749 | value = (FETCH(cpustate) << 0); |
| 750 | value |= (FETCH(cpustate) << 8); |
| 751 | 751 | } else { |
| 752 | 752 | if(!translate_address(cpustate,cpustate->CPL,TRANSLATE_FETCH,&address,&error)) |
| 753 | 753 | PF_THROW(error); |
| r24598 | r24599 | |
| 764 | 764 | UINT32 address = cpustate->pc, error; |
| 765 | 765 | |
| 766 | 766 | if( cpustate->pc & 0x3 ) { /* Unaligned read */ |
| 767 | | value = (FETCH(cpustate) << 0) | |
| 768 | | (FETCH(cpustate) << 8) | |
| 769 | | (FETCH(cpustate) << 16) | |
| 770 | | (FETCH(cpustate) << 24); |
| 767 | value = (FETCH(cpustate) << 0); |
| 768 | value |= (FETCH(cpustate) << 8); |
| 769 | value |= (FETCH(cpustate) << 16); |
| 770 | value |= (FETCH(cpustate) << 24); |
| 771 | 771 | } else { |
| 772 | 772 | if(!translate_address(cpustate,cpustate->CPL,TRANSLATE_FETCH,&address,&error)) |
| 773 | 773 | PF_THROW(error); |
| r24598 | r24599 | |
| 796 | 796 | UINT32 address = ea, error; |
| 797 | 797 | |
| 798 | 798 | if( ea & 0x1 ) { /* Unaligned read */ |
| 799 | | value = (READ8( cpustate, address+0 ) << 0) | |
| 800 | | (READ8( cpustate, address+1 ) << 8); |
| 799 | value = (READ8( cpustate, address+0 ) << 0); |
| 800 | value |= (READ8( cpustate, address+1 ) << 8); |
| 801 | 801 | } else { |
| 802 | 802 | if(!translate_address(cpustate,cpustate->CPL,TRANSLATE_READ,&address,&error)) |
| 803 | 803 | PF_THROW(error); |
| r24598 | r24599 | |
| 813 | 813 | UINT32 address = ea, error; |
| 814 | 814 | |
| 815 | 815 | if( ea & 0x3 ) { /* Unaligned read */ |
| 816 | | value = (READ8( cpustate, address+0 ) << 0) | |
| 817 | | (READ8( cpustate, address+1 ) << 8) | |
| 818 | | (READ8( cpustate, address+2 ) << 16) | |
| 819 | | (READ8( cpustate, address+3 ) << 24); |
| 816 | value = (READ8( cpustate, address+0 ) << 0); |
| 817 | value |= (READ8( cpustate, address+1 ) << 8); |
| 818 | value |= (READ8( cpustate, address+2 ) << 16), |
| 819 | value |= (READ8( cpustate, address+3 ) << 24); |
| 820 | 820 | } else { |
| 821 | 821 | if(!translate_address(cpustate,cpustate->CPL,TRANSLATE_READ,&address,&error)) |
| 822 | 822 | PF_THROW(error); |
| r24598 | r24599 | |
| 833 | 833 | UINT32 address = ea, error; |
| 834 | 834 | |
| 835 | 835 | if( ea & 0x7 ) { /* Unaligned read */ |
| 836 | | value = (((UINT64) READ8( cpustate, address+0 )) << 0) | |
| 837 | | (((UINT64) READ8( cpustate, address+1 )) << 8) | |
| 838 | | (((UINT64) READ8( cpustate, address+2 )) << 16) | |
| 839 | | (((UINT64) READ8( cpustate, address+3 )) << 24) | |
| 840 | | (((UINT64) READ8( cpustate, address+4 )) << 32) | |
| 841 | | (((UINT64) READ8( cpustate, address+5 )) << 40) | |
| 842 | | (((UINT64) READ8( cpustate, address+6 )) << 48) | |
| 843 | | (((UINT64) READ8( cpustate, address+7 )) << 56); |
| 836 | value = (((UINT64) READ8( cpustate, address+0 )) << 0); |
| 837 | value |= (((UINT64) READ8( cpustate, address+1 )) << 8); |
| 838 | value |= (((UINT64) READ8( cpustate, address+2 )) << 16); |
| 839 | value |= (((UINT64) READ8( cpustate, address+3 )) << 24); |
| 840 | value |= (((UINT64) READ8( cpustate, address+4 )) << 32); |
| 841 | value |= (((UINT64) READ8( cpustate, address+5 )) << 40); |
| 842 | value |= (((UINT64) READ8( cpustate, address+6 )) << 48); |
| 843 | value |= (((UINT64) READ8( cpustate, address+7 )) << 56); |
| 844 | 844 | } else { |
| 845 | 845 | if(!translate_address(cpustate,cpustate->CPL,TRANSLATE_READ,&address,&error)) |
| 846 | 846 | PF_THROW(error); |
| 847 | 847 | |
| 848 | 848 | address &= cpustate->a20_mask; |
| 849 | | value = (((UINT64) cpustate->program->read_dword( address+0 )) << 0) | |
| 850 | | (((UINT64) cpustate->program->read_dword( address+4 )) << 32); |
| 849 | value = (((UINT64) cpustate->program->read_dword( address+0 )) << 0); |
| 850 | value |= (((UINT64) cpustate->program->read_dword( address+4 )) << 32); |
| 851 | 851 | } |
| 852 | 852 | return value; |
| 853 | 853 | } |
| r24598 | r24599 | |
| 867 | 867 | UINT32 address = ea, error; |
| 868 | 868 | |
| 869 | 869 | if( ea & 0x1 ) { /* Unaligned read */ |
| 870 | | value = (READ8PL0( cpustate, address+0 ) << 0) | |
| 871 | | (READ8PL0( cpustate, address+1 ) << 8); |
| 870 | value = (READ8PL0( cpustate, address+0 ) << 0); |
| 871 | value |= (READ8PL0( cpustate, address+1 ) << 8); |
| 872 | 872 | } else { |
| 873 | 873 | if(!translate_address(cpustate,0,TRANSLATE_READ,&address,&error)) |
| 874 | 874 | PF_THROW(error); |
| r24598 | r24599 | |
| 885 | 885 | UINT32 address = ea, error; |
| 886 | 886 | |
| 887 | 887 | if( ea & 0x3 ) { /* Unaligned read */ |
| 888 | | value = (READ8PL0( cpustate, address+0 ) << 0) | |
| 889 | | (READ8PL0( cpustate, address+1 ) << 8) | |
| 890 | | (READ8PL0( cpustate, address+2 ) << 16) | |
| 891 | | (READ8PL0( cpustate, address+3 ) << 24); |
| 888 | value = (READ8PL0( cpustate, address+0 ) << 0); |
| 889 | value |= (READ8PL0( cpustate, address+1 ) << 8); |
| 890 | value |= (READ8PL0( cpustate, address+2 ) << 16); |
| 891 | value |= (READ8PL0( cpustate, address+3 ) << 24); |
| 892 | 892 | } else { |
| 893 | 893 | if(!translate_address(cpustate,0,TRANSLATE_READ,&address,&error)) |
| 894 | 894 | PF_THROW(error); |
| r24598 | r24599 | |
| 1314 | 1314 | { |
| 1315 | 1315 | if (port & 1) |
| 1316 | 1316 | { |
| 1317 | | return READPORT8(cpustate, port) | |
| 1318 | | (READPORT8(cpustate, port + 1) << 8); |
| 1317 | UINT16 value = READPORT8(cpustate, port); |
| 1318 | value |= (READPORT8(cpustate, port + 1) << 8); |
| 1319 | return value; |
| 1319 | 1320 | } |
| 1320 | 1321 | else |
| 1321 | 1322 | { |
| r24598 | r24599 | |
| 1342 | 1343 | { |
| 1343 | 1344 | if (port & 3) |
| 1344 | 1345 | { |
| 1345 | | return READPORT8(cpustate, port) | |
| 1346 | | (READPORT8(cpustate, port + 1) << 8) | |
| 1347 | | (READPORT8(cpustate, port + 2) << 16) | |
| 1348 | | (READPORT8(cpustate, port + 3) << 24); |
| 1346 | UINT32 value = READPORT8(cpustate, port); |
| 1347 | value |= (READPORT8(cpustate, port + 1) << 8); |
| 1348 | value |= (READPORT8(cpustate, port + 2) << 16); |
| 1349 | value |= (READPORT8(cpustate, port + 3) << 24); |
| 1350 | return value; |
| 1349 | 1351 | } |
| 1350 | 1352 | else |
| 1351 | 1353 | { |