-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
The easiest way to determine what system calls are being used would
be to run something like strace on the running software (within the
simulator) on the code your running. This is a standard linux
command that outputs the system calls being made. This would be most
useful when running on simics without gems (as the timing accuracy
when using strace is lost already). What you might also want to look
into doing is modifying the linux kernel to call the magic
instruction every time a system call is made (I'm not 100% sure how
the handler is done for this), then use simics methods to view the
instruction stream prior to this. However all of this work would
work best in using just simics to handle it. Even a method as simple
as adding a magic instruction in a single system call and writing a
test program that calls that system call should work for that
process. Then you can figure out from the instruction trace which
instruction caused the trap, and how they work. I am not as familiar
with how to do a lot of this in simics, but I would recommend using
the simics.net forum for more questions related to strictly simics
related questions. Their are many experts on that forum (including
simics employees) who are quite good about answering questions you
may have. For more information on modifying the Linux kernel, I'd
recommend the o'reilly device drivers programming book, the
understanding the linux kernel book is also useful, but tends to be
more x86-specific than the device drivers book.
Phil
On Nov 8, 2006, at 1:15 PM, James Poe wrote:
I apologize in advance as the bulk of these two questions relate to
Simics as opposed to Gems directly, but I would really appreciate
it if some of the experts that have been using both on this list
could point me in the right direction.
I was wondering if anyone has had any experience with system calls
on the Simics/Linux/Sunfire dumps. I am very new to both Simics
and Sparc ISA. From the architectural manuals, it seems that
system calls are invoked using the ta (trap all) instruction.
However, after printing out a trace of the instructions, it appears
that the ta instruction only appears in two forms (as a
Trap_Instruction_3 and a Trap_Instruction_16). Unfortunately it
seems as though 3 occurs far too infrequently, and 16 too
frequently (for instance even when the terminal is idle) to be
system calls. Does anyone know what I might be overlooking, or how
to detect system calls using the base Simics framework running the
Linux/Sparc ISA? Also, does Gems have any knowledge of System Calls?
Also, as I am very new to Simics, I was wondering if anyone knew of
a source of example scripts that I could use to teach myself from.
I've looked through most of the documentation manuals that come
with the academic version of Simics but I'm still a bit lost.
Examples of the types of things I would like to be able to do in
the future would be to record specific register values on every
system call, access stack pointers at certain times, etc.
Thanks in advance for any direction you can provide,
James
_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding
"site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (Darwin)
iD8DBQFFUkT6kSK2LwjyZ3wRAqAlAJ9g+4Tb079SVpTJJ5mlGlx09lBRpwCfR2Dw
z+t5wNS8OfMY1vhMcWpUgH0=
=azNy
-----END PGP SIGNATURE-----
|