This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: [patch] MIPS: Trap instructions in division/multiply expansions
On Mon, Jul 08, 2002 at 02:45:04PM -0700, cgd@broadcom.com wrote:
> > I believe it would be correct to embed a non-zero code in trap
> > instructions used in division/multiply macro expansions, similarly to how
> > breakpoint codes (6 and 7) are used in the non-trap versions. The
> > following patch implements it. At least MIPS/Linux extracts these codes
> > from both break and trap opcodes and uses them to determine whether
> > SIGTRAP or SIGFPE should be sent. Any comments?
>
> What do other OSes do for these cases? (In particular, i'm wondering
> what the SGI assembler does.)
The trap codes Linux/MIPS is using in the kernel are the same as in IRIX;
they're generated by the IRIX assembler as well. For example:
bash$ cat s.s
.text
div $2, $3
bash$ bash$ as -o s.o s.s
bash$ mips-linux-objdump -d s.o
s.o: file format elf32-bigmips
Disassembly of section .text:
0000000000000000 <.text>:
0: 0043001a div $zero,$v0,$v1
4: 14600002 bnez $v1,0x10
8: 00000021 move $zero,$zero
c: 0007000d break 0x7
10: 2401ffff li $at,-1
14: 14610004 bne $v1,$at,0x28
18: 3c018000 lui $at,0x8000
1c: 14410002 bne $v0,$at,0x28
20: 00000021 move $zero,$zero
24: 0006000d break 0x6
28: 00001012 mflo $v0
...
Ralf