Hi Andy,
that does indeed seem to be a problem. I have narrowed it down to
a combination of using K6 and CONFIG_REGPARM. Hunting around a bit
I found this http://my.execpc.com/~geezer/osd/gotchas/, which
suggests the problem is that the asm in question tries to add a register
to the clobber list which is not available. This makes sense,
I guess REGPARM is using edx, so inline assembly can't.
I've CCed the bluetooth maintainers and lkml, hopefully someone there
will have some input on how to resolve this problem, as inline assembly
isn't my strong point and the problem seems to manifest in Linus' current
git tree.
The relevant code is the following call to BUILDIO(b,b,char) towards the
bottom of include/asm/io.h
BUILDIO is as follows, and I am guessing it is the "Nd"(port) and
possibley "d"(port) portions that are problematic.