From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33751) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WJT6Y-0001Y0-FX for qemu-devel@nongnu.org; Fri, 28 Feb 2014 14:28:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WJT6O-0006Tg-W2 for qemu-devel@nongnu.org; Fri, 28 Feb 2014 14:28:18 -0500 Received: from e35.co.us.ibm.com ([32.97.110.153]:49208) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WJT6O-0006TV-Of for qemu-devel@nongnu.org; Fri, 28 Feb 2014 14:28:08 -0500 Received: from /spool/local by e35.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 28 Feb 2014 12:28:07 -0700 Message-ID: <5310E343.1050005@linux.vnet.ibm.com> Date: Fri, 28 Feb 2014 13:28:03 -0600 From: Thomas Falcon MIME-Version: 1.0 References: <1393455099-4831-1-git-send-email-tlfalcon@linux.vnet.ibm.com> <5310C96E.8040002@twiddle.net> In-Reply-To: <5310C96E.8040002@twiddle.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH v4] target-ppc: gdbstub allow byte swapping for reading/writing registers List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Richard Henderson , qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org On 02/28/2014 11:37 AM, Richard Henderson wrote: > On 02/26/2014 02:51 PM, Thomas Falcon wrote: >> +void ppc_cpu_gdb_swap_register(uint8_t *mem_buf, int n) >> +{ >> + int len = ppc_cpu_gdb_register_len(n); >> + int i = 0; >> + uint8_t tmp; >> + for (i = 0; i < len/2; i++) { >> + tmp = *(mem_buf + i); >> + *(mem_buf+i) = *(mem_buf + len - 1 - i); >> + *(mem_buf + len - 1 - i) = tmp; >> + } >> +} > Ew. > > The number of register sizes you need to handle is extremely limited. One can > easily use bswap32 and bswap64 for this. > > > r~ > Thanks for your feedback. Did not realize there were built-in bswap functions for pointers. How about this instead? int len = ppc_cpu_gdb_register_len(n); if (len==4) { bswap32s((uint32_t *)mem_buf); } else { bswap64s((uint64_t *)mem_buf); }