Ignore:
Timestamp:
2014-09-07T19:17:49Z (10 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
cf7ad06
Parents:
a116f7f2
Message:

Autogenerate ia64 fibril context_t and its offsets.

Rewrite fibril context_save_arch() and context_restore_arch() to use the
new autogenerated offsets. Also improve instruction level parallelization
of these routines by eliminating some stops.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/arch/ia64/include/libarch/fibril.h

    ra116f7f2 r7947c34  
    4040#include <libarch/stack.h>
    4141#include <libarch/types.h>
     42#include <libarch/fibril_context.h>
    4243
    4344/*
     
    6465        } while (0)
    6566
    66 /*
    67  * Only save registers that must be preserved across
    68  * function calls.
    69  */
    70 typedef struct context {
    71 
    72         /*
    73          * Application registers
    74          */
    75         uint64_t ar_pfs;
    76         uint64_t ar_unat_caller;
    77         uint64_t ar_unat_callee;
    78         uint64_t ar_rsc;
    79         uint64_t bsp;           /* ar_bsp */
    80         uint64_t ar_rnat;
    81         uint64_t ar_lc;
    82 
    83         /*
    84          * General registers
    85          */
    86         uint64_t r1;
    87         uint64_t r4;
    88         uint64_t r5;
    89         uint64_t r6;
    90         uint64_t r7;
    91         uint64_t sp;            /* r12 */
    92         uint64_t tp;            /* r13 */
    93        
    94         /*
    95          * Branch registers
    96          */
    97         uint64_t pc;            /* b0 */
    98         uint64_t b1;
    99         uint64_t b2;
    100         uint64_t b3;
    101         uint64_t b4;
    102         uint64_t b5;
    103 
    104         /*
    105          * Predicate registers
    106          */
    107         uint64_t pr;
    108 
    109         uint128_t f2 __attribute__ ((aligned(16)));
    110         uint128_t f3;
    111         uint128_t f4;
    112         uint128_t f5;
    113 
    114         uint128_t f16;
    115         uint128_t f17;
    116         uint128_t f18;
    117         uint128_t f19;
    118         uint128_t f20;
    119         uint128_t f21;
    120         uint128_t f22;
    121         uint128_t f23;
    122         uint128_t f24;
    123         uint128_t f25;
    124         uint128_t f26;
    125         uint128_t f27;
    126         uint128_t f28;
    127         uint128_t f29;
    128         uint128_t f30;
    129         uint128_t f31;
    130 
    131 } context_t;
    132 
    13367static inline uintptr_t context_get_fp(context_t *ctx)
    13468{
Note: See TracChangeset for help on using the changeset viewer.