diff options
-rw-r--r-- | sys/compat/ndis/subr_ntoskrnl.c | 11 | ||||
-rw-r--r-- | sys/dev/if_ndis/if_ndis.c | 35 |
2 files changed, 23 insertions, 23 deletions
diff --git a/sys/compat/ndis/subr_ntoskrnl.c b/sys/compat/ndis/subr_ntoskrnl.c index 48658fe..8e19e02 100644 --- a/sys/compat/ndis/subr_ntoskrnl.c +++ b/sys/compat/ndis/subr_ntoskrnl.c @@ -489,8 +489,7 @@ ntoskrnl_push_slist(/*head, entry*/ void) slist_entry *entry; slist_entry *oldhead; - __asm__("movl %%ecx, %%ecx" : "=c" (head)); - __asm__("movl %%edx, %%edx" : "=d" (entry)); + __asm__ __volatile__ ("" : "=c" (head), "=d" (entry)); mtx_lock(&ntoskrnl_interlock); oldhead = head->slh_list.slh_next; @@ -506,7 +505,7 @@ ntoskrnl_pop_slist(/*head*/ void) slist_header *head; slist_entry *first; - __asm__("movl %%ecx, %%ecx" : "=c" (head)); + __asm__ __volatile__ ("" : "=c" (head)); mtx_lock(&ntoskrnl_interlock); first = head->slh_list.slh_next; @@ -524,8 +523,7 @@ ntoskrnl_push_slist_ex(/*head, entry,*/ lock) slist_entry *entry; slist_entry *oldhead; - __asm__("movl %%ecx, %%ecx" : "=c" (head)); - __asm__("movl %%edx, %%edx" : "=d" (entry)); + __asm__ __volatile__ ("" : "=c" (head), "=d" (entry)); mtx_lock((struct mtx *)*lock); oldhead = head->slh_list.slh_next; @@ -542,8 +540,7 @@ ntoskrnl_pop_slist_ex(/*head, lock*/ void) kspin_lock *lock; slist_entry *first; - __asm__("movl %%ecx, %%ecx" : "=c" (head)); - __asm__("movl %%edx, %%edx" : "=d" (lock)); + __asm__ __volatile__ ("" : "=c" (head), "=d" (lock)); mtx_lock((struct mtx *)*lock); first = head->slh_list.slh_next; diff --git a/sys/dev/if_ndis/if_ndis.c b/sys/dev/if_ndis/if_ndis.c index fec6034..be89d35 100644 --- a/sys/dev/if_ndis/if_ndis.c +++ b/sys/dev/if_ndis/if_ndis.c @@ -247,35 +247,36 @@ ndis_attach(dev) } break; case SYS_RES_MEMORY: - if (sc->ndis_res_altmem != NULL) { + if (sc->ndis_res_altmem != NULL && + sc->ndis_res_mem != NULL) { printf ("ndis%d: too many memory " "resources", sc->ndis_unit); error = ENXIO; goto fail; } - if (sc->ndis_res_mem == NULL) { - sc->ndis_mem_rid = rle->rid; - sc->ndis_res_mem = + if (rle->rid == PCIR_BAR(2)) { + sc->ndis_altmem_rid = rle->rid; + sc->ndis_res_altmem = bus_alloc_resource(dev, SYS_RES_MEMORY, - &sc->ndis_mem_rid, + &sc->ndis_altmem_rid, 0, ~0, 1, RF_ACTIVE); - if (sc->ndis_res_mem == NULL) { + if (sc->ndis_res_altmem == NULL) { printf("ndis%d: couldn't map " - "memory\n", unit); + "alt memory\n", unit); error = ENXIO; goto fail; } } else { - sc->ndis_altmem_rid = rle->rid; - sc->ndis_res_altmem = + sc->ndis_mem_rid = rle->rid; + sc->ndis_res_mem = bus_alloc_resource(dev, SYS_RES_MEMORY, - &sc->ndis_altmem_rid, + &sc->ndis_mem_rid, 0, ~0, 1, RF_ACTIVE); - if (sc->ndis_res_altmem == NULL) { + if (sc->ndis_res_mem == NULL) { printf("ndis%d: couldn't map " - "alt memory\n", unit); + "memory\n", unit); error = ENXIO; goto fail; } @@ -841,12 +842,13 @@ ndis_tick(xsc) int error, len; sc = xsc; - NDIS_LOCK(sc); len = sizeof(linkstate); error = ndis_get_info(sc, OID_GEN_MEDIA_CONNECT_STATUS, (void *)&linkstate, &len); + NDIS_LOCK(sc); + if (linkstate == nmc_connected) sc->ndis_link = 1; @@ -944,14 +946,15 @@ ndis_start(ifp) * so we can free it later. */ - (sc->ndis_txarray[sc->ndis_txidx])->np_txidx = sc->ndis_txidx; - (sc->ndis_txarray[sc->ndis_txidx])->np_m0 = m; + p = sc->ndis_txarray[sc->ndis_txidx]; + p->np_txidx = sc->ndis_txidx; + p->np_m0 = m; + p->np_oob.npo_status = NDIS_STATUS_PENDING; /* * Do scatter/gather processing, if driver requested it. */ if (sc->ndis_sc) { - p = sc->ndis_txarray[sc->ndis_txidx]; bus_dmamap_load_mbuf(sc->ndis_ttag, sc->ndis_tmaps[sc->ndis_txidx], m, ndis_map_sclist, &p->np_sclist, BUS_DMA_NOWAIT); |