1*d30ea906Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause 2*d30ea906Sjfb8856606 * Copyright(c) 2017 Cavium, Inc 32bfe3f2eSlogwang */ 42bfe3f2eSlogwang 52bfe3f2eSlogwang #ifndef CTX_H 62bfe3f2eSlogwang #define CTX_H 72bfe3f2eSlogwang 82bfe3f2eSlogwang #ifdef __cplusplus 92bfe3f2eSlogwang extern "C" { 102bfe3f2eSlogwang #endif 112bfe3f2eSlogwang 122bfe3f2eSlogwang /* 132bfe3f2eSlogwang * CPU context registers 142bfe3f2eSlogwang */ 152bfe3f2eSlogwang struct ctx { 162bfe3f2eSlogwang void *sp; /* 0 */ 172bfe3f2eSlogwang void *fp; /* 8 */ 182bfe3f2eSlogwang void *lr; /* 16 */ 192bfe3f2eSlogwang 202bfe3f2eSlogwang /* Callee Saved Generic Registers */ 212bfe3f2eSlogwang void *r19; /* 24 */ 222bfe3f2eSlogwang void *r20; /* 32 */ 232bfe3f2eSlogwang void *r21; /* 40 */ 242bfe3f2eSlogwang void *r22; /* 48 */ 252bfe3f2eSlogwang void *r23; /* 56 */ 262bfe3f2eSlogwang void *r24; /* 64 */ 272bfe3f2eSlogwang void *r25; /* 72 */ 282bfe3f2eSlogwang void *r26; /* 80 */ 292bfe3f2eSlogwang void *r27; /* 88 */ 302bfe3f2eSlogwang void *r28; /* 96 */ 312bfe3f2eSlogwang 322bfe3f2eSlogwang /* 332bfe3f2eSlogwang * Callee Saved SIMD Registers. Only the bottom 64-bits 342bfe3f2eSlogwang * of these registers needs to be saved. 352bfe3f2eSlogwang */ 362bfe3f2eSlogwang void *v8; /* 104 */ 372bfe3f2eSlogwang void *v9; /* 112 */ 382bfe3f2eSlogwang void *v10; /* 120 */ 392bfe3f2eSlogwang void *v11; /* 128 */ 402bfe3f2eSlogwang void *v12; /* 136 */ 412bfe3f2eSlogwang void *v13; /* 144 */ 422bfe3f2eSlogwang void *v14; /* 152 */ 432bfe3f2eSlogwang void *v15; /* 160 */ 442bfe3f2eSlogwang }; 452bfe3f2eSlogwang 462bfe3f2eSlogwang 472bfe3f2eSlogwang void 482bfe3f2eSlogwang ctx_switch(struct ctx *new_ctx, struct ctx *curr_ctx); 492bfe3f2eSlogwang 502bfe3f2eSlogwang 512bfe3f2eSlogwang #ifdef __cplusplus 522bfe3f2eSlogwang } 532bfe3f2eSlogwang #endif 542bfe3f2eSlogwang 552bfe3f2eSlogwang #endif /* RTE_CTX_H_ */ 56