xref: /csrg-svn/sys/tahoe/align/Acasel.c (revision 29594)
1 /*	Acasel.c	1.1	86/07/20	*/
2 
3 #include "../tahoealign/align.h"
4 casel(infop)	process_info *infop;
5 /*
6 /*	Case (longword).
7 /*	Can't use real HW opcode, don't want to branch out !
8 /*
9 /***********************************/
10 {
11 	register long selector, base;
12 	register unsigned temporary, limit;
13 
14 	selector = operand(infop,0)->data;
15 	base = operand(infop,1)->data;
16 	limit = operand(infop,2)->data;
17 	if (pc & 1) pc += 1;	/* Displacements are aligned ! */
18 	temporary = selector - base;
19 	if (temporary <= limit)
20 		pc = pc + get_word (infop, (char *)(pc + 2*temporary) );
21 	else pc = pc + limit*2 + 2;
22 }
23