Message ID | 1382400765-26377-10-git-send-email-sebastian@macke.de |
---|---|
State | New |
Headers | show |
sebastian@macke.de writes:
> The test cases did not correctly test for the carry flag.
Out of interest how are you building your test cases, cross-compiling or
from within the emulated environment?
I want to clean-up and resurrect the TCG tests but one of the challenges
is all the non-x86 targets need to be built somehow.
Cheers,
Hi Alex, I am using a cross-compiling toolchain. It's the easiest way as I have to compile the image for QEMU anyhow. http://opencores.org/or1k/OpenRISC_GNU_tool_chain Then it's just an "make && make test" in the corresponding tests/tcg/openrisc folder. Inside the virtual machine it would be a little bit more complicated. You have to compile Linux with the initramfs containing the QEMU test sources. Another storage device is currently not supported by the OpenRISC QEMU emulator. Sebastian On 22/10/2013 1:35 AM, Alex Bennée wrote: > sebastian@macke.de writes: > >> The test cases did not correctly test for the carry flag. > Out of interest how are you building your test cases, cross-compiling or > from within the emulated environment? > > I want to clean-up and resurrect the TCG tests but one of the challenges > is all the non-x86 targets need to be built somehow. > > Cheers, >
On Tue, Oct 22, 2013 at 7:45 PM, Sebastian Macke <sebastian@macke.de> wrote: > Hi Alex, > > I am using a cross-compiling toolchain. It's the easiest way as I have to > compile the image for QEMU anyhow. > http://opencores.org/or1k/OpenRISC_GNU_tool_chain > > Then it's just an "make && make test" in the corresponding > tests/tcg/openrisc folder. > > Inside the virtual machine it would be a little bit more complicated. You > have to compile Linux with the initramfs containing the QEMU test sources. > Another storage device is currently not supported by the OpenRISC QEMU > emulator. It should be possible to use network, I did a quick check at the time of openrisc port submission, it used to work.
jcmvbkbc@gmail.com writes: > On Tue, Oct 22, 2013 at 7:45 PM, Sebastian Macke <sebastian@macke.de> wrote: >> Hi Alex, >> >> I am using a cross-compiling toolchain. It's the easiest way as I have to >> compile the image for QEMU anyhow. >> http://opencores.org/or1k/OpenRISC_GNU_tool_chain <snip> I shall have a look. > > It should be possible to use network, I did a quick check at the time of > openrisc port submission, it used to work. Nah cross-compiling makes more sense. I was thinking of making configure detect the various cross compilers at configure time and then optionally enable each set of tcg tests depending on Cross Compile support.
On 22/10/2013 9:01 AM, Max Filippov wrote: > On Tue, Oct 22, 2013 at 7:45 PM, Sebastian Macke <sebastian@macke.de> wrote: >> Hi Alex, >> >> I am using a cross-compiling toolchain. It's the easiest way as I have to >> compile the image for QEMU anyhow. >> http://opencores.org/or1k/OpenRISC_GNU_tool_chain >> >> Then it's just an "make && make test" in the corresponding >> tests/tcg/openrisc folder. >> >> Inside the virtual machine it would be a little bit more complicated. You >> have to compile Linux with the initramfs containing the QEMU test sources. >> Another storage device is currently not supported by the OpenRISC QEMU >> emulator. > It should be possible to use network, I did a quick check at the time of > openrisc port submission, it used to work. > This is true. Via a network file system it should be no problem. But this is a very complicated way to test the QEMU tcg part. The image containing gcc I am currently using you can download under www.simulationcorner.net/vmlinux Run it with "qemu-system-or32 -m 128 -kernel vmlinux -nographic"
On Tue, Oct 22, 2013 at 8:15 PM, Sebastian Macke <sebastian@macke.de> wrote: > On 22/10/2013 9:01 AM, Max Filippov wrote: >> >> On Tue, Oct 22, 2013 at 7:45 PM, Sebastian Macke <sebastian@macke.de> >> wrote: >>> >>> Hi Alex, >>> >>> I am using a cross-compiling toolchain. It's the easiest way as I have to >>> compile the image for QEMU anyhow. >>> http://opencores.org/or1k/OpenRISC_GNU_tool_chain >>> >>> Then it's just an "make && make test" in the corresponding >>> tests/tcg/openrisc folder. >>> >>> Inside the virtual machine it would be a little bit more complicated. You >>> have to compile Linux with the initramfs containing the QEMU test >>> sources. >>> Another storage device is currently not supported by the OpenRISC QEMU >>> emulator. >> >> It should be possible to use network, I did a quick check at the time of >> openrisc port submission, it used to work. >> > > This is true. Via a network file system it should be no problem. But this is > a very complicated way to test the QEMU tcg part. > The image containing gcc I am currently using you can download under > www.simulationcorner.net/vmlinux > Run it with "qemu-system-or32 -m 128 -kernel vmlinux -nographic" I can think of an easier way: try using linux user emulation instead of system emulation, it should make mostly little difference wrt TCG. It should be "qemu-or32 linux-elf-file-to-run".
diff --git a/tests/tcg/openrisc/test_addc.c b/tests/tcg/openrisc/test_addc.c index 05d18f8..a8f756a 100644 --- a/tests/tcg/openrisc/test_addc.c +++ b/tests/tcg/openrisc/test_addc.c @@ -7,9 +7,10 @@ int main(void) b = 0x01; c = 0xffffffff; - result = 1; + result = 0; __asm - ("l.addc %0, %1, %2\n\t" + ("l.add r1, r1, r0\n\t" /* clear carry */ + "l.addc %0, %1, %2\n\t" : "=r"(a) : "r"(b), "r"(c) ); @@ -22,7 +23,8 @@ int main(void) c = 0xffffffff; result = 0x80000001; __asm - ("l.addc %0, %1, %2\n\t" + ("l.add r1, r1, r0\n\t" /* clear carry */ + "l.addc %0, %1, %2\n\t" "l.movhi %2, 0x7fff\n\t" "l.ori %2, %2, 0xffff\n\t" "l.addc %0, %1, %2\n\t" diff --git a/tests/tcg/openrisc/test_addic.c b/tests/tcg/openrisc/test_addic.c index 4ba7432..857aaa1 100644 --- a/tests/tcg/openrisc/test_addic.c +++ b/tests/tcg/openrisc/test_addic.c @@ -6,9 +6,10 @@ int main(void) int result; a = 1; - result = 0x1; + result = 0x0; __asm - ("l.addic %0, %0, 0xffff\n\t" + ("l.add r1, r1, r0\n\t" /* clear carry */ + "l.addic %0, %0, 0xffff\n\t" : "+r"(a) ); if (a != result) { @@ -16,10 +17,11 @@ int main(void) return -1; } - a = 0x1; + a = -1; result = 0x201; __asm - ("l.addic %0, %0, 0xffff\n\t" + ("l.add r1, r1, r0\n\t" /* clear carry */ + "l.addic %0, %0, 0x1\n\t" "l.ori %0, r0, 0x100\n\t" "l.addic %0, %0, 0x100\n\t" : "+r"(a)
The test cases did not correctly test for the carry flag. Signed-off-by: Sebastian Macke <sebastian@macke.de> --- tests/tcg/openrisc/test_addc.c | 8 +++++--- tests/tcg/openrisc/test_addic.c | 10 ++++++---- 2 files changed, 11 insertions(+), 7 deletions(-)