Ignore:
Timestamp:
Aug 14, 2012, 8:14:55 PM (12 years ago)
Author:
alain
Message:

mproving support for multi-clusters architectures (CLUSTER_SIZE & CLUSTER_IO_ID parameters)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/boot/boot_init.c

    r203 r204  
    286286void boot_puts(const char *buffer)
    287287{
    288     unsigned int* tty_address = (unsigned int*)&seg_tty_base;
     288    unsigned int* tty_address = (unsigned int*)( (unsigned)&seg_tty_base +
     289                                     (CLUSTER_IO_ID * (unsigned)CLUSTER_SIZE) );
    289290    unsigned int n;
    290291
     
    297298}
    298299////////////////////////////////////////////////////////////////////////////
    299 // boot_putw()
     300// boot_putx()
    300301// (it uses TTY0)
    301302////////////////////////////////////////////////////////////////////////////
    302 void boot_putw(unsigned int val)
     303void boot_putx(unsigned int val)
    303304{
    304305    static const char   HexaTab[] = "0123456789ABCDEF";
     
    316317    }
    317318    boot_puts(buf);
     319}
     320////////////////////////////////////////////////////////////////////////////
     321// boot_putd()
     322// (it uses TTY0)
     323////////////////////////////////////////////////////////////////////////////
     324void boot_putd(unsigned int val)
     325{
     326    static const char   DecTab[] = "0123456789";
     327    char                buf[11];
     328    unsigned int        i;
     329    unsigned int        first;
     330
     331    buf[10] = 0;
     332
     333    for ( i = 0 ; i < 10 ; i++ )
     334    {
     335        if ((val != 0) || (i == 0))
     336        {
     337            buf[9-i] = DecTab[val % 10];
     338            first    = 9-i;
     339        }
     340        else
     341        {
     342            break;
     343        }
     344        val /= 10;
     345    }
     346    boot_puts( &buf[first] );
    318347}
    319348
     
    495524    {
    496525        boot_puts("Unfound page table for vspace ");
    497         boot_putw(vspace_id);
     526        boot_putd(vspace_id);
    498527        boot_puts("\n");
    499528        boot_exit();
     
    530559    if ( ( *pt_flags & PTE_V) != 0 )    // page already mapped
    531560    {
    532         boot_puts("\n[BOOT ERROR] in boot_add_pte() function\n");
    533         boot_puts("page already mapped\n");
     561        boot_puts("\n[BOOT ERROR] double mapping in vspace ");
     562        boot_putd( vspace_id );
     563        boot_puts(" for vpn = ");
     564        boot_putx( vpn );
     565        boot_puts("\n");
    534566        boot_exit();
    535567    }
     
    579611boot_puts( vseg[vseg_id].name );
    580612boot_puts(" : flags = ");
    581 boot_putw( flags );
     613boot_putx( flags );
    582614boot_puts(" / npages = ");
    583 boot_putw( npages );
     615boot_putd( npages );
    584616boot_puts(" / pbase = ");
    585 boot_putw( vseg[vseg_id].pbase );
     617boot_putx( vseg[vseg_id].pbase );
    586618boot_puts("\n");
    587619#endif       
     
    615647boot_puts( vseg[vseg_id].name );
    616648boot_puts(" / flags = ");
    617 boot_putw( flags );
     649boot_putx( flags );
    618650boot_puts(" / npages = ");
    619 boot_putw( npages );
     651boot_putd( npages );
    620652boot_puts(" / pbase = ");
    621 boot_putw( vseg[vseg_id].pbase );
     653boot_putx( vseg[vseg_id].pbase );
    622654boot_puts("\n");
    623655#endif       
     
    720752                boot_puts( "\n[BOOT ERROR] in boot_vseg_map() function, " );
    721753                boot_puts("PTAB too small, minumum size is: ");
    722                 boot_putw( PT1_SIZE + PT2_SIZE);
     754                boot_putx( PT1_SIZE + PT2_SIZE);
    723755                boot_exit();
    724756            }
     
    750782        boot_puts("\n");
    751783        boot_puts("vseg pbase = ");
    752         boot_putw( vseg->pbase );
     784        boot_putx( vseg->pbase );
    753785        boot_puts("\n");
    754786        boot_puts("vseg length = ");
    755         boot_putw( vseg->length );
     787        boot_putx( vseg->length );
    756788        boot_puts("\n");
    757789        boot_puts("pseg pbase = ");
    758         boot_putw( pseg->base );
     790        boot_putx( pseg->base );
    759791        boot_puts("\n");
    760792        boot_puts("pseg length = ");
    761         boot_putw( pseg->length );
     793        boot_putx( pseg->length );
    762794        boot_puts("\n");
    763795        boot_exit();
     
    771803boot_puts( vseg->name );
    772804boot_puts(" : len = ");
    773 boot_putw( vseg->length );
     805boot_putx( vseg->length );
    774806boot_puts(" / vbase = ");
    775 boot_putw( vseg->vbase );
     807boot_putx( vseg->vbase );
    776808boot_puts(" / pbase = ");
    777 boot_putw( vseg->pbase );
     809boot_putx( vseg->pbase );
    778810boot_puts("\n");
    779811#endif 
     
    795827    {
    796828        boot_puts("\n[BOOT ERROR] Illegal mapping signature: ");
    797         boot_putw(header->signature);
     829        boot_putx(header->signature);
    798830        boot_puts("\n");
    799831        boot_exit();
     
    805837        boot_puts("\n[BOOT ERROR] Incoherent NB_CLUSTERS");
    806838        boot_puts("\n             - In giet_config,  value = ");
    807         boot_putw ( NB_CLUSTERS );
     839        boot_putd ( NB_CLUSTERS );
    808840        boot_puts("\n             - In mapping_info, value = ");
    809         boot_putw ( header->clusters );
     841        boot_putd ( header->clusters );
    810842        boot_puts("\n");
    811843        boot_exit();
     
    823855    unsigned int periph_id;
    824856    unsigned int cluster_id;
    825     unsigned int channels;
    826857    unsigned int tty_found = 0;
    827858    unsigned int nic_found = 0;
     
    832863        {
    833864            boot_puts("\n[BOOT ERROR] too much processors in cluster ");
    834             boot_putw( cluster_id );
     865            boot_putd( cluster_id );
    835866            boot_puts(" : procs = ");
    836             boot_putw ( cluster[cluster_id].procs );
     867            boot_putd ( cluster[cluster_id].procs );
    837868            boot_puts("\n");
    838869            boot_exit();
     
    854885                {
    855886                    boot_puts("\n[BOOT ERROR] Wrong NB_TTYS in cluster ");
    856                     boot_putw( cluster_id );
     887                    boot_putd( cluster_id );
    857888                    boot_puts(" : ttys = ");
    858                     boot_putw ( periph[periph_id].channels );
     889                    boot_putd ( periph[periph_id].channels );
    859890                    boot_puts("\n");
    860891                    boot_exit();
     
    873904                {
    874905                    boot_puts("\n[BOOT ERROR] Wrong NB_NICS in cluster ");
    875                     boot_putw( cluster_id );
     906                    boot_putd( cluster_id );
    876907                    boot_puts(" : nics = ");
    877                     boot_putw ( periph[periph_id].channels );
     908                    boot_putd ( periph[periph_id].channels );
    878909                    boot_puts("\n");
    879910                    boot_exit();
     
    887918                {
    888919                    boot_puts("\n[BOOT ERROR] Too much user timers in cluster ");
    889                     boot_putw( cluster_id );
     920                    boot_putd( cluster_id );
    890921                    boot_puts(" : timers = ");
    891                     boot_putw ( periph[periph_id].channels );
     922                    boot_putd ( periph[periph_id].channels );
    892923                    boot_puts("\n");
    893924                    boot_exit();
     
    900931                {
    901932                    boot_puts("\n[BOOT ERROR] Too much DMA channels in cluster ");
    902                     boot_putw( cluster_id );
     933                    boot_putd( cluster_id );
    903934                    boot_puts(" : channels = ");
    904                     boot_putw ( periph[periph_id].channels );
     935                    boot_putd ( periph[periph_id].channels );
    905936                    boot_puts("\n");
    906937                    boot_exit();
     
    937968        {
    938969            boot_puts("\n[BOOT ERROR] The number of processors in cluster ");
    939             boot_putw( cluster_id );
     970            boot_putd( cluster_id );
    940971            boot_puts(" is larger than NB_PROCS_MAX \n");
    941972            boot_exit();
     
    959990#if BOOT_DEBUG_PT
    960991boot_puts("cluster ");
    961 boot_putw(cluster_id);
     992boot_putd(cluster_id);
    962993boot_puts(" / pseg ");
    963994boot_puts(pseg[pseg_id].name);
    964995boot_puts(" : next_base = ");
    965 boot_putw(pseg[pseg_id].next_base);
     996boot_putx(pseg[pseg_id].next_base);
    966997boot_puts("\n");
    967998#endif
     
    10281059#if BOOT_DEBUG_PT
    10291060boot_puts("\n>>> page table physical address = ");
    1030 boot_putw((unsigned int)boot_ptabs_paddr[vspace_id]);
     1061boot_putx((unsigned int)boot_ptabs_paddr[vspace_id]);
    10311062boot_puts(", page table number of PT2 = ");
    1032 boot_putw((unsigned int)boot_max_pt2[vspace_id]);
     1063boot_putd((unsigned int)boot_max_pt2[vspace_id]);
    10331064boot_puts("\n");
    10341065#endif
     
    10821113boot_puts( vobj[vobj_id].name);
    10831114boot_puts(" / depth = ");
    1084 boot_putw( mwmr->depth );
     1115boot_putd( mwmr->depth );
    10851116boot_puts(" / width = ");
    1086 boot_putw( mwmr->width );
     1117boot_putd( mwmr->width );
    10871118boot_puts("\n");
    10881119#endif
     
    10951126boot_puts( vobj[vobj_id].name);
    10961127boot_puts(" / length = ");
    1097 boot_putw( vobj[vobj_id].length );
     1128boot_putx( vobj[vobj_id].length );
    10981129boot_puts("\n");
    10991130#endif
     
    11061137boot_puts( vobj[vobj_id].name);
    11071138boot_puts(" / length = ");
    1108 boot_putw( vobj[vobj_id].length );
     1139boot_putx( vobj[vobj_id].length );
    11091140boot_puts("\n");
    11101141#endif
     
    11201151boot_puts( vobj[vobj_id].name);
    11211152boot_puts(" / init_value = ");
    1122 boot_putw( barrier->init );
     1153boot_putd( barrier->init );
    11231154boot_puts("\n");
    11241155#endif
     
    11421173boot_puts( vobj[vobj_id].name);
    11431174boot_puts(" / length = ");
    1144 boot_putw( vobj[vobj_id].length );
     1175boot_putx( vobj[vobj_id].length );
    11451176boot_puts("\n");
    11461177#endif
     
    11541185boot_puts( vobj[vobj_id].name);
    11551186boot_puts(" / length = ");
    1156 boot_putw( vobj[vobj_id].length );
     1187boot_putx( vobj[vobj_id].length );
    11571188boot_puts("\n");
    11581189#endif
     
    11731204        {
    11741205            boot_puts("\n[INIT ERROR] Missing PTAB for vspace ");
    1175             boot_putw( vspace_id );
     1206            boot_putd( vspace_id );
    11761207            boot_exit();
    11771208        }
     
    11851216    volatile unsigned int *cbase = (unsigned int*) coproc;
    11861217   
    1187 
    11881218    cbase[MWMR_CONFIG_FIFO_WAY] = way ;
    11891219    cbase[MWMR_CONFIG_FIFO_NO] = no ;
     
    12221252#if BOOT_DEBUG_PERI
    12231253boot_puts("\n[BOOT DEBUG] ****** peripheral initialisation in cluster ");
    1224 boot_putw( cluster_id );
     1254boot_putd( cluster_id );
    12251255boot_puts(" ******\n");
    12261256#endif
     
    12451275#if BOOT_DEBUG_PERI
    12461276boot_puts("- IOC initialised : ");
    1247 boot_putw( channels );
     1277boot_putd( channels );
    12481278boot_puts(" channels\n");
    12491279#endif
     
    12611291#if BOOT_DEBUG_PERI
    12621292boot_puts("- DMA initialised : ");
    1263 boot_putw( channels );
     1293boot_putd( channels );
    12641294boot_puts(" channels\n");
    12651295#endif
     
    12761306#if BOOT_DEBUG_PERI
    12771307boot_puts("- NIC initialised : ");
    1278 boot_putw( channels );
     1308boot_putd( channels );
    12791309boot_puts(" channels\n");
    12801310#endif
     
    12981328#if BOOT_DEBUG_PERI
    12991329boot_puts("- IOB initialised : ");
    1300 boot_putw( channels );
     1330boot_putd( channels );
    13011331boot_puts(" channels\n");
    13021332#endif
     
    13041334
    13051335        } // end for periphs
    1306 /*
     1336
    13071337        for ( coproc_id = cluster[cluster_id].coproc_offset ;
    13081338              coproc_id < cluster[cluster_id].coproc_offset + cluster[cluster_id].coprocs ;
     
    13151345#if BOOT_DEBUG_PERI
    13161346boot_puts("[BOOT] mwmr coproc initialisation of ");
    1317 boot_putw((unsigned int) coproc[coproc_id].name);
     1347boot_putx((unsigned int) coproc[coproc_id].name);
    13181348boot_puts(", nb ports");
    1319 boot_putw((unsigned int)coproc[coproc_id].ports);
     1349boot_putd((unsigned int)coproc[coproc_id].ports);
    13201350boot_puts("\n");
    13211351#endif
     
    13561386            }
    13571387        } // end for coprocs
    1358 */
     1388
    13591389    } // end for clusters
    13601390} // end boot_peripherals_init()
     
    14171447#if BOOT_DEBUG_SCHED
    14181448boot_puts("\n[BOOT DEBUG] Initialise schedulers / IT vector in cluster ");
    1419 boot_putw( cluster_id );
     1449boot_putd( cluster_id );
    14201450boot_puts("\n");
    14211451#endif
     
    14401470        {
    14411471            boot_puts("\n[BOOT ERROR] Missing RAM pseg in cluster ");
    1442             boot_putw( cluster_id );
     1472            boot_putd( cluster_id );
    14431473            boot_puts("\n");
    14441474            boot_exit();
     
    14591489#if BOOT_DEBUG_SCHED
    14601490boot_puts("\nProc ");
    1461 boot_putw( proc_id );
     1491boot_putd( proc_id );
    14621492boot_puts(" : scheduler pbase = ");
    1463 boot_putw( pseg_pbase + (proc_id<<12) );
     1493boot_putx( pseg_pbase + (proc_id<<12) );
    14641494boot_puts("\n");
    14651495#endif
     
    14881518#if BOOT_DEBUG_SCHED
    14891519boot_puts("- IRQ : icu = ");
    1490 boot_putw( icu_id );
     1520boot_putd( icu_id );
    14911521boot_puts(" / type = ");
    1492 boot_putw( type );
     1522boot_putd( type );
    14931523boot_puts(" / isr = ");
    1494 boot_putw( isr_id );
     1524boot_putd( isr_id );
    14951525boot_puts(" / channel = ");
    1496 boot_putw( channel );
     1526boot_putd( channel );
    14971527boot_puts("\n");
    14981528#endif
     
    16271657            {
    16281658                boot_puts("\n[BOOT ERROR] : ");
    1629                 boot_putw( ltid );
     1659                boot_putd( ltid );
    16301660                boot_puts(" tasks allocated to processor ");
    1631                 boot_putw( gpid );
     1661                boot_putd( gpid );
    16321662                boot_puts(" / max is 15\n");
    16331663                boot_exit();
     
    16591689boot_puts( task[task_id].name );
    16601690boot_puts(" allocated to processor ");
    1661 boot_putw( gpid );
     1691boot_putd( gpid );
    16621692boot_puts("  - ctx[LTID]   = ");
    1663 boot_putw( ltid );
     1693boot_putd( ltid );
    16641694boot_puts("\n");
    16651695
    16661696boot_puts("  - ctx[SR]     = ");
    1667 boot_putw( ctx_sr );
     1697boot_putx( ctx_sr );
    16681698boot_puts("\n");
    16691699
    16701700boot_puts("  - ctx[SR]     = ");
    1671 boot_putw( ctx_sp );
     1701boot_putx( ctx_sp );
    16721702boot_puts("\n");
    16731703
    16741704boot_puts("  - ctx[RA]     = ");
    1675 boot_putw( ctx_ra );
     1705boot_putx( ctx_ra );
    16761706boot_puts("\n");
    16771707
    16781708boot_puts("  - ctx[EPC]    = ");
    1679 boot_putw( ctx_epc );
     1709boot_putx( ctx_epc );
    16801710boot_puts("\n");
    16811711
    16821712boot_puts("  - ctx[PTPR]   = ");
    1683 boot_putw( ctx_ptpr );
     1713boot_putx( ctx_ptpr );
    16841714boot_puts("\n");
    16851715
    16861716boot_puts("  - ctx[TTY]    = ");
    1687 boot_putw( ctx_tty );
     1717boot_putd( ctx_tty );
    16881718boot_puts("\n");
    16891719
    16901720boot_puts("  - ctx[NIC]    = ");
    1691 boot_putw( ctx_nic );
     1721boot_putd( ctx_nic );
    16921722boot_puts("\n");
    16931723
    16941724boot_puts("  - ctx[TIMER]  = ");
    1695 boot_putw( ctx_timer );
     1725boot_putd( ctx_timer );
    16961726boot_puts("\n");
    16971727
    16981728boot_puts("  - ctx[FBDMA]  = ");
    1699 boot_putw( ctx_fbdma );
     1729boot_putd( ctx_fbdma );
    17001730boot_puts("\n");
    17011731
    17021732boot_puts("  - ctx[PTAB]   = ");
    1703 boot_putw( ctx_ptab );
     1733boot_putx( ctx_ptab );
    17041734boot_puts("\n");
    17051735
    17061736boot_puts("  - ctx[VSID]   = ");
    1707 boot_putw( vspace_id );
     1737boot_putd( vspace_id );
    17081738boot_puts("\n");
    17091739
     
    17321762
    17331763    boot_puts("\n[BOOT] Mapping check completed at cycle ");
    1734     boot_putw( boot_proctime() );
     1764    boot_putd( boot_proctime() );
    17351765    boot_puts("\n");
    17361766
     
    17391769
    17401770    boot_puts("\n[BOOT] Pseg allocators initialisation completed at cycle ");
    1741     boot_putw( boot_proctime() );
     1771    boot_putd( boot_proctime() );
    17421772    boot_puts("\n");
    17431773
     
    17461776
    17471777    boot_puts("\n[BOOT] Page Tables initialisation completed at cycle ");
    1748     boot_putw( boot_proctime() );
     1778    boot_putd( boot_proctime() );
    17491779    boot_puts("\n");
    17501780
     
    17531783
    17541784    boot_puts("\n[BOOT] Vobjs initialisation completed at cycle : ");
    1755     boot_putw( boot_proctime() );
     1785    boot_putd( boot_proctime() );
    17561786    boot_puts("\n");
    17571787
     
    17601790
    17611791    boot_puts("\n[BOOT] Peripherals initialisation completed at cycle ");
    1762     boot_putw( boot_proctime() );
     1792    boot_putd( boot_proctime() );
    17631793    boot_puts("\n");
    17641794
     
    17681798
    17691799    boot_puts("\n[BOOT] MMU activation completed at cycle ");
    1770     boot_putw( boot_proctime() );
     1800    boot_putd( boot_proctime() );
    17711801    boot_puts("\n");
    17721802
     
    17751805
    17761806    boot_puts("\n[BOOT] Schedulers initialisation completed at cycle ");
    1777     boot_putw( boot_proctime() );
     1807    boot_putd( boot_proctime() );
    17781808    boot_puts("\n");
    17791809
Note: See TracChangeset for help on using the changeset viewer.