xref: /original-bsd/sys/tahoe/align/Aediv.c (revision 6884d44a)
1 /*-
2  * Copyright (c) 1986 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * Computer Consoles Inc.
7  *
8  * %sccs.include.redist.c%
9  *
10  *	@(#)Aediv.c	7.1 (Berkeley) 12/06/90
11  */
12 
13 #include "align.h"
14 int	zzz1,zzz2,zzz3,zzz4,zzz5;
15 ediv(infop)	process_info *infop;
16 /*
17 /*	Extended precision division.
18 /*
19 /***************************************/
20 {
21 	register long Register_12;	/* Has to be the first reg !! */
22 	register long Register_11;	/* remainder */
23 	register long Register_10;	/* quotient */
24 	register long Register_9;	/* divident least */
25 	register long Register_8;	/* divident most */
26 	register long Register_7;	/* divisor */
27 
28 	Register_7 = operand(infop, 0)->data;
29 	Register_8 = operand(infop, 1)->data;
30 	Register_9 = operand(infop, 1)->data2;
31 	Register_12=psl;
32 	Set_psl(r12);	/* restore the user psl */
33 	asm ("	ediv	r7,r8,r10,r11");
34 	asm ("	movpsl	r12");
35 	New_cc (Register_12);
36 	write_back (infop, Register_10, operand(infop, 2));
37 	write_back (infop, Register_11, operand(infop, 3));
38 }
39