From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8362 invoked by alias); 22 Aug 2011 13:23:45 -0000 Received: (qmail 8340 invoked by uid 22791); 22 Aug 2011 13:23:44 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from hagrid.ecoscentric.com (HELO mail.ecoscentric.com) (212.13.207.197) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 22 Aug 2011 13:23:27 +0000 Received: from localhost (hagrid.ecoscentric.com [127.0.0.1]) by mail.ecoscentric.com (Postfix) with ESMTP id 5745D2F78008 for ; Mon, 22 Aug 2011 14:23:26 +0100 (BST) Received: from mail.ecoscentric.com ([127.0.0.1]) by localhost (hagrid.ecoscentric.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8NatFWallAXn; Mon, 22 Aug 2011 14:23:24 +0100 (BST) From: bugzilla-daemon@bugs.ecos.sourceware.org To: ecos-patches@ecos.sourceware.org Subject: [Bug 1001275] Cortex-M (armV7) architecture endian instructions / Applied on lwIP X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: eCos X-Bugzilla-Component: Patches and contributions X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: ilijak@siva.com.mk X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: low X-Bugzilla-Assigned-To: unassigned@bugs.ecos.sourceware.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: In-Reply-To: References: X-Bugzilla-URL: http://bugs.ecos.sourceware.org/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Mon, 22 Aug 2011 13:23:00 -0000 Message-Id: <20110822132324.D41D92F78001@mail.ecoscentric.com> Mailing-List: contact ecos-patches-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: ecos-patches-owner@ecos.sourceware.org X-SW-Source: 2011-08/txt/msg00012.txt.bz2 Please do not reply to this email. Use the web interface provided at: http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001275 --- Comment #11 from Ilija Kocho 2011-08-22 14:23:22 BST --- (In reply to comment #9) > (In reply to comment #8) > > Sergei > > > > I did testing and I have working code, but I would postpone patch > > generation because of the question below. > > > > (In reply to comment #6) > > > (In reply to comment #5) > > > > (In reply to comment #4) > > > > Personally I would like CYGARC_SWAPxx(), but since CYG_SWAPxx() are > > > > already present in hal_endian.h let's use them. It will propagate REV > > > > instructions in other parts of code that may benefit (i guess it is > > > > safe). > > > > hal_endian.h has a provision CYGBLD_HAL_ENDIAN_H for include of > > architecture specific CYGARC_SWAPxx(). This is what I put in > > hal_cortexm.cdl: > > > > define_proc { > > puts $::cdl_system_header "#define CYGBLD_HAL_ENDIAN_H \ > > " > > } > > > > I like it, this is a great find! > > If I understood you correctly you again returned back to CYGARC prefix > for macros. If it is not a typo then I would add below those definitions > (CYGARC_SWAPxx macros) in ``cortexm_endian.h'' the same check and far > definitions (overrides) It is a my mistake:( sorry, CYG_SWAPxx() it should be. [snip (as it is consequence to my error)] > > and add such CDL option in Cortex-M config file. Well, used name of the > option is for demo only. Thus, users can rid fast inlines if they want. > > > Now cortexm_endian.h is a new header that contains the CYGARC_SWAPxx() > > macros and corresponding inline functions. I added this file in order > > to avoid include of complete hal_arch.h > > Here is cortexm_endian.h snippet: #include static __inline__ cyg_uint32 cyg_hal_swap32(cyg_uint32 original) { cyg_uint32 swapped; CYGARC_REV(swapped, original); return swapped; } static __inline__ cyg_uint16 cyg_hal_swap16(cyg_uint16 original) { cyg_uint16 swapped; CYGARC_REV16(swapped, original); return swapped; } #define CYG_SWAP32(__val) cyg_hal_swap32(__val) #define CYG_SWAP16(__val) cyg_hal_swap16(__val) > > For me it is OK to add this header in arch/include but there may be a > > better proposal. Please comment. > > > > Ilija > > So, with your proposal we can leave hal_arch.h without any changes. Did > you mean it? I read so and I guess that we have to manage the definition > of LWIP_PLATFORM_BYTESWAP from configtool. In ideal world this value must > be defined from lwip config file, e.g. I can see 2 options: Option 1. We include cortexm_endian.h in hal_arch.h (that's what i have tested). here are all changes to hal_arch.h: diff -u -r1.3 hal_arch.h --- hal_arch.h 13 Feb 2009 17:04:18 -0000 1.3 +++ hal_arch.h 22 Aug 2011 12:45:24 -0000 @@ -55,6 +55,9 @@ #include +#include +#include + Option 2. Probably we can include hal_endian.h in lwipots.h (not tested). My vote is for Option 1. since it would propagate cortexm_endian.h everywhere (for better, or for worse) Cortex-M is used. > > to add into lwip_net.cdl: > > cdl_option CYGBLD_LWIP_HTONS_HTONL_INLINED { > default_value 0 > } > In either case we don't need CDL. Following is what I have tested (a patch to your input) : > to add into lwipopts.h: > > #if CYGPKG_LWIP_HTONS_HTONL_INLINED -#if CYGPKG_LWIP_HTONS_HTONL_INLINED > # include +#ifdef CYG_SWAP32 > # define LWIP_PLATFORM_BYTESWAP 1 > # define LWIP_PLATFORM_HTONS(__val) CYG_SWAP16(__val) > # define LWIP_PLATFORM_HTONL(__val) CYG_SWAP32(__val) > #endif > > What do you think? If you agree with adding cortexm_endian.h and #include it in hal_arch.h I could submit patches for review. Ilija -- Configure bugmail: http://bugs.ecos.sourceware.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.