On Fr, 2014-11-14 at 12:15 -0800, Jay Vosburgh wrote: > Hannes Frederic Sowa <[email protected]> wrote: > > >On Fr, 2014-11-14 at 13:38 -0500, David Miller wrote: > >> From: Hannes Frederic Sowa <[email protected]> > >> Date: Fri, 14 Nov 2014 16:46:18 +0100 > >> > >> > I would still like to see the current proposed fix getting applied and > >> > we can do this on-top. The inline call after this patch reassembles a > >> > direct function call, so besides the long list of clobbers, it should > >> > still be pretty fast. > >> > >> I would rather revert the change entirely until it is implemented > >> properly. > >> > >> Also, I am strongly of the opinion that this is a mis-use of the > >> alternative call interface. It was never intended to be used for > >> things that can make real function calls. > > > >I tend to disagree. Grepping e.g. shows > > > > alternative_call_2(copy_user_generic_unrolled, > > copy_user_generic_string, > > X86_FEATURE_REP_GOOD, > > copy_user_enhanced_fast_string, > > X86_FEATURE_ERMS, > > ASM_OUTPUT2("=a" (ret), "=D" (to), "=S" (from), > > "=d" (len)), > > "1" (to), "2" (from), "3" (len) > > : "memory", "rcx", "r8", "r9", "r10", "r11"); > > > > > >(it has a few less clobbers because it has more output operands) > > As those functions (copy_user_generic_unrolled, et al) are all > in assembly language, presumably the list of clobbered registers can be > had via inspection. > > For the arch_fast_hash2 case, the functions (__intel_crc4_2_hash > and __jash2) are both written in C, so how would the clobber list be > created?
I created it via the function calling convention documented in arch/x86/include/asm/calling.h, so I specified each register which a function is allowed to clobber with. I currently cannot see how I can resolve the invalid constraints error easily. :( So either go with my first patch, which I puts the alternative_call switch point into its own function without ever inlining or the patch needs to be reverted. :/ Bye, Hannes _______________________________________________ discuss mailing list [email protected] http://openvswitch.org/mailman/listinfo/discuss
