E2K: added initial support for MCST Elbrus 2000

This commit is contained in:
r-a-sattarov
2019-11-23 16:40:53 +03:00
parent b764700527
commit c621de8d2b
3 changed files with 26 additions and 1 deletions

View File

@ -668,6 +668,13 @@ namespace
# elif NV_CPU_AARCH64
ucontext_t * ucp = (ucontext_t *)secret;
return (void *) ucp->uc_mcontext.pc;
# elif NV_CPU_E2K /* MCST Elbrus 2000 */
// e2k has 3 stacks - Procedure Stack (PS), Procedure Chain Stack (PCS) and User Stack (US)
// CR0 and CR1 (Chain Register) are the 128-bit registers of the Procedure Chain Stack (PCS)
// CR's divided into _HI and _LO 64-bit parts (as in x86, for example, AX is divided into AH and AL)
// CR0_HI stores an Instruction Pointer
ucontext_t * ucp = (ucontext_t *)secret;
return (void *) ucp->uc_mcontext.cr0_hi;
# else
# error "Unknown CPU"
# endif

View File

@ -98,6 +98,7 @@
// NV_CPU_PPC
// NV_CPU_ARM
// NV_CPU_ARM_64
// NV_CPU_E2K
#define NV_CPU_STRING POSH_CPU_STRING
@ -112,6 +113,8 @@
# define NV_CPU_ARM 1
#elif defined POSH_CPU_AARCH64
# define NV_CPU_ARM_64 1
#elif defined POSH_CPU_E2K
# define NV_CPU_E2K 1
#else
# error "Unsupported CPU"
#endif