Deleted Added
full compact
eisaconf.c (16322) eisaconf.c (17971)
1/*
2 * EISA bus probe and attach routines
3 *
4 * Copyright (c) 1995, 1996 Justin T. Gibbs.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 14 unchanged lines hidden (view full) ---

23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
1/*
2 * EISA bus probe and attach routines
3 *
4 * Copyright (c) 1995, 1996 Justin T. Gibbs.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 14 unchanged lines hidden (view full) ---

23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * $Id: eisaconf.c,v 1.19 1996/04/20 21:21:49 gibbs Exp $
31 * $Id: eisaconf.c,v 1.20 1996/06/12 05:02:41 gpalmer Exp $
32 */
33#include <sys/param.h>
34#include <sys/systm.h>
35#include <sys/devconf.h>
36#include <sys/kernel.h>
37#include <sys/sysctl.h>
38#include <sys/conf.h> /* For kdc_isa */
39#include <sys/malloc.h>

--- 655 unchanged lines hidden (view full) ---

695 resvaddr_t *node;
696 void *buf; /* Temporary externalizing buffer */
697 void *bufp; /* Current offset in the buffer */
698 void *offset; /* Offset relative to target address space */
699 void *ioa_prev; /* Prev Node entries relative to target address space */
700 void *ma_prev; /* Prev Node entries relative to target address space */
701 int retval;
702
32 */
33#include <sys/param.h>
34#include <sys/systm.h>
35#include <sys/devconf.h>
36#include <sys/kernel.h>
37#include <sys/sysctl.h>
38#include <sys/conf.h> /* For kdc_isa */
39#include <sys/malloc.h>

--- 655 unchanged lines hidden (view full) ---

695 resvaddr_t *node;
696 void *buf; /* Temporary externalizing buffer */
697 void *bufp; /* Current offset in the buffer */
698 void *offset; /* Offset relative to target address space */
699 void *ioa_prev; /* Prev Node entries relative to target address space */
700 void *ma_prev; /* Prev Node entries relative to target address space */
701 int retval;
702
703 offset = req->oldptr + req->oldidx;
703 offset = (char *)req->oldptr + req->oldidx;
704 buf = malloc(kdc->kdc_datalen, M_TEMP, M_NOWAIT);
705 if (!buf)
706 return 0;
707
708 bufp = buf;
709 bcopy(kdc->kdc_eisa, bufp, sizeof(struct eisa_device));
710 e_dev = bufp;
711
712 /* Calculate initial prev nodes */
704 buf = malloc(kdc->kdc_datalen, M_TEMP, M_NOWAIT);
705 if (!buf)
706 return 0;
707
708 bufp = buf;
709 bcopy(kdc->kdc_eisa, bufp, sizeof(struct eisa_device));
710 e_dev = bufp;
711
712 /* Calculate initial prev nodes */
713 ioa_prev = offset + ((void *)&(e_dev->ioconf.ioaddrs.lh_first)
714 - (void *)e_dev);
715 ma_prev = offset + ((void *)&(e_dev->ioconf.maddrs.lh_first)
716 - (void *)e_dev);
713 ioa_prev = (char *)offset + ((char *)&(e_dev->ioconf.ioaddrs.lh_first)
714 - (char *)e_dev);
715 ma_prev = (char *)offset + ((char *)&(e_dev->ioconf.maddrs.lh_first)
716 - (char *)e_dev);
717
717
718 offset += sizeof(*e_dev);
719 bufp += sizeof(*e_dev);
718 offset = (char *)offset + sizeof(*e_dev);
719 bufp = (char *)bufp + sizeof(*e_dev);
720
721 if (e_dev->ioconf.ioaddrs.lh_first) {
722 node = e_dev->ioconf.ioaddrs.lh_first;
723 e_dev->ioconf.ioaddrs.lh_first = offset;
724 for(;node;node = node->links.le_next) {
725 resvaddr_t *out_node;
726
727 bcopy(node, bufp, sizeof(resvaddr_t));
728 out_node = (resvaddr_t *)bufp;
720
721 if (e_dev->ioconf.ioaddrs.lh_first) {
722 node = e_dev->ioconf.ioaddrs.lh_first;
723 e_dev->ioconf.ioaddrs.lh_first = offset;
724 for(;node;node = node->links.le_next) {
725 resvaddr_t *out_node;
726
727 bcopy(node, bufp, sizeof(resvaddr_t));
728 out_node = (resvaddr_t *)bufp;
729 bufp += sizeof(resvaddr_t);
730 offset += sizeof(resvaddr_t);
729 bufp = (char *)bufp + sizeof(resvaddr_t);
730 offset = (char *)offset + sizeof(resvaddr_t);
731
732 out_node->links.le_prev = ioa_prev;
731
732 out_node->links.le_prev = ioa_prev;
733 ioa_prev += sizeof(resvaddr_t);
733 ioa_prev = (char *)ioa_prev + sizeof(resvaddr_t);
734
735 if (out_node->links.le_next)
736 out_node->links.le_next = offset;
737 }
738 }
739 if (e_dev->ioconf.maddrs.lh_first) {
740 node = e_dev->ioconf.maddrs.lh_first;
741 e_dev->ioconf.maddrs.lh_first = offset;
742 for(;node;node = node->links.le_next) {
743 resvaddr_t *out_node;
744
745 bcopy(node, bufp, sizeof(resvaddr_t));
746 out_node = (resvaddr_t *)bufp;
734
735 if (out_node->links.le_next)
736 out_node->links.le_next = offset;
737 }
738 }
739 if (e_dev->ioconf.maddrs.lh_first) {
740 node = e_dev->ioconf.maddrs.lh_first;
741 e_dev->ioconf.maddrs.lh_first = offset;
742 for(;node;node = node->links.le_next) {
743 resvaddr_t *out_node;
744
745 bcopy(node, bufp, sizeof(resvaddr_t));
746 out_node = (resvaddr_t *)bufp;
747 bufp += sizeof(resvaddr_t);
748 offset += sizeof(resvaddr_t);
747 bufp = (char *)bufp + sizeof(resvaddr_t);
748 offset = (char *)offset + sizeof(resvaddr_t);
749
750 out_node->links.le_prev = ma_prev;
749
750 out_node->links.le_prev = ma_prev;
751 ma_prev += sizeof(resvaddr_t);
751 ma_prev = (char *)ma_prev + sizeof(resvaddr_t);
752
753 if (out_node->links.le_next)
754 out_node->links.le_next = offset;
755 }
756 }
757
758 retval = SYSCTL_OUT(req, buf, kdc->kdc_datalen);
759 free(buf, M_TEMP);
760 return retval;
761}
752
753 if (out_node->links.le_next)
754 out_node->links.le_next = offset;
755 }
756 }
757
758 retval = SYSCTL_OUT(req, buf, kdc->kdc_datalen);
759 free(buf, M_TEMP);
760 return retval;
761}