Annotation of cci/sys/tahoe/Aalignment.c, revision 1.1.1.1

1.1       root        1: /*     alignment.c     */
                      2: 
                      3: #include       "../machine/alignment.h"
                      4: 
                      5: alignment()
                      6: {
                      7: /* Part of the parameter list is set up by locore.s.
                      8:  * First 2 dummy variables MUST BE the first local
                      9:  * variables; leaving place for registers 0 and 1
                     10:  * which are not preserved by the current C compiler.
                     11:  * Then, the array of structures and the last_operand
                     12:  * HAVE to be in the given order, to correspond to the
                     13:  * description of process_info in 'alignment.h'. 
                     14:  */
                     15: 
                     16:        long    space_4_Register_1;     /* register 1 */
                     17:        long    space_4_Register_0;     /* register 0 */
                     18:        struct  oprnd   space_4_decoded[4];
                     19:        long    space_4_opcode;
                     20:        long    space_4_last_operand;   /* Last operand # processed */
                     21:        long    space_4_saved_pc;
                     22:        long    space_4_saved_sp;
                     23: 
                     24:        register process_info *infop;
                     25: 
                     26:        infop = (process_info *)&space_4_saved_sp;
                     27:        saved_pc = pc;
                     28:        saved_sp = sp;                          /* For possible exceptions */
                     29: 
                     30:        last_operand = -1;   /* To get the operand routine going correctly */
                     31: 
                     32:        opCODE = 0xff & *(char *)pc;
                     33:        pc++;
                     34:        (*Table[opCODE].routine) (infop);       /* Call relevant handler */
                     35: /*
                     36:  * NOTE : nothing should follow, except the return. The register variables
                     37:  * cannot be trusted anymore, if an exception is signalled.
                     38:  * See 'exception.c' to understand why.
                     39:  */
                     40: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.