qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Jermar <jakub@jermar.eu>
To: HelenOS development mailing list <helenos-devel@lists.modry.cz>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [HelenOS-devel] [sparc64] Miscomputed minimum of a group of numbers in sparc64 emulation
Date: Fri, 01 Jul 2011 14:57:52 +0200	[thread overview]
Message-ID: <4E0DC450.4000700@jermar.eu> (raw)
In-Reply-To: <CACXAS8B8E=z0w9fTzO_ZGzh91V5iGFiw_Hb5E=joip1D0=f9=g@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1478 bytes --]

On 1.7.2011 12:41, Artyom Tarasenko wrote:
> Looks like it's a pretty nice test case.
> 
> The test case scenario is to load the initial values into the
> registers (you already know them),
> calculate the mins, cmp the result with expected and jump somewhere.
> Since it happens with interrupts disabled, we don't need an OS or bios
> to test that. The binary just has to have an entry point at 0x20,
> then we can load it instead of bios.
> 
> Care to produce the test case? (Otherwise I'll do it, but probably not
> until the weekend after the next one).

Yes I have a small reproducible testcase, see the attachments.

When _not_ singlestepping via GDB's `stepi`, the testcase will fail and
crash Qemu like this:

qemu: fatal: Trap 0x0101 while trap level (5) >= MAXTL (5), Error state
<register dumped here>

On the other hand, when I attach GDB to Qemu and step through all
instructions using `stepi`, the testcase will succeed and crash Qemu
like this:

qemu: fatal: Trap 0x0100 while trap level (5) >= MAXTL (5), Error state
<registers dumped here>

Mind the difference in the trap type - 0x100 for success, 0x101 for failure.

This is how I run the test:

Without GDB:
$ qemu-system-sparc64 -bios ./testcase

With GDB:
$ qemu-system-sparc64 -bios ./testcase -s -S

>From another terminal:
$ /usr/local/cross/sparc64/bin/sparc64-linux-gnu-gdb
(gdb) set architecture sparc:v9
(gdb) target remote localhost:1234
(gdb) stepi
...

Hope this helps to fix the problem.

Jakub

[-- Attachment #2: Makefile --]
[-- Type: text/plain, Size: 216 bytes --]

.PHONY=all
all:
	rm *.o testcase
	/usr/local/cross/sparc64/bin/sparc64-linux-gnu-as -g testcase.S -o testcase.o
	/usr/local/cross/sparc64/bin/sparc64-linux-gnu-ld -Ttext 0x00 testcase.o -o testcase --oformat binary


[-- Attachment #3: testcase --]
[-- Type: application/octet-stream, Size: 116 bytes --]

[-- Attachment #4: testcase.S --]
[-- Type: text/plain, Size: 444 bytes --]

.global _start 

.register %g2, #scratch
.register %g3, #scratch

.text

.space 0x20

_start:
	set 110393, %i1
	set 0, %i2
	set 131072, %g1
	set 0x40, %g3

	cmp  %i1, %g3
	srl  %g1, 8, %g4
	srl  %g1, 0x18, %g1
	or  %g4, %g1, %g4
	sllx  %g4, 0x30, %g2
	srlx  %g2, 0x30, %g2
	udivx  %i2, %g2, %g1
	mulx  %g1, %g2, %g1
	movgu  %xcc, %g3, %i1
	sub  %i2, %g1, %g1
	sub  %g2, %g1, %g1
	cmp  %i1, %g1
	bgu  %xcc, 0f
	nop

succ:
	ta 0

fail:
0:
	ta 1


  reply	other threads:[~2011-07-01 12:57 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-30 21:12 [Qemu-devel] [sparc64] Miscomputed minimum of a group of numbers in sparc64 emulation Jakub Jermar
2011-07-01  9:15 ` [Qemu-devel] [HelenOS-devel] " Artyom Tarasenko
2011-07-01  9:36   ` Jakub Jermar
2011-07-01 10:41     ` Artyom Tarasenko
2011-07-01 12:57       ` Jakub Jermar [this message]
2011-07-01 14:11         ` Jakub Jermar
2011-07-01 14:24           ` Laurent Desnogues
2011-07-01 14:28             ` Jakub Jermar
2011-07-01 15:08               ` Artyom Tarasenko
2011-07-01 14:15         ` Laurent Desnogues
2011-07-01 14:21           ` Jakub Jermar
2011-07-01 15:03           ` Artyom Tarasenko
2011-07-01 15:20             ` Laurent Desnogues
2011-07-01 15:53               ` Artyom Tarasenko
2011-07-01 16:14                 ` Artyom Tarasenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E0DC450.4000700@jermar.eu \
    --to=jakub@jermar.eu \
    --cc=helenos-devel@lists.modry.cz \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).