rv_config.h 3.7 KB
Newer Older
X
xiaoxiaohuixxh 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
/*
 * Copyright (c) 2006-2021, JuiceVm Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021/04/22     Juice        the first version
 */


#ifndef __RV_CONFIG_H__
#define __RV_CONFIG_H__

#define RV64I_SUPPORT_ENBALE
#define RV64_MMU_ENBALE            1

#define RV_ENDLESS_LOOP_CHECK_ENBALE            1
#if defined(RV_ENDLESS_LOOP_CHECK_ENBALE) && RV_ENDLESS_LOOP_CHECK_ENBALE == 1
    #define RV_ENDLESS_LOOP_CHECK_BUF_SIZE          (30)
    #define RV_ENDLESS_LOOP_CHECK_EXIT_CNT          (3)
    #define RV_ENDLESS_LOOP_CHECK_MD5_HASH          1
#endif

// #define RISCV_ANGEL_ONLY
#define Machine_Mode_SUPPORT
#define Supervisor_Mode_SUPPORT
// #define User_Mode_SUPPORT
// #define Hypervisor_Mode_SUPPORT

#define ATOMIC_Module_SUPPORT

#define RV_CPU_CSR_DEF_Vendor_ID    0
#define RV_CPU_CSR_DEF_March_ID     0
#define RV_CPU_CSR_DEF_Mimp_ID      0
#define RV_CPU_CSR_DEF_Mhart_ID     0

#define JUICE_VM_LOG_MAX_NUM        (600)

#define JUICE_VM_INC_CHANGELOG      0

#define RAM_SIZE_KB                 (1024)
#define RAM_SIZE_MB                 (1024*RAM_SIZE_KB)

#define RV_CPU_SIM_RAM_START_ADDR   (0x80000000)
#define RV_CPU_SIM_RAM_SIZE         (300 * RAM_SIZE_MB)

#define RV_CPU_SIM_CAUSETABLE_MAX_NUM    100//MXLEN-1 bit

#define RV_CPU_SIM_PERDEV_NUM       50
#define rv_peripheral_device_add_check_dev    1

// | MXLEN-1          MXLEN-2 | MXLEN-3       26| 25                     0 |
// |      MXL[1:0](WARL)      |       WLRL      | Extensions[25:0] (WARL)  |
// |     2                    |     MXLEN-28    |           26             |
//                  Figure 3.1: Machine ISA register (misa).



// Bit | Character | Description
// 0   |    A      |   Atomic extension
// 1   |    B      |   Tentatively reserved for Bit-Manipulation extension
// 2   |    C      |   Compressed extension
// 3   |    D      |   Double-precision floating-point extension
// 4   |    E      |   RV32E base ISA
// 5   |    F      |   Single-precision floating-point extension
// 6   |    G      |   Reserved
// 7   |    H      |   Hypervisor extension
// 8   |    I      |   RV32I/64I/128I base ISA
// 9   |    J      |   Tentatively reserved for Dynamically Translated Languages extension
// 10  |    K      |   Reserved
// 11  |    L      |   Tentatively reserved for Decimal Floating-Point extension
// 12  |    M      |   Integer Multiply/Divide extension
// 13  |    N      |   User-level interrupts supported
// 14  |    O      |   Reserved
// 15  |    P      |   Tentatively reserved for Packed-SIMD extension
// 16  |    Q      |   Quad-precision floating-point extension
// 17  |    R      |   Reserved
// 18  |    S      |   Supervisor mode implemented
// 19  |    T      |   Tentatively reserved for Transactional Memory extension
// 20  |    U      |   User mode implemented
// 21  |    V      |   Tentatively reserved for Vector extension
// 22  |    W      |   Reserved
// 23  |    X      |   Non-standard extensions present
// 24  |    Y      |   Reserved
// 25  |    Z      |   Reserved
#define RV_MISA_ATOMIC_EXT         (1<<0)
#define RV_MISA_INTEGER_EXT        (1<<8)
#define RV_MISA_UMODE_INT_EXT      (1<<13)
#define RV_MISA_SMODE_IMP_EXT      (1<<18)
#define RV_MISA_UMODE_IMP_EXT      (1<<20)

// | MXL |  XLEN  |
// | 1   |   32   |
// | 2   |   64   |
// | 3   |   128  |
#define RV_MISA_XLEN_32            (1<<(32-2))
#define RV_MISA_XLEN_64            (uint64_t)((uint64_t)(2)<<(64-2))
// #define RV_MISA_XLEN_128           ((uint128_t)(3)<<(128-2))



#define RV_MISA_CSR_REGISTER       ((uint64_t)(RV_MISA_XLEN_64 | RV_MISA_ATOMIC_EXT | RV_MISA_INTEGER_EXT /*| RV_MISA_UMODE_INT_EXT*/ | RV_MISA_SMODE_IMP_EXT /*| RV_MISA_UMODE_IMP_EXT*/))


#endif // __RV_CONFIG_H__