Revision 5fedc612 hw/rtl8139.c
b/hw/rtl8139.c | ||
---|---|---|
2735 | 2735 |
default: |
2736 | 2736 |
DEBUG_PRINT(("RTL8139: ioport write(w) addr=0x%x val=0x%04x via write(b)\n", addr, val)); |
2737 | 2737 |
|
2738 |
#ifdef TARGET_WORDS_BIGENDIAN |
|
2739 |
rtl8139_io_writeb(opaque, addr, (val >> 8) & 0xff); |
|
2740 |
rtl8139_io_writeb(opaque, addr + 1, val & 0xff); |
|
2741 |
#else |
|
2742 | 2738 |
rtl8139_io_writeb(opaque, addr, val & 0xff); |
2743 | 2739 |
rtl8139_io_writeb(opaque, addr + 1, (val >> 8) & 0xff); |
2744 |
#endif |
|
2745 | 2740 |
break; |
2746 | 2741 |
} |
2747 | 2742 |
} |
... | ... | |
2802 | 2797 |
|
2803 | 2798 |
default: |
2804 | 2799 |
DEBUG_PRINT(("RTL8139: ioport write(l) addr=0x%x val=0x%08x via write(b)\n", addr, val)); |
2805 |
#ifdef TARGET_WORDS_BIGENDIAN |
|
2806 |
rtl8139_io_writeb(opaque, addr, (val >> 24) & 0xff); |
|
2807 |
rtl8139_io_writeb(opaque, addr + 1, (val >> 16) & 0xff); |
|
2808 |
rtl8139_io_writeb(opaque, addr + 2, (val >> 8) & 0xff); |
|
2809 |
rtl8139_io_writeb(opaque, addr + 3, val & 0xff); |
|
2810 |
#else |
|
2811 | 2800 |
rtl8139_io_writeb(opaque, addr, val & 0xff); |
2812 | 2801 |
rtl8139_io_writeb(opaque, addr + 1, (val >> 8) & 0xff); |
2813 | 2802 |
rtl8139_io_writeb(opaque, addr + 2, (val >> 16) & 0xff); |
2814 | 2803 |
rtl8139_io_writeb(opaque, addr + 3, (val >> 24) & 0xff); |
2815 |
#endif |
|
2816 | 2804 |
break; |
2817 | 2805 |
} |
2818 | 2806 |
} |
... | ... | |
2958 | 2946 |
default: |
2959 | 2947 |
DEBUG_PRINT(("RTL8139: ioport read(w) addr=0x%x via read(b)\n", addr)); |
2960 | 2948 |
|
2961 |
#ifdef TARGET_WORDS_BIGENDIAN |
|
2962 |
ret = rtl8139_io_readb(opaque, addr) << 8; |
|
2963 |
ret |= rtl8139_io_readb(opaque, addr + 1); |
|
2964 |
#else |
|
2965 | 2949 |
ret = rtl8139_io_readb(opaque, addr); |
2966 | 2950 |
ret |= rtl8139_io_readb(opaque, addr + 1) << 8; |
2967 |
#endif |
|
2968 | 2951 |
|
2969 | 2952 |
DEBUG_PRINT(("RTL8139: ioport read(w) addr=0x%x val=0x%04x\n", addr, ret)); |
2970 | 2953 |
break; |
... | ... | |
3031 | 3014 |
default: |
3032 | 3015 |
DEBUG_PRINT(("RTL8139: ioport read(l) addr=0x%x via read(b)\n", addr)); |
3033 | 3016 |
|
3034 |
#ifdef TARGET_WORDS_BIGENDIAN |
|
3035 |
ret = rtl8139_io_readb(opaque, addr) << 24; |
|
3036 |
ret |= rtl8139_io_readb(opaque, addr + 1) << 16; |
|
3037 |
ret |= rtl8139_io_readb(opaque, addr + 2) << 8; |
|
3038 |
ret |= rtl8139_io_readb(opaque, addr + 3); |
|
3039 |
#else |
|
3040 | 3017 |
ret = rtl8139_io_readb(opaque, addr); |
3041 | 3018 |
ret |= rtl8139_io_readb(opaque, addr + 1) << 8; |
3042 | 3019 |
ret |= rtl8139_io_readb(opaque, addr + 2) << 16; |
3043 | 3020 |
ret |= rtl8139_io_readb(opaque, addr + 3) << 24; |
3044 |
#endif |
|
3045 | 3021 |
|
3046 | 3022 |
DEBUG_PRINT(("RTL8139: read(l) addr=0x%x val=%08x\n", addr, ret)); |
3047 | 3023 |
break; |
... | ... | |
3091 | 3067 |
|
3092 | 3068 |
static void rtl8139_mmio_writew(void *opaque, target_phys_addr_t addr, uint32_t val) |
3093 | 3069 |
{ |
3070 |
#ifdef TARGET_WORDS_BIGENDIAN |
|
3071 |
val = bswap16(val); |
|
3072 |
#endif |
|
3094 | 3073 |
rtl8139_io_writew(opaque, addr & 0xFF, val); |
3095 | 3074 |
} |
3096 | 3075 |
|
3097 | 3076 |
static void rtl8139_mmio_writel(void *opaque, target_phys_addr_t addr, uint32_t val) |
3098 | 3077 |
{ |
3078 |
#ifdef TARGET_WORDS_BIGENDIAN |
|
3079 |
val = bswap32(val); |
|
3080 |
#endif |
|
3099 | 3081 |
rtl8139_io_writel(opaque, addr & 0xFF, val); |
3100 | 3082 |
} |
3101 | 3083 |
|
... | ... | |
3106 | 3088 |
|
3107 | 3089 |
static uint32_t rtl8139_mmio_readw(void *opaque, target_phys_addr_t addr) |
3108 | 3090 |
{ |
3109 |
return rtl8139_io_readw(opaque, addr & 0xFF); |
|
3091 |
uint32_t val = rtl8139_io_readw(opaque, addr & 0xFF); |
|
3092 |
#ifdef TARGET_WORDS_BIGENDIAN |
|
3093 |
val = bswap16(val); |
|
3094 |
#endif |
|
3095 |
return val; |
|
3110 | 3096 |
} |
3111 | 3097 |
|
3112 | 3098 |
static uint32_t rtl8139_mmio_readl(void *opaque, target_phys_addr_t addr) |
3113 | 3099 |
{ |
3114 |
return rtl8139_io_readl(opaque, addr & 0xFF); |
|
3100 |
uint32_t val = rtl8139_io_readl(opaque, addr & 0xFF); |
|
3101 |
#ifdef TARGET_WORDS_BIGENDIAN |
|
3102 |
val = bswap32(val); |
|
3103 |
#endif |
|
3104 |
return val; |
|
3115 | 3105 |
} |
3116 | 3106 |
|
3117 | 3107 |
/* */ |
Also available in: Unified diff