Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 3df2907 in mainline


Ignore:
Timestamp:
2012-02-27T12:58:00Z (10 years ago)
Author:
Maurizio Lombardi <m.lombardi85@…>
Branches:
lfn, master
Children:
31718d1
Parents:
09c954b (diff), b64fbc9 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes

Files:
10 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/ia64/src/pal_asm.S

    r09c954b r3df2907  
    3232
    3333pal_static_call:
    34         alloc loc0 = ar.pfs, 7, 5, 0, 0
     34        alloc loc0 = ar.pfs, 7, 6, 0, 0
     35
     36        mov loc1 = psr ;;
     37        mov psr.l = r0 ;;
     38        srlz.i
     39        srlz.d
    3540       
    36         mov loc1 = gp
    37         mov loc2 = rp
     41        mov loc2 = gp
     42        mov loc3 = rp
    3843       
    39         addl loc3 = @gprel(pal_proc), gp
    40        
     44        addl loc4 = @gprel(pal_proc), gp
     45
    4146        mov r28 = in0
    4247        mov r29 = in1
     
    4449        mov r31 = in3 ;;
    4550       
    46         ld8 loc3 = [loc3]
    47         movl loc4 = 0f ;;
     51        ld8 loc4 = [loc4]
     52        movl loc5 = 0f ;;
    4853
    49         mov b6 = loc3
    50         mov rp = loc4 ;;
     54        mov b6 = loc4
     55        mov rp = loc5 ;;
    5156        br.cond.sptk.many b6
    5257
    53580:
     59        mov psr.l = loc1 ;;
     60        srlz.i
     61        srlz.d
     62
    5463        cmp.ne p7,p0 = 0, in4
    5564        cmp.ne p8,p0 = 0, in5
     
    6069(p9)    st8 [in6] = r11
    6170       
    62         mov gp = loc1
    63         mov rp = loc2 ;;
     71        mov gp = loc2
     72        mov rp = loc3 ;;
    6473       
    6574        mov ar.pfs = loc0
  • boot/arch/ia64/src/sal_asm.S

    r09c954b r3df2907  
    2929.explicit
    3030
     31#define STACK_SCRATCH_AREA      16
     32#define STACK_IN8               (0 + STACK_SCRATCH_AREA)
     33#define STACK_IN9               (8 + STACK_SCRATCH_AREA)
     34#define STACK_IN10              (16 + STACK_SCRATCH_AREA)
     35
    3136.global sal_call
    3237
     
    3944#
    4045sal_call:
    41         alloc loc0 = ar.pfs, 11, 5, 8, 0
     46        alloc loc0 = ar.pfs, 8, 8, 8, 0
    4247       
     48        adds sp = -STACK_SCRATCH_AREA, sp
     49
    4350        mov loc1 = gp
    4451        mov loc2 = rp
     
    5764       
    5865        ld8 loc3 = [loc3]
    59         ld8 gp = [loc4] ;;
     66        ld8 gp = [loc4]
     67
     68        adds r14 = STACK_IN8 + STACK_SCRATCH_AREA, sp
     69        adds r15 = STACK_IN9 + STACK_SCRATCH_AREA, sp
     70        adds r16 = STACK_IN10 + STACK_SCRATCH_AREA, sp ;;
     71
     72        ld8 loc5 = [r14]
     73        ld8 loc6 = [r15]
     74        ld8 loc7 = [r16]
    6075       
    6176        mov b6 = loc3 ;;
    6277        br.call.sptk.many rp = b6
    6378       
    64         cmp.ne p7,p0 = 0, in8
    65         cmp.ne p8,p0 = 0, in9
    66         cmp.ne p9,p0 = 0, in10 ;;
     79        cmp.ne p7,p0 = 0, loc5
     80        cmp.ne p8,p0 = 0, loc6
     81        cmp.ne p9,p0 = 0, loc7 ;;
    6782       
    68 (p7)    st8 [in8] = r9
    69 (p8)    st8 [in9] = r10
    70 (p9)    st8 [in10] = r11
     83(p7)    st8 [loc5] = r9
     84(p8)    st8 [loc6] = r10
     85(p9)    st8 [loc7] = r11
    7186       
    7287        mov gp = loc1
    73         mov rp = loc2 ;;
     88        mov rp = loc2
     89
     90        adds sp = STACK_SCRATCH_AREA, sp ;;
    7491       
    7592        mov ar.pfs = loc0
    7693        br.ret.sptk.many rp
     94
  • kernel/arch/ia64/include/asm.h

    r09c954b r3df2907  
    6161        asm volatile (
    6262                "mf\n"
     63                "mf.a\n"
    6364                ::: "memory"
    6465        );
     
    7475        asm volatile (
    7576                "mf\n"
     77                "mf.a\n"
    7678                ::: "memory"
    7779        );
     
    8789        asm volatile (
    8890                "mf\n"
     91                "mf.a\n"
    8992                ::: "memory"
    9093        );
     
    104107        else
    105108                v = *port;
     109
     110        asm volatile (
     111                "mf.a\n"
     112                ::: "memory"
     113        );
    106114       
    107115        return v;
     
    121129        else
    122130                v = *port;
     131
     132        asm volatile (
     133                "mf.a\n"
     134                ::: "memory"
     135        );
    123136       
    124137        return v;
     
    138151        else
    139152                v = *port;
     153
     154        asm volatile (
     155                "mf.a\n"
     156                ::: "memory"
     157        );
    140158
    141159        return v;
  • kernel/arch/ia64/src/ia64.c

    r09c954b r3df2907  
    144144#endif
    145145#ifdef MACHINE_i460GX
    146         platform = "i460GX";
     146        platform = "pc";
    147147#endif
    148148        sysinfo_set_item_data("platform", NULL, (void *) platform,
  • kernel/generic/src/ipc/irq.c

    r09c954b r3df2907  
    358358        ASSERT(irq->notif_cfg.answerbox == box);
    359359       
    360         /* Free up the pseudo code and associated structures. */
    361         code_free(irq->notif_cfg.code);
    362        
    363360        /* Remove the IRQ from the answerbox's list. */
    364361        list_remove(&irq->notif_cfg.link);
     
    378375        irq_spinlock_unlock(&box->irq_lock, false);
    379376        irq_spinlock_unlock(&irq_uspace_hash_table_lock, true);
     377       
     378        /* Free up the pseudo code and associated structures. */
     379        code_free(irq->notif_cfg.code);
    380380       
    381381        /* Free up the IRQ structure. */
     
    425425                list_remove(&irq->notif_cfg.link);
    426426               
    427                 /* Free up the pseudo code and associated structures. */
    428                 code_free(irq->notif_cfg.code);
    429                
    430427                /*
    431428                 * We need to drop the IRQ lock now because hash_table_remove()
     
    439436                /* Remove from the hash table. */
    440437                hash_table_remove(&irq_uspace_hash_table, key, 2);
    441                
     438
     439                /*
     440                 * Release both locks so that we can free the pseudo code.
     441                 */
     442                irq_spinlock_unlock(&box->irq_lock, false);
     443                irq_spinlock_unlock(&irq_uspace_hash_table_lock, true);
     444
     445                code_free(irq->notif_cfg.code);
    442446                free(irq);
     447               
     448                /* Reacquire both locks before taking another round. */
     449                irq_spinlock_lock(&irq_uspace_hash_table_lock, true);
     450                irq_spinlock_lock(&box->irq_lock, false);
    443451        }
    444452       
  • kernel/generic/src/mm/page.c

    r09c954b r3df2907  
    168168int page_find_mapping(uintptr_t virt, void **phys)
    169169{
    170         mutex_lock(&AS->lock);
     170        page_table_lock(AS, true);
    171171       
    172172        pte_t *pte = page_mapping_find(AS, virt, false);
    173173        if ((!PTE_VALID(pte)) || (!PTE_PRESENT(pte))) {
    174                 mutex_unlock(&AS->lock);
     174                page_table_unlock(AS, true);
    175175                return ENOENT;
    176176        }
     
    179179            (virt - ALIGN_DOWN(virt, PAGE_SIZE));
    180180       
    181         mutex_unlock(&AS->lock);
     181        page_table_unlock(AS, true);
    182182       
    183183        return EOK;
  • uspace/drv/bus/usb/uhci/transfer_list.c

    r09c954b r3df2907  
    110110        assert(instance);
    111111        assert(uhci_batch);
    112         usb_log_debug2("Queue %s: Adding batch(%p).\n", instance->name,
    113             uhci_batch->usb_batch);
     112        usb_log_debug2("Batch %p adding to queue %s.\n",
     113            uhci_batch->usb_batch, instance->name);
    114114
    115115        fibril_mutex_lock(&instance->guard);
     
    139139        list_append(&uhci_batch->link, &instance->batch_list);
    140140
    141         usb_log_debug2("Batch %p " USB_TRANSFER_BATCH_FMT " scheduled in queue %s.\n",
    142             uhci_batch, USB_TRANSFER_BATCH_ARGS(*uhci_batch->usb_batch),
    143             instance->name);
     141        usb_log_debug2("Batch %p " USB_TRANSFER_BATCH_FMT
     142            " scheduled in queue %s.\n", uhci_batch->usb_batch,
     143            USB_TRANSFER_BATCH_ARGS(*uhci_batch->usb_batch), instance->name);
    144144        fibril_mutex_unlock(&instance->guard);
    145145}
     
    205205        assert(fibril_mutex_is_locked(&instance->guard));
    206206
    207         usb_log_debug2("Queue %s: removing batch(%p).\n",
    208             instance->name, uhci_batch->usb_batch);
     207        usb_log_debug2("Batch %p removing from queue %s.\n",
     208            uhci_batch->usb_batch, instance->name);
    209209
    210210        /* Assume I'm the first */
     
    228228        list_remove(&uhci_batch->link);
    229229        usb_log_debug2("Batch %p " USB_TRANSFER_BATCH_FMT " removed (%s) "
    230             "from %s, next: %x.\n",
    231             uhci_batch, USB_TRANSFER_BATCH_ARGS(*uhci_batch->usb_batch),
     230            "from %s, next: %x.\n", uhci_batch->usb_batch,
     231            USB_TRANSFER_BATCH_ARGS(*uhci_batch->usb_batch),
    232232            qpos, instance->name, uhci_batch->qh->next);
    233233}
  • uspace/drv/bus/usb/uhci/uhci_batch.c

    r09c954b r3df2907  
    174174                        assert(uhci_batch->usb_batch->ep != NULL);
    175175
    176                         usb_log_debug("Batch(%p) found error TD(%zu):%"
     176                        usb_log_debug("Batch %p found error TD(%zu->%p):%"
    177177                            PRIx32 ".\n", uhci_batch->usb_batch, i,
    178                             uhci_batch->tds[i].status);
     178                            &uhci_batch->tds[i], uhci_batch->tds[i].status);
    179179                        td_print_status(&uhci_batch->tds[i]);
    180180
  • uspace/drv/infrastructure/root/root.c

    r09c954b r3df2907  
    158158        if (asprintf(&match_id, PLATFORM_FUN_MATCH_ID_FMT, platform) == -1) {
    159159                ddf_msg(LVL_ERROR, "Memory allocation failed.");
    160                 return ENOMEM;
    161         }
     160                free(platform);
     161                return ENOMEM;
     162        }
     163
     164        free(platform);
    162165
    163166        /* Add function. */
     
    169172        if (fun == NULL) {
    170173                ddf_msg(LVL_ERROR, "Error creating function %s", name);
     174                free(match_id);
    171175                return ENOMEM;
    172176        }
     
    176180                ddf_msg(LVL_ERROR, "Failed adding match IDs to function %s",
    177181                    name);
     182                free(match_id);
    178183                ddf_fun_destroy(fun);
    179184                return rc;
     
    208213         * vital for the system.
    209214         */
    210         add_virtual_root_fun(dev);
     215        (void) add_virtual_root_fun(dev);
    211216
    212217        /* Register root device's children. */
  • uspace/lib/c/arch/ia64/include/ddi.h

    r09c954b r3df2907  
    6262
    6363        asm volatile ("mf\n" ::: "memory");
     64        asm volatile ("mf.a\n" ::: "memory");
    6465}
    6566
     
    7677
    7778        asm volatile ("mf\n" ::: "memory");
     79        asm volatile ("mf.a\n" ::: "memory");
    7880}
    7981
     
    9092
    9193        asm volatile ("mf\n" ::: "memory");
     94        asm volatile ("mf.a\n" ::: "memory");
    9295}
    9396
     
    106109                v = *port;
    107110        }
     111
     112        asm volatile ("mf.a\n" ::: "memory");
    108113
    109114        return v;
     
    125130        }
    126131
     132        asm volatile ("mf.a\n" ::: "memory");
     133
    127134        return v;
    128135}
     
    134141        asm volatile ("mf\n" ::: "memory");
    135142
    136         if (port < (ioport32_t *) port) {
     143        if (port < (ioport32_t *) IO_SPACE_BOUNDARY) {
    137144                uintptr_t prt = (uintptr_t) port;
    138145
     
    143150        }
    144151
     152        asm volatile ("mf.a\n" ::: "memory");
     153
    145154        return v;
    146155}
Note: See TracChangeset for help on using the changeset viewer.