[comp.sys.amiga.programmer] Unknown GURU numbers

mike@zorch.SF-Bay.ORG (Mike Smithwick) (03/10/91)

[]

Is there a more complete source of GURU numbers than alerts.h? I'm always
getting ones  which aren't listed. Just what the heck is 0x00000003 and
0x0000000B?


mike ("Share the fantasy")


-- 
"outside of a dog, a book is mans best friend, inside a dog, it's
 too dark to read"-Groucho

Mike Smithwick - ames!zorch!mike

ler@lerami.lonestar.org (Larry Rosenman) (03/10/91)

In article  <1991Mar10.072019.15764@zorch.SF-Bay.ORG>, mike@zorch.SF-Bay.ORG (Mike Smithwick) writes:
>[]
>
>Is there a more complete source of GURU numbers than alerts.h? I'm always
>getting ones  which aren't listed. Just what the heck is 0x00000003 and
>0x0000000B?
0x00000003 and 0x0000000b are processor Exceptions.
3 is address error
B is Line 1111 (F) emulator.  If the high byte is zero, it is a processor
exception.
>
>
>mike ("Share the fantasy")
>
>
>-- 
>"outside of a dog, a book is mans best friend, inside a dog, it's
> too dark to read"-Groucho
>
>Mike Smithwick - ames!zorch!mike
-----
--
Larry Rosenman INTERNET: ler@lerami.lonestar.org UUCP: uunet!letni!lerami!ler
BIX: ler  CIS: 73547,3201 PLINK: LER GEnie: LEROSENMAN
ATT: +1 214-399-0210 (Voice)
US Mail: 900 Lake Isle Circle, Irving, Texas  75060-7709

kenny@mazurka.UUCP (Kenneth Yarnall) (03/11/91)

In article <1991Mar10.072019.15764@zorch.SF-Bay.ORG> mike@zorch.SF-Bay.ORG (Mike Smithwick) writes:
>[]
>
>Is there a more complete source of GURU numbers than alerts.h? I'm always
>getting ones  which aren't listed. Just what the heck is 0x00000003 and
>0x0000000B?

_Mapping the Amiga_ by Anderson and Thompson (Compute Books, 1990, ISBN
0-87455-195-1) has a bunch on them in an appendix (well, all the ones I've
ever gotten, anyway :).  It lists 00000003 as implying an Adderss error (a CPU
exception, and 0000000B as Op code 1111.

>mike ("Share the fantasy")

--
      Ken Yarnall                 ///   yarnall@usceast.cs.scarolina.EDU
       Math Department, USC   \\\///   ...opusc!mazurka!kenny
        Columbia, S.C. 29208   \\\/   (803)777-5218
         "I'm not good in groups. It's hard to work in a group 
                    when you're omnipotent." - Q

lkoop@pnet01.cts.com (Lamonte Koop) (03/11/91)

mike@zorch.SF-Bay.ORG (Mike Smithwick) writes:
>[]
>
>Is there a more complete source of GURU numbers than alerts.h? I'm always
>getting ones  which aren't listed. Just what the heck is 0x00000003 and
>0x0000000B?

Generally, when you see a guru like this, it signifies that what you are
getting is a processor exception number directly.  A guru with the value 
00000003.xxxxxxxx or 0000000B.xxxxxxxx would be an Address error exception or
an F-Line Emulation exception, respectively.  (The xxxxxxxx part is the
address of the offending task).  When you see that string of zeros in front of
the error code then you have a direct, no frills CPU exception on your hands.

>
>
>mike ("Share the fantasy")
>
>
>-- 
>"outside of a dog, a book is mans best friend, inside a dog, it's
> too dark to read"-Groucho
>
>Mike Smithwick - ames!zorch!mike


                             LaMonte Koop
 Internet: lkoop@pnet01.cts.com         ARPA: crash!pnet01!lkoop@nosc.mil
           UUCP: {hplabs!hp-sdd ucsd nosc}!crash!pnet01!lkoop
 "It's a dog-eat-dog world...and I'm wearing Milk Bone underwear"--Norm

griffin@frith.uucp (Danny Griffin) (03/11/91)

mike@zorch.SF-Bay.ORG (Mike Smithwick) writes:


>Is there a more complete source of GURU numbers than alerts.h? I'm always
>getting ones  which aren't listed. Just what the heck is 0x00000003 and
>0x0000000B?

0x03 is a CPU trap address error, and 0x0B is also a CPU trap, opcode 1111
(I believe that is a FPU or 680[23]0 instruction).  Both can be caused by
wild pointers, etc.  I used to see a lot of those when I first started
programming this beastie. :-)

I use GOMF and the errors are in that book, but there is also at least
one file of GURU numbers floating around on the BBSes and possibly the
Fish disks.
.


--
Dan Griffin
griffin@frith.egr.msu.edu

eeh@public.BTR.COM (Eduardo E. Horvath eeh@btr.com) (03/12/91)

In article  <1991Mar10.072019.15764@zorch.SF-Bay.ORG>, mike@zorch.SF-Bay.ORG (Mike Smithwick) writes:
>[]

>Is there a more complete source of GURU numbers than alerts.h? I'm always
>getting ones  which aren't listed. Just what the heck is 0x00000003 and
>0x0000000B?

	Thereafter several people answer that thest numbers are generated
by the CPU.  What is the algorithm used to generate these numbers?  Is it
necessary to memorize a long list of these or is there a simple method to
calculate them, like taking the address of the exception vector and dividing
it by 4?

	Inquiring minds want to know.


-- 
=========================================================================
Eduardo Horvath				eeh@btr.com
					..!{decwrl,mips,fernwood}!btr!eeh
	"Trust me, I am cognizant of what I am doing." - Hammeroid

markv@kuhub.cc.ukans.edu (03/13/91)

In article <2093@public.BTR.COM>, eeh@public.BTR.COM (Eduardo E. Horvath  eeh@btr.com) writes:
> In article  <1991Mar10.072019.15764@zorch.SF-Bay.ORG>, mike@zorch.SF-Bay.ORG (Mike Smithwick) writes:
>>[]
> 
>>Is there a more complete source of GURU numbers than alerts.h? I'm always
>>getting ones  which aren't listed. Just what the heck is 0x00000003 and
>>0x0000000B?
> 
> 	Thereafter several people answer that thest numbers are generated
> by the CPU.  What is the algorithm used to generate these numbers?  Is it
> necessary to memorize a long list of these or is there a simple method to
> calculate them, like taking the address of the exception vector and dividing
> it by 4?

Any guru that begins 0000 is a CPU exception (Motorola terminology),
and the number is the Motorola exception vector number and can be
found in any Motorola 680x0 assembly manual/book.

> 	Inquiring minds want to know.

Common ones are:

	( 1 and 2 dont exist)
	3	-Bus Error
	4	-Address Error
	5	-Illegal instruction
	6	-Divide by 0
	7	-CHK instruction
	8	-TRAPV instruction
	9	-Privlege violation
	A	-Opcode 1010 Emulation (A-line emulation)
	B	-Opcode 1111 Emulation (F-line emulation)
	C-17	-Reserved
	18	-Spurious interrupt
	19-1F	-Autovector interrupts 1-7
	20-2F	-TRAP instruction vectors
	30-3F	-Reserved
	40-FF	-User interrupt vectors

Quite a bit can be learned from these vectors.  3, 4, 5, A, and B are
most often the result of a bad pointer or jumping off into space
(corrupt code).  If you get 3 on a 68000 and not on a 68020+ then
something has misaligned data.  A line and F line emulators can be
just like bad code, or the presence of coprocessor and/or MMU
instructions when said chip isn't present.  CHK is used by some languages
(like some M2 packages) for array bounds checking, and will guru if a
proper handler doesn't get installed.  Similar problems with TRAPV and
Div by 0 errors.  Debuggers will use TRAP vectors for breakpoints, but
need to handle the exception.  Privlege violation is trying to execute
Super mode instruction in user mode.  Most commonly the old MOVE SR
gotcha on 68010+ processors.  NONE of the interrupts should ever guru,
since the system should handle them.  A spurious interrupt or a user
vector should indicates a hardware error, except under Zorro III
cards that might possibly use them, in which case you have a bad
driver or some such.

The only rhyme to the vector numbers is that they are the number of
the vector in the exception vector table.  Each vector is 4 bytes that
is the absolute address of the entry point to the routine that must
return with an RTE or otherwise Toast the system.  Vectors 0 and 1 are
special, they are used as the intial PC and SSP on boot.
> 
> -- 
> =========================================================================
> Eduardo Horvath				eeh@btr.com
> 					..!{decwrl,mips,fernwood}!btr!eeh
> 	"Trust me, I am cognizant of what I am doing." - Hammeroid
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Gooderum			Only...		\    Good Cheer !!!
Academic Computing Services	       ///	  \___________________________
University of Kansas		     ///  /|         __    _
Bix:	  mgooderum	      \\\  ///  /__| |\/| | | _   /_\  makes it
Bitnet:   MARKV@UKANVAX		\/\/  /    | |  | | |__| /   \ possible...
Internet: markv@kuhub.cc.ukans.edu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

rar@auc.UUCP (Rodney Ricks) (03/13/91)

In article <29030.27dca903@kuhub.cc.ukans.edu> markv@kuhub.cc.ukans.edu writes:
>> In article  <1991Mar10.072019.15764@zorch.SF-Bay.ORG>, mike@zorch.SF-Bay.ORG (Mike Smithwick) writes:
>>>[]
>>>Is there a more complete source of GURU numbers than alerts.h? I'm always
>>>getting ones  which aren't listed. Just what the heck is 0x00000003 and
>>>0x0000000B?
>
The book I have (the 68000, 68010, 68020 Primer, by Kelly-Bootle & Fowler
Sams/The Waite Group) disagrees with Mark's listing.
>
According to this book vectors 0 and 1 are:

	0       -Reset: Initial SSP
	1       -Reset: Initial PC

which you describe below, but in the reverse order.  Many of the rest of the
vectors seem to be shifted by one from what you listed, making them as follows:

	2	-Bus Error
	3	-Address Error
	4	-Illegal instruction
	5	-Divide by 0
	6	-CHK instruction
	7	-TRAPV instruction
	8	-Privlege violation
	9	-Opcode 1010 Emulation (A-line emulation)
	A	-Opcode 1111 Emulation (F-line emulation)
	B-17	-Reserved
>	18	-Spurious interrupt
>	19-1F	-Autovector interrupts 1-7
>	20-2F	-TRAP instruction vectors
>	30-3F	-Reserved
>	40-FF	-User interrupt vectors
>

Most likely this was just a typo, but I felt something needed to be said.

>> Eduardo Horvath
>Mark Gooderum

Rodney Ricks

-- 
                                                                            ///
                                                                           ///
Rodney Ricks,   Morehouse College                                      \\\///
                                                                        \\//

forgeas@swinjm.UUCP (Jean-Michel Forgeas) (03/13/91)

In article <kenny.3232@mazurka.UUCP>, Kenneth Yarnall writes:

> In article <1991Mar10.072019.15764@zorch.SF-Bay.ORG> mike@zorch.SF-Bay.ORG (Mike Smithwick) writes:
> >[]
> >
> >Is there a more complete source of GURU numbers than alerts.h? I'm always
> >getting ones  which aren't listed. Just what the heck is 0x00000003 and
> >0x0000000B?
>
> _Mapping the Amiga_ by Anderson and Thompson (Compute Books, 1990, ISBN
> 0-87455-195-1) has a bunch on them in an appendix (well, all the ones I've
> ever gotten, anyway :).  It lists 00000003 as implying an Adderss error (a CPU
> exception, and 0000000B as Op code 1111.

Yes but not everybody knows that an address error is an odd address.
To search your bug without rebooting every time, you could do something
like that:

- an example of code where pointer could be odd:
    long *pointer = (long *) foo->UserData;
    *pointer = value;   <-- boom!

- test pointer with a small change:
    long *pointer = (long *) foo->UserData;
    if (pointer & 1) { printf("Hi Mike this is there!!!\n"); return; }
    *pointer = value;

Best regards,
--
                                     \___/
Jean-Michel Forgeas                   \-/
cbmvax!cbmehq!cbmfra!swinjm!forgeas    |    The Software Winery
                                      -^-
                           And, where is the universe ?

GHGAQZ4@cc1.kuleuven.ac.be (03/14/91)

>        2       -Bus Error
>        3       -Address Error
>        4       -Illegal instruction
>        5       -Divide by 0
>        6       -CHK instruction
>        7       -TRAPV instruction
>        8       -Privlege violation
>        9       -Opcode 1010 Emulation (A-line emulation)
>        A       -Opcode 1111 Emulation (F-line emulation)
>        B-17    -Reserved

Almost correct, but 9 is not an opcode 1010 emulation. 9 is the trace
trap (which I use in my debugger). A is the 1010 emulation trap and
B is the F-line emulation trap.

  ...
  8    -Privilege violation
  9    -Trace trap
  A    -Opcode 1010 emulation
  B    -Opcode 1111 emulation
  ...

  Jorrit Tyberghein

mabac@lysator.liu.se (Mattias Backen) (03/17/91)

forgeas@swinjm.UUCP (Jean-Michel Forgeas) writes:

>In article <kenny.3232@mazurka.UUCP>, Kenneth Yarnall writes:

>> In article <1991Mar10.072019.15764@zorch.SF-Bay.ORG> mike@zorch.SF-Bay.ORG (Mike Smithwick) writes:
>> >[]
>> >
>> >Is there a more complete source of GURU numbers than alerts.h? I'm always
>> >getting ones  which aren't listed. Just what the heck is 0x00000003 and
>> >0x0000000B?
>>
>> _Mapping the Amiga_ by Anderson and Thompson (Compute Books, 1990, ISBN
>> 0-87455-195-1) has a bunch on them in an appendix (well, all the ones I've
>> ever gotten, anyway :).  It lists 00000003 as implying an Adderss error (a CPU
>> exception, and 0000000B as Op code 1111.

I had some trouble knowing what the gurunumber meant too before, but not
anymore :')  There's a PDprogram called "guru" which gives you a very short
explanation of any gurunumber. Short but it's better than nothing and
usually enough. Unfortunately I don't know which Fish it's on, but if you
can't find it, mail me and maybe I can fix it.

-- Mattias Backen.  mabac@Nanny.Lysator.LiU.SE