Ignore:
Timestamp:
Jun 26, 2019, 11:42:37 AM (5 years ago)
Author:
alain
Message:

This version is a major evolution: The physical memory allocators,
defined in the kmem.c, ppm.c, and kcm.c files have been modified
to support remote accesses. The RPCs that were previously user
to allocate physical memory in a remote cluster have been removed.
This has been done to cure a dead-lock in case of concurrent page-faults.

This version 2.2 has been tested on a (4 clusters / 2 cores per cluster)
TSAR architecture, for both the "sort" and the "fft" applications.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/hal/tsar_mips32/core/hal_exception.c

    r632 r635  
    189189    uint32_t         excp_code;
    190190
    191     // check thread type
    192    if( CURRENT_THREAD->type != THREAD_USER )
    193     {
    194         printk("\n[PANIC] in %s : illegal thread type %s\n",
    195         __FUNCTION__, thread_type_str(CURRENT_THREAD->type) );
    196 
    197         return EXCP_KERNEL_PANIC;
    198     }
    199 
    200191    // get faulty thread process 
    201192    process = this->process;
     
    447438            else                                                // undefined coprocessor
    448439            {
    449                 printk("\n[USER_ERROR] in %s for thread[%x,%x]\n"
     440                printk("\n[USER_ERROR] in %s for thread[%x,%x] / cycle %d\n"
    450441                "   undefined coprocessor / epc %x\n",
    451                 __FUNCTION__, this->process->pid, this->trdid, excPC );
     442                __FUNCTION__, this->process->pid, this->trdid,
     443                (uint32_t)hal_get_cycles() , excPC );
    452444
    453445                        error = EXCP_USER_ERROR;
     
    457449        case XCODE_OVR:    // Arithmetic Overflow : user fatal error
    458450        {
    459             printk("\n[USER_ERROR] in %s for thread[%x,%x]\n"
     451            printk("\n[USER_ERROR] in %s for thread[%x,%x] / cycle %d\n"
    460452            "   arithmetic overflow / epc %x\n",
    461             __FUNCTION__, this->process->pid, this->trdid, excPC );
     453            __FUNCTION__, this->process->pid, this->trdid,
     454            (uint32_t)hal_get_cycles() , excPC );
    462455
    463456                    error = EXCP_USER_ERROR;
     
    466459        case XCODE_RI:     // Reserved Instruction : user fatal error
    467460        {
    468             printk("\n[USER_ERROR] in %s for thread[%x,%x]\n"
     461            printk("\n[USER_ERROR] in %s for thread[%x,%x] / cycle %d\n"
    469462            "   reserved instruction / epc %x\n",
    470             __FUNCTION__, this->process->pid, this->trdid, excPC );
     463            __FUNCTION__, this->process->pid, this->trdid,
     464            (uint32_t)hal_get_cycles() , excPC );
    471465
    472466                    error = EXCP_USER_ERROR;
     
    475469        case XCODE_ADEL:   // user fatal error
    476470        {
    477             printk("\n[USER_ERROR] in %s for thread[%x,%x]\n"
     471            printk("\n[USER_ERROR] in %s for thread[%x,%x] / cycle %d\n"
    478472            "   illegal data load address / epc %x / bad_address %x\n",
    479             __FUNCTION__, this->process->pid, this->trdid, excPC, hal_get_bad_vaddr() );
     473            __FUNCTION__, this->process->pid, this->trdid,
     474            (uint32_t)hal_get_cycles(), excPC, hal_get_bad_vaddr() );
    480475
    481476                    error = EXCP_USER_ERROR;
     
    484479        case XCODE_ADES:   //   user fatal error
    485480        {
    486             printk("\n[USER_ERROR] in %s for thread[%x,%x]\n"
     481            printk("\n[USER_ERROR] in %s for thread[%x,%x] / cycle %d\n"
    487482            "   illegal data store address / epc %x / bad_address %x\n",
    488             __FUNCTION__, this->process->pid, this->trdid, excPC, hal_get_bad_vaddr() );
     483            __FUNCTION__, this->process->pid, this->trdid,
     484            (uint32_t)hal_get_cycles(), excPC, hal_get_bad_vaddr() );
    489485
    490486                    error = EXCP_USER_ERROR;
Note: See TracChangeset for help on using the changeset viewer.