Am 12.04.2011 um 23:32 schrieb Aurelien Jarno <aurel...@aurel32.net>:
> On Mon, Apr 04, 2011 at 04:32:20PM +0200, Alexander Graf wrote: >> There are some instructions that can't (or shouldn't) be expressed by pure >> tcg code. For those, we call into externally compiled C functions. >> >> This patch implements those C functions. >> >> Signed-off-by: Alexander Graf <ag...@suse.de> >> >> --- >> >> v1 -> v2: >> >> - new clock syntax >> - use float_chs >> - use float compare built-ins >> - remove redundant EXECUTE_SVC >> >> v2 -> v3: >> >> - use g2h instead of direct casts >> - remove old code stuffed into comments >> --- >> target-s390x/helpers.h | 151 +++ >> target-s390x/op_helper.c | 2881 >> +++++++++++++++++++++++++++++++++++++++++++++- >> 2 files changed, 3030 insertions(+), 2 deletions(-) >> create mode 100644 target-s390x/helpers.h > > I don't have a deep knowledge of s390 and this patch is very long (not a > complain, it's IBM fault), so I haven't look in details. You'll find > some comments below. > > One general comment is that you often pass index of the registers to the > helper instead of passing the values. This prevent declaring the helpers > as const, which is not very good from the performance point of view. In > some cases there is some good reasons though (like returning 128-bit > values). There always was a good reason: passing more than 1 value as output. However, I've reworked quite a lot of the code to not return cc, so we can calculate it lazily. I probably forgot to adjust the calling afterwards :). Thanks for the catch! Alex