Changeset 557


Ignore:
Timestamp:
Sep 21, 2018, 10:26:00 PM (6 years ago)
Author:
nicolas.van.phan@…
Message:

Add cluster_info[][] array in cluster descriptor

Location:
trunk
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/boot/tsar_mips32/Makefile

    r547 r557  
    3939                -I$(HAL_ARCH)/core   \
    4040                -I../.. \
    41                 -I$(KERNEL)
     41                -I$(KERNEL) \
     42                -I$(KERNEL)/kern
    4243
    4344# Rule to generate boot.elf, kernel.elf, ksh.elf, sort.elf and update virtual disk.
  • trunk/boot/tsar_mips32/boot.c

    r556 r557  
    7878#include <boot_info.h>
    7979
     80#include <cluster_info.h>
     81
    8082#include <boot_utils.h>
    8183#include <boot_fat32.h>
     
    140142        case DEV_TYPE_TIM_SCL: return "TIM_SCL";
    141143        case DEV_TYPE_TXT_TTY: return "TXT_TTY";
     144        case DEV_TYPE_TXT_MTY: return "TXT_MTY";
    142145        case DEV_TYPE_ICU_XCU: return "ICU_XCU";
    143146        case DEV_TYPE_PIC_TSR: return "PIC_TSR";
     
    415418    boot_info->kentry_size = seg_kentry_size;
    416419
     420    /* Initialize all clusters as empty for now */
     421    int x, y;
     422    for ( x = 0; x < CONFIG_MAX_CLUSTERS_X; x++)
     423    {
     424        for ( x = 0; x < CONFIG_MAX_CLUSTERS_X; x++)
     425        {
     426            boot_info->cluster_info[x][y] = 0x0;
     427        }
     428    }
     429
    417430    // loop on arch_info clusters to get relevant pointers
    418431    for (cluster =  cluster_base;
     
    420433         cluster++)
    421434    {
     435        int x = cluster->cxy >> Y_WIDTH;
     436        int y = cluster->cxy & ((1 << Y_WIDTH) - 1);
     437
    422438        if( cluster->cxy  == cxy )            my_cluster = cluster;
    423         if( cluster->cxy  == header->io_cxy ) io_cluster = cluster;
     439        if( cluster->cxy  == header->io_cxy ) {
     440            io_cluster = cluster;
     441            boot_info->cluster_info[x][y] |= CINFO_IS_IO;
     442        }
     443        if ( cluster->cores > 0 ) {
     444            boot_info->cluster_info[x][y] |= CINFO_ACTIVE;
     445        }
    424446    }
    425447
  • trunk/kernel/Makefile

    r543 r557  
    8989              build/kern/dqdt.o            \
    9090              build/kern/do_syscall.o      \
    91               build/kern/rpc.o
     91              build/kern/rpc.o             \
     92              build/kern/cluster_info.o
    9293
    9394DEV_OBJS    = build/devices/dev_txt.o      \
  • trunk/kernel/kern/cluster.c

    r530 r557  
    7575        cluster->io_cxy          = info->io_cxy;
    7676
     77    // initialize the cluster_info[][] array
     78    int x;
     79    int y;
     80    for (x = 0; x < CONFIG_MAX_CLUSTERS_X; x++) {
     81        for (y = 0; y < CONFIG_MAX_CLUSTERS_Y;y++) {
     82            cluster->cluster_info[x][y] = info->cluster_info[x][y];
     83        }
     84    }
    7785    // initialize external peripherals channels
    7886    for( i = 0 ; i < info->ext_dev_nr ; i++ )
  • trunk/kernel/kern/cluster.h

    r530 r557  
    107107    uint32_t        x_max;             // [FIXME]
    108108    uint32_t        y_max;             // [FIXME]
     109    uint32_t        cluster_info[CONFIG_MAX_CLUSTERS_X][CONFIG_MAX_CLUSTERS_Y];
    109110        cxy_t           io_cxy;            /*! io cluster identifier                          */
    110111    uint32_t        dqdt_root_level;   /*! index of root node in dqdt_tbl[]               */
  • trunk/kernel/kernel_config.h

    r544 r557  
    192192
    193193#define CONFIG_KERNEL_IDENTITY_MAP          true       // True for 32 bits cores             
    194 #define CONFIG_MAX_CLUSTERS                 256        // max number of clusters
     194#define CONFIG_MAX_CLUSTERS_X               16         // max number of cluster columns
     195#define CONFIG_MAX_CLUSTERS_Y               16         // max number of cluster rows
     196#define CONFIG_MAX_CLUSTERS                 (CONFIG_MAX_CLUSTERS_X * CONFIG_MAX_CLUSTERS_Y)
    195197#define CONFIG_MAX_LOCAL_CORES              4          // max number of cores per cluster
    196198#define CONFIG_MAX_INT_DEV                  4          // max number of internal peripherals
  • trunk/tools/arch_info/boot_info.h

    r556 r557  
    114114    uint32_t      x_max;                         /*! [FIXME] Nb of non-empty cluster in row */
    115115    uint32_t      y_max;                         /*! [FIXME] Nb of non_empty cluster in col */
     116    uint32_t      cluster_info[CONFIG_MAX_CLUSTERS_X][CONFIG_MAX_CLUSTERS_Y];
     117                                                 /*! An array of infos about all clusters   */
    116118        uint32_t      io_cxy;                        /*! IO cluster identifier                  */
    117119
Note: See TracChangeset for help on using the changeset viewer.