On 20 January 2011 12:06, Christophe Lyon <christophe.l...@st.com> wrote: > On 19.01.2011 17:51, Peter Maydell wrote: >> On 19 January 2011 16:10, Christophe Lyon <christophe.l...@st.com> wrote: >>> >>> This patch fixes corner-case saturations, when the target range is >>> zero. It merely removes the guard against (sh == 0), and makes: >>> __ssat(0x87654321, 1) return 0xffffffff and set the saturation flag >> >> did you mean __ssat(0x87654321, 0) here? (they give the same >> result, of course, but it's the sh==0 case the patch is changing...) > > Well... the ARM ARM says that the position for saturation is in the > range 1 to 32, so I think the assembler encodes 1 less than what the > user actually wrote. Hence at user level we use '1', but '0' is encoded > and then parsed by qemu. Am I wrong?
No, you're right, there's a "+1" in the SSAT decoding instructions which I hadn't noticed. -- PMM