home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!cs.utexas.edu!sun-barr!olivea!sgigate!odin!sgihub!zola!zuni!anchor!olson
- From: olson@anchor.esd.sgi.com (Dave Olson)
- Newsgroups: comp.sys.sgi.hardware
- Subject: Re: R3000 -> R4000 incompatibility?
- Message-ID: <u4u3lq8@zuni.esd.sgi.com>
- Date: 27 Dec 92 22:12:58 GMT
- References: <1992Dec24.070621.2821@sol.ctr.columbia.edu>
- Sender: news@zuni.esd.sgi.com (Net News)
- Organization: Silicon Graphics, Inc. Mountain View, CA
- Lines: 40
-
- In <1992Dec24.070621.2821@sol.ctr.columbia.edu> penev@venezia (Penio Penev) writes:
-
- | Does any one know a reason, why a program, runnng on R3000 would not
- | run on R4000?
- |
- | I'm using only ALU, memory and branch instructions. No coprocessor
- | (0 or 1), not mul/dev.
- |
- | The program runs on R3000 (IRIX 4.0.1), but fails on R4000 (4.0.4).
- | The error is reproducible, occures allways in the same region of the
- | program, and behaves identically on successive runs. It seems to me
- | like a jump to a bad address, resulting from a bad value in the $ra
- | register.The problem is that whenever I put brakepoints "close enough"
- | and do noting, but cont in them, it disappers.
- |
- | I have two explanations: 1) I do not fill the load delay slot
- | properly, which results in jump to garbage. 2) I have made a mistake,
- | but such a one, that the R3000 hazard (un)handling corrects it.
-
- You may be running afoul of a bug in the rev 2.2 part of the r4k, if your
- program is either some form of interpreter, or is otherwise executing
- out of the data segment. To work around that bug, branch and jump
- instructions must be double word aligned (low 3 bits of address 0).
-
- Your last paragraph above makes it sound like you are generating
- instruction streams without the compiler.
-
- The compilers normally work around this, and the kernel has a workaround
- for it for pages in the instruction segment (of user programs).
-
- This is fixed in rev 3 of the chip (which we aren't shipping yet, and
- may not ship, depending on availability of the r4400, and cost of
- qualifying a new chip rev). It is also fixed in the r4400.
-
- Programs like interpreters have fallen afoul of this problem.
- It is documented in the IRIX 4.0.3 and later release notes.
- --
- Let no one tell me that silence gives consent, | Dave Olson
- because whoever is silent dissents. | Silicon Graphics, Inc.
- Maria Isabel Barreno | olson@sgi.com
-