From: "Andre Przywara" <andre.przywara@amd.com>
To: xen-devel@lists.xensource.com
Subject: [PATCH 4/5] [ioemu]: fix declaration after statement
Date: Wed, 09 Jan 2008 15:03:11 +0100 [thread overview]
Message-ID: <4784D41F.6010203@amd.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 621 bytes --]
ISO C90 forbids mixed declarations and code. ioemu is compiled with
-Wdeclaration-after-statement, so this produces a warning. Moved the
declerations to the beginning of a new block.
--
Andre Przywara
AMD-Operating System Research Center (OSRC), Dresden, Germany
Tel: +49 351 277-84917
----to satisfy European Law for business letters:
AMD Saxony Limited Liability Company & Co. KG,
Wilschdorfer Landstr. 101, 01109 Dresden, Germany
Register Court Dresden: HRA 4896, General Partner authorized
to represent: AMD Saxony LLC (Wilmington, Delaware, US)
General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy
[-- Attachment #2: cdecl.diff --]
[-- Type: text/plain, Size: 18857 bytes --]
diff -r 0f0d67f29ccb tools/ioemu/hw/es1370.c
--- a/tools/ioemu/hw/es1370.c Fri Dec 21 23:58:29 2007 +0100
+++ b/tools/ioemu/hw/es1370.c Tue Jan 08 14:48:38 2008 +0100
@@ -516,9 +516,10 @@ IO_WRITE_PROTO (es1370_writew)
IO_WRITE_PROTO (es1370_writew)
{
ES1370State *s = opaque;
- addr = es1370_fixup (s, addr);
uint32_t shift, mask;
struct chan *d = &s->chan[0];
+
+ addr = es1370_fixup (s, addr);
switch (addr) {
case ES1370_REG_CODEC:
diff -r 0f0d67f29ccb tools/ioemu/hw/rtl8139.c
--- a/tools/ioemu/hw/rtl8139.c Fri Dec 21 23:58:29 2007 +0100
+++ b/tools/ioemu/hw/rtl8139.c Tue Jan 08 14:48:38 2008 +0100
@@ -867,6 +867,7 @@ static void rtl8139_do_receive(void *opa
} else if (buf[0] & 0x01) {
/* multicast */
+ int mcast_idx;
if (!(s->RxConfig & AcceptMulticast))
{
DEBUG_PRINT((">>> RTL8139: multicast packet rejected\n"));
@@ -877,7 +878,7 @@ static void rtl8139_do_receive(void *opa
return;
}
- int mcast_idx = compute_mcast_idx(buf);
+ mcast_idx = compute_mcast_idx(buf);
if (!(s->mult[mcast_idx >> 3] & (1 << (mcast_idx & 7))))
{
@@ -941,6 +942,12 @@ static void rtl8139_do_receive(void *opa
if (rtl8139_cp_receiver_enabled(s))
{
+ int descriptor;
+ uint32_t val, rxdw0,rxdw1,rxbufLO,rxbufHI;
+ uint32_t rx_space;
+ target_phys_addr_t rx_addr;
+ target_phys_addr_t cplus_rx_ring_desc;
+
DEBUG_PRINT(("RTL8139: in C+ Rx mode ================\n"));
/* begin C+ receiver mode */
@@ -958,8 +965,7 @@ static void rtl8139_do_receive(void *opa
/* w2 low 32bit of Rx buffer ptr */
/* w3 high 32bit of Rx buffer ptr */
- int descriptor = s->currCPlusRxDesc;
- target_phys_addr_t cplus_rx_ring_desc;
+ descriptor = s->currCPlusRxDesc;
cplus_rx_ring_desc = rtl8139_addr64(s->RxRingAddrLO, s->RxRingAddrHI);
cplus_rx_ring_desc += 16 * descriptor;
@@ -967,7 +973,6 @@ static void rtl8139_do_receive(void *opa
DEBUG_PRINT(("RTL8139: +++ C+ mode reading RX descriptor %d from host memory at %08x %08x = %016" PRIx64 "\n",
descriptor, s->RxRingAddrHI, s->RxRingAddrLO, (uint64_t)cplus_rx_ring_desc));
- uint32_t val, rxdw0,rxdw1,rxbufLO,rxbufHI;
cpu_physical_memory_read(cplus_rx_ring_desc, (uint8_t *)&val, 4);
rxdw0 = le32_to_cpu(val);
@@ -997,7 +1002,7 @@ static void rtl8139_do_receive(void *opa
return;
}
- uint32_t rx_space = rxdw0 & CP_RX_BUFFER_SIZE_MASK;
+ rx_space = rxdw0 & CP_RX_BUFFER_SIZE_MASK;
/* TODO: scatter the packet over available receive ring descriptors space */
@@ -1017,7 +1022,7 @@ static void rtl8139_do_receive(void *opa
return;
}
- target_phys_addr_t rx_addr = rtl8139_addr64(rxbufLO, rxbufHI);
+ rx_addr = rtl8139_addr64(rxbufLO, rxbufHI);
/* receive/copy to target memory */
cpu_physical_memory_write( rx_addr, buf, size );
@@ -1104,10 +1109,13 @@ static void rtl8139_do_receive(void *opa
}
else
{
+ int avail;
+ uint32_t val;
+
DEBUG_PRINT(("RTL8139: in ring Rx mode ================\n"));
/* begin ring receiver mode */
- int avail = MOD2(s->RxBufferSize + s->RxBufPtr - s->RxBufAddr, s->RxBufferSize);
+ avail = MOD2(s->RxBufferSize + s->RxBufPtr - s->RxBufAddr, s->RxBufferSize);
/* if receiver buffer is empty then avail == 0 */
@@ -1127,7 +1135,7 @@ static void rtl8139_do_receive(void *opa
packet_header |= (((size+4) << 16) & 0xffff0000);
/* write header */
- uint32_t val = cpu_to_le32(packet_header);
+ val = cpu_to_le32(packet_header);
rtl8139_write_buffer(s, (uint8_t *)&val, 4);
@@ -1463,12 +1471,13 @@ int rtl8139_config_writeable(RTL8139Stat
static void rtl8139_BasicModeCtrl_write(RTL8139State *s, uint32_t val)
{
+ uint32_t mask;
val &= 0xffff;
DEBUG_PRINT(("RTL8139: BasicModeCtrl register write(w) val=0x%04x\n", val));
/* mask unwriteable bits */
- uint32 mask = 0x4cff;
+ mask = 0x4cff;
if (1 || !rtl8139_config_writeable(s))
{
@@ -1515,6 +1524,8 @@ static uint32_t rtl8139_BasicModeStatus_
static void rtl8139_Cfg9346_write(RTL8139State *s, uint32_t val)
{
+ uint32_t opmode, eeprom_val;
+
val &= 0xff;
DEBUG_PRINT(("RTL8139: Cfg9346 write val=0x%02x\n", val));
@@ -1522,8 +1533,8 @@ static void rtl8139_Cfg9346_write(RTL813
/* mask unwriteable bits */
val = SET_MASKED(val, 0x31, s->Cfg9346);
- uint32_t opmode = val & 0xc0;
- uint32_t eeprom_val = val & 0xf;
+ opmode = val & 0xc0;
+ eeprom_val = val & 0xf;
if (opmode == 0x80) {
/* eeprom access */
@@ -1699,9 +1710,11 @@ static void rtl8139_TxConfig_write(RTL81
static void rtl8139_TxConfig_writeb(RTL8139State *s, uint32_t val)
{
+ uint32_t tc;
+
DEBUG_PRINT(("RTL8139C TxConfig via write(b) val=0x%02x\n", val));
- uint32_t tc = s->TxConfig;
+ tc = s->TxConfig;
tc &= 0xFFFFFF00;
tc |= (val & 0x000000FF);
rtl8139_TxConfig_write(s, tc);
@@ -1761,6 +1774,9 @@ static void rtl8139_transfer_frame(RTL81
static int rtl8139_transmit_one(RTL8139State *s, int descriptor)
{
+ int txsize;
+ uint8_t txbuffer[0x2000];
+
if (!rtl8139_transmitter_enabled(s))
{
DEBUG_PRINT(("RTL8139: +++ cannot transmit from descriptor %d: transmitter disabled\n",
@@ -1777,8 +1793,7 @@ static int rtl8139_transmit_one(RTL8139S
DEBUG_PRINT(("RTL8139: +++ transmitting from descriptor %d\n", descriptor));
- int txsize = s->TxStatus[descriptor] & 0x1fff;
- uint8_t txbuffer[0x2000];
+ txsize = s->TxStatus[descriptor] & 0x1fff;
DEBUG_PRINT(("RTL8139: +++ transmit reading %d bytes from host memory at 0x%08x\n",
txsize, s->TxAddr[descriptor]));
@@ -1889,6 +1904,12 @@ static uint16_t ip_checksum(void *data,
static int rtl8139_cplus_transmit_one(RTL8139State *s)
{
+ int descriptor;
+ target_phys_addr_t cplus_tx_ring_desc;
+ uint32_t val, txdw0,txdw1,txbufLO,txbufHI;
+ int txsize;
+ target_phys_addr_t tx_addr;
+
if (!rtl8139_transmitter_enabled(s))
{
DEBUG_PRINT(("RTL8139: +++ C+ mode: transmitter disabled\n"));
@@ -1901,10 +1922,9 @@ static int rtl8139_cplus_transmit_one(RT
return 0 ;
}
- int descriptor = s->currCPlusTxDesc;
-
- target_phys_addr_t cplus_tx_ring_desc =
- rtl8139_addr64(s->TxAddr[0], s->TxAddr[1]);
+ descriptor = s->currCPlusTxDesc;
+
+ cplus_tx_ring_desc = rtl8139_addr64(s->TxAddr[0], s->TxAddr[1]);
/* Normal priority ring */
cplus_tx_ring_desc += 16 * descriptor;
@@ -1912,7 +1932,6 @@ static int rtl8139_cplus_transmit_one(RT
DEBUG_PRINT(("RTL8139: +++ C+ mode reading TX descriptor %d from host memory at %08x0x%08x = 0x%8lx\n",
descriptor, s->TxAddr[1], s->TxAddr[0], cplus_tx_ring_desc));
- uint32_t val, txdw0,txdw1,txbufLO,txbufHI;
cpu_physical_memory_read(cplus_tx_ring_desc, (uint8_t *)&val, 4);
txdw0 = le32_to_cpu(val);
@@ -1985,8 +2004,8 @@ static int rtl8139_cplus_transmit_one(RT
s->cplus_txbuffer_offset = 0;
}
- int txsize = txdw0 & CP_TX_BUFFER_SIZE_MASK;
- target_phys_addr_t tx_addr = rtl8139_addr64(txbufLO, txbufHI);
+ txsize = txdw0 & CP_TX_BUFFER_SIZE_MASK;
+ tx_addr = rtl8139_addr64(txbufLO, txbufHI);
/* make sure we have enough space to assemble the packet */
if (!s->cplus_txbuffer)
@@ -2058,13 +2077,16 @@ static int rtl8139_cplus_transmit_one(RT
/* Now decide if descriptor being processed is holding the last segment of packet */
if (txdw0 & CP_TX_LS)
{
+ uint8_t *saved_buffer;
+ int saved_size, saved_buffer_len;
+
DEBUG_PRINT(("RTL8139: +++ C+ Tx mode : descriptor %d is last segment descriptor\n", descriptor));
/* can transfer fully assembled packet */
- uint8_t *saved_buffer = s->cplus_txbuffer;
- int saved_size = s->cplus_txbuffer_offset;
- int saved_buffer_len = s->cplus_txbuffer_len;
+ saved_buffer = s->cplus_txbuffer;
+ saved_size = s->cplus_txbuffer_offset;
+ saved_buffer_len = s->cplus_txbuffer_len;
/* reset the card space to protect from recursive call */
s->cplus_txbuffer = NULL;
@@ -2073,6 +2095,13 @@ static int rtl8139_cplus_transmit_one(RT
if (txdw0 & (CP_TX_IPCS | CP_TX_UDPCS | CP_TX_TCPCS | CP_TX_LGSEN))
{
+ int hlen, proto;
+ uint8_t ip_protocol;
+ uint16_t ip_data_len;
+ uint8_t *eth_payload_data;
+ size_t eth_payload_len;
+ ip_header *ip;
+
DEBUG_PRINT(("RTL8139: +++ C+ mode offloaded task checksum\n"));
#define ETH_P_IP 0x0800 /* Internet Protocol packet */
@@ -2080,15 +2109,15 @@ static int rtl8139_cplus_transmit_one(RT
#define ETH_MTU 1500
/* ip packet header */
- ip_header *ip = 0;
- int hlen = 0;
- uint8_t ip_protocol = 0;
- uint16_t ip_data_len = 0;
-
- uint8_t *eth_payload_data = 0;
- size_t eth_payload_len = 0;
-
- int proto = be16_to_cpu(*(uint16_t *)(saved_buffer + 12));
+ ip = 0;
+ hlen = 0;
+ ip_protocol = 0;
+ ip_data_len = 0;
+
+ eth_payload_data = 0;
+ eth_payload_len = 0;
+
+ proto = be16_to_cpu(*(uint16_t *)(saved_buffer + 12));
if (proto == ETH_P_IP)
{
DEBUG_PRINT(("RTL8139: +++ C+ mode has IP packet\n"));
@@ -2129,33 +2158,38 @@ static int rtl8139_cplus_transmit_one(RT
if ((txdw0 & CP_TX_LGSEN) && ip_protocol == IP_PROTO_TCP)
{
+ int tcp_send_offset;
+ int send_count;
+ /* maximum IP header length is 60 bytes */
+ uint8_t saved_ip_header[60];
+ uint8_t *data_to_checksum;
+ int tcp_hlen, tcp_data_len, tcp_chunk_size, is_last_frame;
+ tcp_header *p_tcp_hdr;
+
#if defined (DEBUG_RTL8139)
int large_send_mss = (txdw0 >> 16) & CP_TC_LGSEN_MSS_MASK;
#endif
DEBUG_PRINT(("RTL8139: +++ C+ mode offloaded task TSO MTU=%d IP data %d frame data %d specified MSS=%d\n",
ETH_MTU, ip_data_len, saved_size - ETH_HLEN, large_send_mss));
- int tcp_send_offset = 0;
- int send_count = 0;
-
- /* maximum IP header length is 60 bytes */
- uint8_t saved_ip_header[60];
+ tcp_send_offset = 0;
+ send_count = 0;
/* save IP header template; data area is used in tcp checksum calculation */
memcpy(saved_ip_header, eth_payload_data, hlen);
/* a placeholder for checksum calculation routine in tcp case */
- uint8_t *data_to_checksum = eth_payload_data + hlen - 12;
+ data_to_checksum = eth_payload_data + hlen - 12;
// size_t data_to_checksum_len = eth_payload_len - hlen + 12;
/* pointer to TCP header */
- tcp_header *p_tcp_hdr = (tcp_header*)(eth_payload_data + hlen);
-
- int tcp_hlen = TCP_HEADER_DATA_OFFSET(p_tcp_hdr);
+ p_tcp_hdr = (tcp_header*)(eth_payload_data + hlen);
+
+ tcp_hlen = TCP_HEADER_DATA_OFFSET(p_tcp_hdr);
/* ETH_MTU = ip header len + tcp header len + payload */
- int tcp_data_len = ip_data_len - tcp_hlen;
- int tcp_chunk_size = ETH_MTU - hlen - tcp_hlen;
+ tcp_data_len = ip_data_len - tcp_hlen;
+ tcp_chunk_size = ETH_MTU - hlen - tcp_hlen;
DEBUG_PRINT(("RTL8139: +++ C+ mode TSO IP data len %d TCP hlen %d TCP data len %d TCP chunk size %d\n",
ip_data_len, tcp_hlen, tcp_data_len, tcp_chunk_size));
@@ -2163,10 +2197,13 @@ static int rtl8139_cplus_transmit_one(RT
/* note the cycle below overwrites IP header data,
but restores it from saved_ip_header before sending packet */
- int is_last_frame = 0;
+ is_last_frame = 0;
for (tcp_send_offset = 0; tcp_send_offset < tcp_data_len; tcp_send_offset += tcp_chunk_size)
{
+ ip_pseudo_header *p_tcpip_hdr;
+ int tcp_checksum;
+ int tso_send_size;
uint16_t chunk_size = tcp_chunk_size;
/* check if this is the last frame */
@@ -2196,14 +2233,14 @@ static int rtl8139_cplus_transmit_one(RT
}
/* recalculate TCP checksum */
- ip_pseudo_header *p_tcpip_hdr = (ip_pseudo_header *)data_to_checksum;
+ p_tcpip_hdr = (ip_pseudo_header *)data_to_checksum;
p_tcpip_hdr->zeros = 0;
p_tcpip_hdr->ip_proto = IP_PROTO_TCP;
p_tcpip_hdr->ip_payload = cpu_to_be16(tcp_hlen + chunk_size);
p_tcp_hdr->th_sum = 0;
- int tcp_checksum = ip_checksum(data_to_checksum, tcp_hlen + chunk_size + 12);
+ tcp_checksum = ip_checksum(data_to_checksum, tcp_hlen + chunk_size + 12);
DEBUG_PRINT(("RTL8139: +++ C+ mode TSO TCP checksum %04x\n", tcp_checksum));
p_tcp_hdr->th_sum = tcp_checksum;
@@ -2221,7 +2258,7 @@ static int rtl8139_cplus_transmit_one(RT
ip->ip_sum = ip_checksum(eth_payload_data, hlen);
DEBUG_PRINT(("RTL8139: +++ C+ mode TSO IP header len=%d checksum=%04x\n", hlen, ip->ip_sum));
- int tso_send_size = ETH_HLEN + hlen + tcp_hlen + chunk_size;
+ tso_send_size = ETH_HLEN + hlen + tcp_hlen + chunk_size;
DEBUG_PRINT(("RTL8139: +++ C+ mode TSO transferring packet size %d\n", tso_send_size));
rtl8139_transfer_frame(s, saved_buffer, tso_send_size, 0);
@@ -2235,13 +2272,14 @@ static int rtl8139_cplus_transmit_one(RT
}
else if (txdw0 & (CP_TX_TCPCS|CP_TX_UDPCS))
{
- DEBUG_PRINT(("RTL8139: +++ C+ mode need TCP or UDP checksum\n"));
-
/* maximum IP header length is 60 bytes */
uint8_t saved_ip_header[60];
+ uint8_t *data_to_checksum;
+ DEBUG_PRINT(("RTL8139: +++ C+ mode need TCP or UDP checksum\n"));
+
memcpy(saved_ip_header, eth_payload_data, hlen);
- uint8_t *data_to_checksum = eth_payload_data + hlen - 12;
+ data_to_checksum = eth_payload_data + hlen - 12;
// size_t data_to_checksum_len = eth_payload_len - hlen + 12;
/* add 4 TCP pseudoheader fields */
@@ -2250,36 +2288,44 @@ static int rtl8139_cplus_transmit_one(RT
if ((txdw0 & CP_TX_TCPCS) && ip_protocol == IP_PROTO_TCP)
{
+ ip_pseudo_header *p_tcpip_hdr;
+ tcp_header* p_tcp_hdr;
+ int tcp_checksum;
+
DEBUG_PRINT(("RTL8139: +++ C+ mode calculating TCP checksum for packet with %d bytes data\n", ip_data_len));
- ip_pseudo_header *p_tcpip_hdr = (ip_pseudo_header *)data_to_checksum;
+ p_tcpip_hdr = (ip_pseudo_header *)data_to_checksum;
p_tcpip_hdr->zeros = 0;
p_tcpip_hdr->ip_proto = IP_PROTO_TCP;
p_tcpip_hdr->ip_payload = cpu_to_be16(ip_data_len);
- tcp_header* p_tcp_hdr = (tcp_header *) (data_to_checksum+12);
+ p_tcp_hdr = (tcp_header *) (data_to_checksum+12);
p_tcp_hdr->th_sum = 0;
- int tcp_checksum = ip_checksum(data_to_checksum, ip_data_len + 12);
+ tcp_checksum = ip_checksum(data_to_checksum, ip_data_len + 12);
DEBUG_PRINT(("RTL8139: +++ C+ mode TCP checksum %04x\n", tcp_checksum));
p_tcp_hdr->th_sum = tcp_checksum;
}
else if ((txdw0 & CP_TX_UDPCS) && ip_protocol == IP_PROTO_UDP)
{
+ ip_pseudo_header *p_udpip_hdr;
+ udp_header *p_udp_hdr;
+ int udp_checksum;
+
DEBUG_PRINT(("RTL8139: +++ C+ mode calculating UDP checksum for packet with %d bytes data\n", ip_data_len));
- ip_pseudo_header *p_udpip_hdr = (ip_pseudo_header *)data_to_checksum;
+ p_udpip_hdr = (ip_pseudo_header *)data_to_checksum;
p_udpip_hdr->zeros = 0;
p_udpip_hdr->ip_proto = IP_PROTO_UDP;
p_udpip_hdr->ip_payload = cpu_to_be16(ip_data_len);
- udp_header *p_udp_hdr = (udp_header *) (data_to_checksum+12);
+ p_udp_hdr = (udp_header *) (data_to_checksum+12);
p_udp_hdr->uh_sum = 0;
- int udp_checksum = ip_checksum(data_to_checksum, ip_data_len + 12);
+ udp_checksum = ip_checksum(data_to_checksum, ip_data_len + 12);
DEBUG_PRINT(("RTL8139: +++ C+ mode UDP checksum %04x\n", udp_checksum));
p_udp_hdr->uh_sum = udp_checksum;
@@ -2538,6 +2584,7 @@ static uint32_t rtl8139_IntrMask_read(RT
static void rtl8139_IntrStatus_write(RTL8139State *s, uint32_t val)
{
+ uint16_t newStatus;
DEBUG_PRINT(("RTL8139: IntrStatus write(w) val=0x%04x\n", val));
#if 0
@@ -2547,7 +2594,7 @@ static void rtl8139_IntrStatus_write(RTL
return;
#else
- uint16_t newStatus = s->IntrStatus & ~val;
+ newStatus = s->IntrStatus & ~val;
/* mask unwriteable bits */
newStatus = SET_MASKED(newStatus, 0x1e00, s->IntrStatus);
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
reply other threads:[~2008-01-09 14:03 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4784D41F.6010203@amd.com \
--to=andre.przywara@amd.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.