Port-powerpc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Bringing the PowerMac tree up to -current...



So I made the PowerMac kernel build in -current, stole the DDB support
from arch/powerpc (and fixed some bugs in it), and cleaned up the way
the OFW drivers were attached.  A diff between Tsubai's 980222 snapshot
and my tree is below.  (I also sent these patches to Tsubai).

As with Tsubai's 19980221 kernel, it still hangs at some point after
starting init(8).  I haven't yet determined why; I'll look at it again
later this week.

Once the hang is cleared up, I'd like to get this committed to the main
CVS tree.  There is still lots of work to do (like finishing the
bus_dma support, making am79c950.c MI, sharing the ADB code with the
mac68k port, ...), but it's certainly functional enough to be useful.


diff -rc2 powermac/conf/GENERIC /sys/arch/powermac/conf/GENERIC
*** powermac/conf/GENERIC       Fri Jan 30 23:50:30 1998
--- /sys/arch/powermac/conf/GENERIC     Tue Feb 24 00:46:58 1998
***************
*** 55,70 ****
  config                netbsd  root on ? type ?
  
! ofroot*               at root
  
! ofbus*                at openfirm?
  
! ofdisk*               at openfirm?
! 
! ofnet*                at openfirm?
  ipkdbif0      at ofnet?
  
! ofcons*               at openfirm?
  
! ofrtc*                at openfirm?
  
  pseudo-device loop
--- 55,69 ----
  config                netbsd  root on ? type ?
  
! ofbus*                at mainbus?
! ofbus*                at ofbus?
  
! ofdisk*               at ofbus?
  
! ofnet*                at ofbus?
  ipkdbif0      at ofnet?
  
! ofcons*               at ofbus?
  
! ofrtc*                at ofbus?
  
  pseudo-device loop
diff -rc2 powermac/conf/Makefile.powermac 
/sys/arch/powermac/conf/Makefile.powermac
*** powermac/conf/Makefile.powermac     Sun Feb 15 12:01:18 1998
--- /sys/arch/powermac/conf/Makefile.powermac   Sat Feb 21 18:26:31 1998
***************
*** 1,3 ****
- LD=ld27
  #     $NetBSD: Makefile.powermac,v 1.9.2.1 1997/11/12 23:45:50 thorpej Exp $
  #
--- 1,2 ----
diff -rc2 powermac/conf/OFCONS /sys/arch/powermac/conf/OFCONS
*** powermac/conf/OFCONS        Sat Feb 21 02:30:38 1998
--- /sys/arch/powermac/conf/OFCONS      Tue Feb 24 00:47:05 1998
***************
*** 66,75 ****
  sd*   at scsibus? target ? lun ?      # SCSI disks
  
! ofroot*               at mainbus0
! ofbus*                at openfirm?
! #ofdisk*      at openfirm?
! #ofnet*               at openfirm?
! ofcons*               at openfirm?
! #ofrtc*               at openfirm?
  
  pseudo-device loop
--- 66,75 ----
  sd*   at scsibus? target ? lun ?      # SCSI disks
  
! ofbus*                at mainbus?
! ofbus*                at ofbus?
! #ofdisk*      at ofbus?
! #ofnet*               at ofbus?
! ofcons*               at ofbus?
! #ofrtc*               at ofbus?
  
  pseudo-device loop
diff -rc2 powermac/conf/POWERMAC /sys/arch/powermac/conf/POWERMAC
*** powermac/conf/POWERMAC      Wed Feb 18 13:54:08 1998
--- /sys/arch/powermac/conf/POWERMAC    Tue Feb 24 00:47:10 1998
***************
*** 21,24 ****
--- 21,25 ----
  #options      DEBUG
  options       DIAGNOSTIC
+ options       DDB
  options       TRAP_PANICWAIT
  options               NMBCLUSTERS=1024
***************
*** 66,75 ****
  sd*   at scsibus? target ? lun ?      # SCSI disks
  
! #ofroot*      at mainbus0
! #ofbus*               at openfirm?
! #ofdisk*      at openfirm?
! #ofnet*               at openfirm?
! #ofcons*      at openfirm?
! #ofrtc*               at openfirm?
  
  pseudo-device loop
--- 67,76 ----
  sd*   at scsibus? target ? lun ?      # SCSI disks
  
! ofbus*                at mainbus?
! #ofbus*               at ofbus?
! #ofdisk*      at ofbus?
! #ofnet*               at ofbus?
! #ofcons*      at ofbus?
! #ofrtc*               at ofbus?
  
  pseudo-device loop
diff -rc2 powermac/conf/files.powermac /sys/arch/powermac/conf/files.powermac
*** powermac/conf/files.powermac        Sat Feb 21 02:42:26 1998
--- /sys/arch/powermac/conf/files.powermac      Mon Feb 23 22:59:21 1998
***************
*** 36,43 ****
--- 36,57 ----
  file  arch/powerpc/powerpc/trap.c
  file  dev/cons.c
+ file  dev/cninit.c                            ofcons
+ file    arch/powerpc/powerpc/setjmp.S                   ddb
+ file    arch/powerpc/powerpc/db_memrw.c                 ddb
+ file    arch/powerpc/powerpc/db_disasm.c                ddb
+ file    arch/powerpc/powerpc/db_interface.c             ddb
+ file    arch/powerpc/powerpc/db_trace.c                 ddb
  
  # Firmworks OpenFirmware Bug Workarounds
  file  arch/powerpc/powerpc/ofwreal.S          firmworksbugs
  
+ 
+ #
+ # Generic OpenFirmware device support
+ #
+ include "dev/ofw/files.ofw"
+ major {ofdisk = 0}
+ 
+ 
  #
  # Machine-independent SCSI drivers
***************
*** 48,56 ****
  major {cd = 6}
  
  #
  # System bus types
  #
! define mainbus {}
! device        mainbus: pcibus, mainbus
  attach        mainbus at root
  file  arch/powermac/powermac/mainbus.c        mainbus
--- 62,71 ----
  major {cd = 6}
  
+ 
  #
  # System bus types
  #
! define        mainbus {}
! device        mainbus: pcibus, mainbus, ofbus
  attach        mainbus at root
  file  arch/powermac/powermac/mainbus.c        mainbus
***************
*** 68,77 ****
  file  arch/powermac/pci/pchb.c                pchb
  
! device obio {}
! attach obio at pci
  file  arch/powermac/dev/obio.c                obio
  
! device esp: scsi, ncr53c9x
! attach esp at obio
  file  arch/powermac/dev/esp.c                 esp
  
--- 83,92 ----
  file  arch/powermac/pci/pchb.c                pchb
  
! device        obio {}
! attach        obio at pci
  file  arch/powermac/dev/obio.c                obio
  
! device        esp: scsi, ncr53c9x
! attach        esp at obio
  file  arch/powermac/dev/esp.c                 esp
  
***************
*** 81,142 ****
  file  arch/powermac/dev/am79c950.c            mc
  
! device zsc {channel = -1}
! attach zsc at obio
  file  arch/powermac/dev/zs.c                  zsc needs-flag
  file  dev/ic/z8530sc.c                        zsc
  
! device zstty: tty
! attach zstty at zsc
  file  dev/ic/z8530tty.c                       zstty needs-flag
  
! device adb
! attach adb at obio
  file  arch/powermac/dev/adb.c                 adb
  file  arch/powermac/dev/adb_direct.c          adb
- 
- 
- 
- 
- ##################################################
- #
- # We should use `include "dev/ofw/files.ofw"',
- # but `ofroot at root' ...
- 
- #
- # Openfirmware support
- #
- define        openfirm {}
- 
- # Generic disk support
- device        ofdisk: disk
- attach        ofdisk at openfirm
- file  dev/ofw/ofdisk.c                ofdisk needs-flag
- major {ofdisk = 0}
- 
- # Generic net support
- define        ipkdbofn { [ disable = 0 ] }
- device        ofnet: ether, ifnet, ipkdbofn, arp
- attach        ofnet at openfirm
- file  dev/ofw/ofnet.c                 ofnet | ipkdb_ofn needs-flag
- attach        ipkdbif at ipkdbofn with ipkdb_ofn
- 
- # Generic console support
- device        ofcons: tty
- attach        ofcons at openfirm
- file  dev/ofw/ofcons.c                ofcons needs-flag
- 
- # Generic RTC support
- device ofrtc
- attach        ofrtc at openfirm
- file  dev/ofw/ofrtc.c                 ofrtc needs-flag
- 
- # Generic bus support
- device        ofbus: openfirm
- attach        ofbus at openfirm
- file  dev/ofw/ofbus.c                 openfirm
- 
- device        ofroot: openfirm
- attach        ofroot at mainbus
- 
- file  dev/cninit.c                    ofcons
- 
--- 96,110 ----
  file  arch/powermac/dev/am79c950.c            mc
  
! device        zsc {channel = -1}
! attach        zsc at obio
  file  arch/powermac/dev/zs.c                  zsc needs-flag
  file  dev/ic/z8530sc.c                        zsc
  
! device        zstty: tty
! attach        zstty at zsc
  file  dev/ic/z8530tty.c                       zstty needs-flag
  
! device        adb
! attach        adb at obio
  file  arch/powermac/dev/adb.c                 adb
  file  arch/powermac/dev/adb_direct.c          adb
diff -rc2 powermac/dev/am79c950.c /sys/arch/powermac/dev/am79c950.c
*** powermac/dev/am79c950.c     Mon Feb 16 07:35:32 1998
--- /sys/arch/powermac/dev/am79c950.c   Sat Feb 21 18:52:52 1998
***************
*** 101,108 ****
  static void mc_mediastatus __P((struct ifnet *, struct ifmediareq *));
  
- struct cfdriver mc_cd = {
-       NULL, "mc", DV_IFNET
- };
- 
  /*
   * Compare two Ether/802 addresses for equality, inlined and
--- 101,104 ----
diff -rc2 powermac/dev/esp.c /sys/arch/powermac/dev/esp.c
*** powermac/dev/esp.c  Sat Feb 21 08:56:51 1998
--- /sys/arch/powermac/dev/esp.c        Mon Feb 23 20:57:18 1998
***************
*** 147,154 ****
  };
  
- struct cfdriver esp_cd = {
-       NULL, "esp", DV_DULL
- };
- 
  struct scsipi_adapter esp_switch = {
        ncr53c9x_scsi_cmd,
--- 147,150 ----
diff -rc2 powermac/dev/obio.c /sys/arch/powermac/dev/obio.c
*** powermac/dev/obio.c Thu Feb 19 03:51:05 1998
--- /sys/arch/powermac/dev/obio.c       Sat Feb 21 18:53:11 1998
***************
*** 26,33 ****
  };
  
- struct cfdriver obio_cd = {
-       NULL, "obio", DV_DULL
- };
- 
  int
  obio_match(parent, cf, aux)
--- 26,29 ----
diff -rc2 powermac/dev/zs.c /sys/arch/powermac/dev/zs.c
*** powermac/dev/zs.c   Thu Feb 19 08:15:14 1998
--- /sys/arch/powermac/dev/zs.c Sat Feb 21 19:30:54 1998
***************
*** 164,176 ****
  
  struct zschan *
! zs_get_chan_addr(zs_unit, channel)
!       int zs_unit, channel;
  {
        struct zsdevice *addr;
        struct zschan *zc;
  
!       if (zs_unit >= 1)
                return NULL;
!       addr = zsaddr[zs_unit];
        if (addr == NULL)
                return NULL;
--- 164,176 ----
  
  struct zschan *
! zs_get_chan_addr(zsc_unit, channel)
!       int zsc_unit, channel;
  {
        struct zsdevice *addr;
        struct zschan *zc;
  
!       if (zsc_unit >= 1)
                return NULL;
!       addr = zsaddr[zsc_unit];
        if (addr == NULL)
                return NULL;
***************
*** 197,203 ****
  };
  
! struct cfdriver zsc_cd = {
!       NULL, "zsc", DV_DULL
! };
  
  int zshard __P((void *));
--- 197,201 ----
  };
  
! extern struct cfdriver zsc_cd;
  
  int zshard __P((void *));
diff -rc2 powermac/include/bus.h /sys/arch/powermac/include/bus.h
*** powermac/include/bus.h      Thu Feb 12 11:30:01 1998
--- /sys/arch/powermac/include/bus.h    Sat Feb 21 18:48:51 1998
***************
*** 73,77 ****
   * Values for the Be bus space tag, not to be used directly by MI code.
   */
! /* #define    BEBOX_BUS_REVERSE       1 */
  
  /*
--- 73,77 ----
   * Values for the Be bus space tag, not to be used directly by MI code.
   */
! /* #define    POWERMAC_BUS_REVERSE    1 */
  
  /*
***************
*** 265,269 ****
  #define       BUS_DMA_NOWAIT          0x01    /* not safe to sleep */
  #define       BUS_DMA_ALLOCNOW        0x02    /* perform resource allocation 
now */
! #define       BUS_DMAMEM_NOSYNC       0x04    /* map memory to not require 
sync */
  #define       BUS_DMA_BUS1            0x10    /* placeholders for bus 
functions... */
  #define       BUS_DMA_BUS2            0x20
--- 265,269 ----
  #define       BUS_DMA_NOWAIT          0x01    /* not safe to sleep */
  #define       BUS_DMA_ALLOCNOW        0x02    /* perform resource allocation 
now */
! #define       BUS_DMA_COHERENT        0x04    /* hint: map memory DMA 
coherent */
  #define       BUS_DMA_BUS1            0x10    /* placeholders for bus 
functions... */
  #define       BUS_DMA_BUS2            0x20
***************
*** 276,292 ****
  
  /*
!  *    bus_dmasync_op_t
!  *
!  *    Operations performed by bus_dmamap_sync().
   */
! typedef enum {
!       BUS_DMASYNC_PREREAD,
!       BUS_DMASYNC_POSTREAD,
!       BUS_DMASYNC_PREWRITE,
!       BUS_DMASYNC_POSTWRITE,
! } bus_dmasync_op_t;
  
! typedef struct bebox_bus_dma_tag              *bus_dma_tag_t;
! typedef struct bebox_bus_dmamap               *bus_dmamap_t;
  
  /*
--- 276,288 ----
  
  /*
!  * Operations performed by bus_dmamap_sync().
   */
! #define       BUS_DMASYNC_PREREAD     0x01    /* pre-read synchronization */
! #define       BUS_DMASYNC_POSTREAD    0x02    /* post-read synchronization */
! #define       BUS_DMASYNC_PREWRITE    0x04    /* pre-write synchronization */
! #define       BUS_DMASYNC_POSTWRITE   0x08    /* post-write synchronization */
  
! typedef struct powermac_bus_dma_tag   *bus_dma_tag_t;
! typedef struct powermac_bus_dmamap    *bus_dmamap_t;
  
  /*
***************
*** 296,304 ****
   *    are suitable for programming into DMA registers.
   */
! struct bebox_bus_dma_segment {
        bus_addr_t      ds_addr;        /* DMA address */
        bus_size_t      ds_len;         /* length of transfer */
  };
! typedef struct bebox_bus_dma_segment  bus_dma_segment_t;
  
  /*
--- 292,300 ----
   *    are suitable for programming into DMA registers.
   */
! struct powermac_bus_dma_segment {
        bus_addr_t      ds_addr;        /* DMA address */
        bus_size_t      ds_len;         /* length of transfer */
  };
! typedef struct powermac_bus_dma_segment       bus_dma_segment_t;
  
  /*
***************
*** 309,313 ****
   */
  
! struct bebox_bus_dma_tag {
        void    *_cookie;               /* cookie used in the guts */
  
--- 305,309 ----
   */
  
! struct powermac_bus_dma_tag {
        void    *_cookie;               /* cookie used in the guts */
  
***************
*** 328,332 ****
        void    (*_dmamap_unload) __P((bus_dma_tag_t, bus_dmamap_t));
        void    (*_dmamap_sync) __P((bus_dma_tag_t, bus_dmamap_t,
!                   bus_dmasync_op_t));
  
        /*
--- 324,328 ----
        void    (*_dmamap_unload) __P((bus_dma_tag_t, bus_dmamap_t));
        void    (*_dmamap_sync) __P((bus_dma_tag_t, bus_dmamap_t,
!                   bus_addr_t, bus_size_t, int));
  
        /*
***************
*** 358,364 ****
  #define       bus_dmamap_unload(t, p)                                 \
        (*(t)->_dmamap_unload)((t), (p))
! #define       bus_dmamap_sync(t, p, o)                                \
        (void)((t)->_dmamap_sync ?                              \
!           (*(t)->_dmamap_sync)((t), (p), (o)) : (void)0)
  
  #define       bus_dmamem_alloc(t, s, a, b, sg, n, r, f)               \
--- 354,360 ----
  #define       bus_dmamap_unload(t, p)                                 \
        (*(t)->_dmamap_unload)((t), (p))
! #define       bus_dmamap_sync(t, p, o, l, ops)                        \
        (void)((t)->_dmamap_sync ?                              \
!           (*(t)->_dmamap_sync)((t), (p), (o), (l), (ops)) : (void)0)
  
  #define       bus_dmamem_alloc(t, s, a, b, sg, n, r, f)               \
***************
*** 378,382 ****
   *    Describes a DMA mapping.
   */
! struct bebox_bus_dmamap {
        /*
         * PRIVATE MEMBERS: not for use my machine-independent code.
--- 374,378 ----
   *    Describes a DMA mapping.
   */
! struct powermac_bus_dmamap {
        /*
         * PRIVATE MEMBERS: not for use my machine-independent code.
***************
*** 393,401 ****
         * PUBLIC MEMBERS: these are used by machine-independent code.
         */
        int             dm_nsegs;       /* # valid segments in mapping */
        bus_dma_segment_t dm_segs[1];   /* segments; variable length */
  };
  
! #ifdef _BEBOX_BUS_DMA_PRIVATE
  int   _bus_dmamap_create __P((bus_dma_tag_t, bus_size_t, int, bus_size_t,
            bus_size_t, int, bus_dmamap_t *));
--- 389,398 ----
         * PUBLIC MEMBERS: these are used by machine-independent code.
         */
+       bus_size_t      dm_mapsize;     /* size of the mapping */
        int             dm_nsegs;       /* # valid segments in mapping */
        bus_dma_segment_t dm_segs[1];   /* segments; variable length */
  };
  
! #ifdef _POWERMAC_BUS_DMA_PRIVATE
  int   _bus_dmamap_create __P((bus_dma_tag_t, bus_size_t, int, bus_size_t,
            bus_size_t, int, bus_dmamap_t *));
***************
*** 410,414 ****
            bus_dma_segment_t *, int, bus_size_t, int));
  void  _bus_dmamap_unload __P((bus_dma_tag_t, bus_dmamap_t));
! void  _bus_dmamap_sync __P((bus_dma_tag_t, bus_dmamap_t, bus_dmasync_op_t));
  
  int   _bus_dmamem_alloc __P((bus_dma_tag_t tag, bus_size_t size,
--- 407,412 ----
            bus_dma_segment_t *, int, bus_size_t, int));
  void  _bus_dmamap_unload __P((bus_dma_tag_t, bus_dmamap_t));
! void  _bus_dmamap_sync __P((bus_dma_tag_t, bus_dmamap_t, bus_addr_t,
!           bus_size_t, int));
  
  int   _bus_dmamem_alloc __P((bus_dma_tag_t tag, bus_size_t size,
***************
*** 428,431 ****
            bus_dma_segment_t *segs, int nsegs, int *rsegs, int flags,
            vm_offset_t low, vm_offset_t high));
! #endif /* _BEBOX_BUS_DMA_PRIVATE */
  #endif /* _POWERMAC_BUS_H_ */
--- 426,430 ----
            bus_dma_segment_t *segs, int nsegs, int *rsegs, int flags,
            vm_offset_t low, vm_offset_t high));
! #endif /* _POWERMAC_BUS_DMA_PRIVATE */
! 
  #endif /* _POWERMAC_BUS_H_ */
diff -rc2 powermac/include/powerpc.h /sys/arch/powermac/include/powerpc.h
*** powermac/include/powerpc.h  Fri Jan 31 07:20:17 1997
--- /sys/arch/powermac/include/powerpc.h        Mon Feb 23 22:49:10 1998
***************
*** 51,56 ****
  int dk_match __P((char *name));
  
- void ofrootfound __P((void));
- 
  extern        struct device *booted_device;
  extern        int booted_partition;
--- 51,54 ----
diff -rc2 powermac/include/types.h /sys/arch/powermac/include/types.h
*** powermac/include/types.h    Wed Nov  5 08:38:18 1997
--- /sys/arch/powermac/include/types.h  Sun Feb 22 20:30:15 1998
***************
*** 1,3 ****
! /*    $NetBSD: types.h,v 1.3.8.1 1997/11/05 04:39:19 thorpej Exp $    */
  
  /*-
--- 1,3 ----
! /*    $NetBSD: types.h,v 1.5 1998/01/27 09:16:00 sakamoto Exp $       */
  
  /*-
***************
*** 37,59 ****
  #include <sys/cdefs.h>
  
  #define       __BIT_TYPES_DEFINED__
! typedef       signed char             int8_t;
! typedef       unsigned char           u_int8_t;
! typedef       short                   int16_t;
  typedef       unsigned short          u_int16_t;
! typedef       int                     int32_t;
  typedef       unsigned int            u_int32_t;
  /* LONGLONG */
! typedef       long long               int64_t;
  /* LONGLONG */
  typedef       unsigned long long      u_int64_t;
  
  typedef       int32_t                 register_t;
- 
- typedef       unsigned long           vm_size_t;
- typedef       unsigned long           vm_offset_t;
- 
- /* This is only to make some unneeded function declaration happy */
- #define       label_t void
  
  #endif        /* _MACHTYPES_H_ */
--- 37,70 ----
  #include <sys/cdefs.h>
  
+ #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
+ typedef struct _physadr {
+       int r[1];
+ } *physadr;
+ 
+ typedef struct label_t {
+         int val[40]; /* double check this XXX */
+ } label_t;
+ #endif
+ 
+ typedef       unsigned long   vm_offset_t;
+ typedef       unsigned long   vm_size_t;
+ 
+ /*
+  * Basic integral types.  Omit the typedef if
+  * not possible for a machine/compiler combination.
+  */
  #define       __BIT_TYPES_DEFINED__
! typedef       __signed char              int8_t;
! typedef       unsigned char            u_int8_t;
! typedef       short                     int16_t;
  typedef       unsigned short          u_int16_t;
! typedef       int                       int32_t;
  typedef       unsigned int            u_int32_t;
  /* LONGLONG */
! typedef       long long                 int64_t;
  /* LONGLONG */
  typedef       unsigned long long      u_int64_t;
  
  typedef       int32_t                 register_t;
  
  #endif        /* _MACHTYPES_H_ */
diff -rc2 powermac/pci/pchb.c /sys/arch/powermac/pci/pchb.c
*** powermac/pci/pchb.c Fri Feb  6 10:49:50 1998
--- /sys/arch/powermac/pci/pchb.c       Sat Feb 21 18:52:32 1998
***************
*** 56,63 ****
  };
  
- struct cfdriver pchb_cd = {
-       NULL, "pchb", DV_DULL
- };
- 
  #define       PCI_PRODUCT_APPLE_BANDIT        1
  
--- 56,59 ----
diff -rc2 powermac/powermac/autoconf.c /sys/arch/powermac/powermac/autoconf.c
*** powermac/powermac/autoconf.c        Sat Feb 21 01:03:36 1998
--- /sys/arch/powermac/powermac/autoconf.c      Tue Feb 24 00:45:50 1998
***************
*** 52,56 ****
  
  struct devnametobdevmaj powermac_nam2blk[] = {
!       { "ofd",        0 },
        { "sd",         4 },
  #ifdef notyet
--- 52,56 ----
  
  struct devnametobdevmaj powermac_nam2blk[] = {
!       { "ofdisk",     0 },
        { "sd",         4 },
  #ifdef notyet
***************
*** 75,79 ****
                panic("configure: mainbus not configured");
  
-       /*ofrootfound();*/
        (void)spl0();
        cold = 0;
--- 75,78 ----
diff -rc2 powermac/powermac/conf.c /sys/arch/powermac/powermac/conf.c
*** powermac/powermac/conf.c    Sat Feb 21 02:48:20 1998
--- /sys/arch/powermac/powermac/conf.c  Tue Feb 24 00:45:04 1998
***************
*** 31,34 ****
--- 31,35 ----
   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
+ 
  #include <sys/param.h>
  #include <sys/buf.h>
***************
*** 40,44 ****
  
  #include "ofdisk.h"
! bdev_decl(ofd);
  bdev_decl(sw);
  #include "sd.h"
--- 41,45 ----
  
  #include "ofdisk.h"
! bdev_decl(ofdisk_);
  bdev_decl(sw);
  #include "sd.h"
***************
*** 50,54 ****
  
  struct bdevsw bdevsw[] = {
!       bdev_disk_init(NOFDISK,ofd),    /* 0: Openfirmware disk */
        bdev_swap_init(1,sw),           /* 1: swap pseudo device */
        bdev_notdef(),                  /* 2: */
--- 51,55 ----
  
  struct bdevsw bdevsw[] = {
!       bdev_disk_init(NOFDISK,ofdisk_),/* 0: Openfirmware disk */
        bdev_swap_init(1,sw),           /* 1: swap pseudo device */
        bdev_notdef(),                  /* 2: */
***************
*** 80,87 ****
  cdev_decl(sw);
  #include "ofcons.h"
! cdev_decl(ofc);
! cdev_decl(ofd);
  #include "ofrtc.h"
! cdev_decl(ofrtc);
  #include "bpfilter.h"
  cdev_decl(bpf);
--- 81,88 ----
  cdev_decl(sw);
  #include "ofcons.h"
! cdev_decl(ofcons_);
! cdev_decl(ofdisk_);
  #include "ofrtc.h"
! cdev_decl(ofrtc_);
  #include "bpfilter.h"
  cdev_decl(bpf);
***************
*** 111,117 ****
        cdev_log_init(1,log),           /* 5: /dev/klog */
        cdev_swap_init(1,sw),           /* 6: /dev/drum pseudo device */
!       cdev_tty_init(NOFCONS,ofc),     /* 7: Openfirmware console */
!       cdev_disk_init(NOFDISK,ofd),    /* 8: Openfirmware disk */
!       cdev_rtc_init(NOFRTC,ofrtc),    /* 9: Openfirmware RTC */
        cdev_bpftun_init(NBPFILTER,bpf),/* 10: Berkeley packet filter */
        cdev_rnd_init(NRND,rnd),        /* 11: random source pseudo-device */
--- 112,118 ----
        cdev_log_init(1,log),           /* 5: /dev/klog */
        cdev_swap_init(1,sw),           /* 6: /dev/drum pseudo device */
!       cdev_tty_init(NOFCONS,ofcons_), /* 7: Openfirmware console */
!       cdev_disk_init(NOFDISK,ofdisk_),/* 8: Openfirmware disk */
!       cdev_rtc_init(NOFRTC,ofrtc_),   /* 9: Openfirmware RTC */
        cdev_bpftun_init(NBPFILTER,bpf),/* 10: Berkeley packet filter */
        cdev_rnd_init(NRND,rnd),        /* 11: random source pseudo-device */
***************
*** 198,208 ****
        return makedev(major, minor(dev));
  }
  #if NOFCONS > 0
  #include <dev/cons.h>
  
! cons_decl(ofc);
  
  struct consdev constab[] = {
!       cons_init(ofc),
        { 0 },
  };
--- 199,210 ----
        return makedev(major, minor(dev));
  }
+ 
  #if NOFCONS > 0
  #include <dev/cons.h>
  
! cons_decl(ofcons_);
  
  struct consdev constab[] = {
!       cons_init(ofcons_),
        { 0 },
  };
diff -rc2 powermac/powermac/cpu.c /sys/arch/powermac/powermac/cpu.c
*** powermac/powermac/cpu.c     Fri Feb 20 14:25:59 1998
--- /sys/arch/powermac/powermac/cpu.c   Sun Feb 22 23:46:52 1998
***************
*** 13,19 ****
  };
  
! struct cfdriver cpu_cd = {
!       NULL, "cpu", DV_DULL
! };
  
  extern void *mapiodev();
--- 13,17 ----
  };
  
! extern struct cfdriver cpu_cd;
  
  extern void *mapiodev();
diff -rc2 powermac/powermac/locore.S /sys/arch/powermac/powermac/locore.S
*** powermac/powermac/locore.S  Mon Feb  9 10:36:44 1998
--- /sys/arch/powermac/powermac/locore.S        Sun Feb 22 21:13:56 1998
***************
*** 789,792 ****
--- 789,812 ----
  _C_LABEL(tlbdsmsize) = .-_C_LABEL(tlbdsmiss)
  
+ #ifdef DDB
+ #define       ddbsave 0xde0           /* primary save area for DDB */
+ /*
+  * In case of DDB we want a separate trap catcher for it
+  */
+       .local  ddbstk
+       .comm   ddbstk,INTSTK,8         /* ddb stack */
+ 
+       .globl  _C_LABEL(ddblow),_C_LABEL(ddbsize)
+ _C_LABEL(ddblow):
+       mtsprg  1,1                     /* save SP */
+       stmw    28,ddbsave(0)           /* free r28-r31 */
+       mflr    28                      /* save LR */
+       mfcr    29                      /* save CR */
+       lis     1,ddbstk+INTSTK@ha      /* get new SP */
+       addi    1,1,ddbstk+INTSTK@l
+       bla     ddbtrap
+ _C_LABEL(ddbsize) = .-_C_LABEL(ddblow)
+ #endif        /* DDB */
+ 
  #if NIPKDB > 0
  #define       ipkdbsave       0xde0           /* primary save area for IPKDB 
*/
***************
*** 1171,1174 ****
--- 1191,1239 ----
        bl      _C_LABEL(decr_intr)
        b       intr_exit
+ 
+ #ifdef DDB
+ /*
+  * Deliberate entry to ddbtrap
+  */
+       .globl  _C_LABEL(ddb_trap)
+ _C_LABEL(ddb_trap):
+       mtsprg  1,1
+       mfmsr   3
+       mtsrr1  3
+       andi.   3,3,~(PSL_EE|PSL_ME)@l
+       mtmsr   3                       /* disable interrupts */
+       isync
+       stmw    28,ddbsave(0)
+       mflr    28
+       li      29,EXC_BPT
+       mtlr    29
+       mfcr    29
+       mtsrr0  28
+ 
+ /*
+  * Now the ddb trap catching code.
+  */
+ ddbtrap:
+       FRAME_SETUP(ddbsave)
+ /* Call C trap code: */
+       addi    3,1,8
+       bl      _C_LABEL(ddb_trap_glue)
+       or.     3,3,3
+       bne     ddbleave
+ /* This wasn't for DDB, so switch to real trap: */
+       lwz     3,FRAME_EXC+8(1)        /* save exception */
+       stw     3,ddbsave+8(0)
+       FRAME_LEAVE(ddbsave)
+       mtsprg  1,1                     /* prepare for entrance to realtrap */
+       stmw    28,tempsave(0)
+       mflr    28
+       mfcr    29
+       lwz     31,ddbsave+8(0)
+       mtlr    31
+       b       realtrap
+ ddbleave:
+       FRAME_LEAVE(ddbsave)
+       rfi
+ #endif /* DDB */
  
  #if NIPKDB > 0
diff -rc2 powermac/powermac/mainbus.c /sys/arch/powermac/powermac/mainbus.c
*** powermac/powermac/mainbus.c Fri Feb 20 10:44:33 1998
--- /sys/arch/powermac/powermac/mainbus.c       Tue Feb 24 00:23:11 1998
***************
*** 49,55 ****
  };
  
! struct cfdriver mainbus_cd = {
!       NULL, "mainbus", DV_DULL
! };
  
  static struct bandit_addr bandit_f2, bandit_f4;
--- 49,53 ----
  };
  
! extern struct cfdriver mainbus_cd;
  
  static struct bandit_addr bandit_f2, bandit_f4;
***************
*** 77,83 ****
        void *aux;
  {
        struct pcibus_attach_args pba;
        struct confargs ca;
-       struct ofprobe probe;
        int node;
  
--- 75,81 ----
        void *aux;
  {
+       struct ofbus_attach_args oba;
        struct pcibus_attach_args pba;
        struct confargs ca;
        int node;
  
***************
*** 88,94 ****
        node = OF_peer(0);
        if (node) {
!               probe.name = "";
!               probe.phandle = node;
!               config_found(self, &probe, NULL);
        }
  
--- 86,92 ----
        node = OF_peer(0);
        if (node) {
!               oba.oba_busname = "ofw";
!               oba.oba_phandle = node;
!               config_found(self, &oba, NULL);
        }
  
diff -rc2 powermac/powermac/vm_machdep.c 
/sys/arch/powermac/powermac/vm_machdep.c
*** powermac/powermac/vm_machdep.c      Fri Feb 13 09:30:44 1998
--- /sys/arch/powermac/powermac/vm_machdep.c    Sat Feb 21 18:40:12 1998
***************
*** 62,66 ****
        *pcb = p1->p_addr->u_pcb;
        
!       pcb->pcb_pm = &p2->p_vmspace->vm_pmap;
        pcb->pcb_pmreal = (struct pmap *)pmap_extract(pmap_kernel(), 
(vm_offset_t)pcb->pcb_pm);
        
--- 62,66 ----
        *pcb = p1->p_addr->u_pcb;
        
!       pcb->pcb_pm = p2->p_vmspace->vm_map.pmap;
        pcb->pcb_pmreal = (struct pmap *)pmap_extract(pmap_kernel(), 
(vm_offset_t)pcb->pcb_pm);
        
diff -rc2 powermac/stand/Makefile.inc /sys/arch/powermac/stand/Makefile.inc
*** powermac/stand/Makefile.inc Sun Feb 22 09:36:53 1998
--- /sys/arch/powermac/stand/Makefile.inc       Mon Jan 26 01:44:47 1998
***************
*** 3,7 ****
  BINDIR=               /usr/mdec
  
! CPPFLAGS+=    -DSTANDALONE
  
  CFLAGS+=      -msoft-float
--- 3,7 ----
  BINDIR=               /usr/mdec
  
! CPPFLAGS+=    -DSTANDALONE -D_STANDALONE
  
  CFLAGS+=      -msoft-float
*** /dev/null   Tue Feb 24 02:19:04 1998
--- /sys/arch/powermac/include/db_machdep.h     Sun Feb 22 21:56:47 1998
***************
*** 0 ****
--- 1,101 ----
+ /*    $OpenBSD: db_machdep.h,v 1.2 1997/03/21 00:48:48 niklas Exp $   */
+ /*    $NetBSD: db_machdep.h,v 1.1 1998/01/27 15:13:09 sakamoto Exp $  */
+ 
+ /* 
+  * Mach Operating System
+  * Copyright (c) 1992 Carnegie Mellon University
+  * All Rights Reserved.
+  * 
+  * Permission to use, copy, modify and distribute this software and its
+  * documentation is hereby granted, provided that both the copyright
+  * notice and this permission notice appear in all copies of the
+  * software, derivative works or modified versions, and any portions
+  * thereof, and that both notices appear in supporting documentation.
+  * 
+  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+  * 
+  * Carnegie Mellon requests users of this software to return to
+  * 
+  *  Software Distribution Coordinator  or  
Software.Distribution%CS.CMU.EDU@localhost
+  *  School of Computer Science
+  *  Carnegie Mellon University
+  *  Pittsburgh PA 15213-3890
+  * 
+  * any improvements or extensions that they make and grant Carnegie Mellon 
+  * the rights to redistribute these changes.
+  */
+ 
+ /*
+  * Machine-dependent defines for new kernel debugger.
+  */
+ #ifndef       _PPC_DB_MACHDEP_H_
+ #define       _PPC_DB_MACHDEP_H_
+ 
+ #include <vm/vm_prot.h>
+ #include <vm/vm_param.h>
+ #include <vm/vm_inherit.h>
+ #include <machine/trap.h>
+ 
+ #define       DB_ELF_SYMBOLS
+ #define       DB_ELFSIZE      32
+ 
+ typedef       vm_offset_t     db_addr_t;      /* address - unsigned */
+ typedef       int             db_expr_t;      /* expression - signed */
+ struct powerpc_saved_state {
+       u_int32_t       r[32];          /* data registers */
+       u_int32_t       iar;
+       u_int32_t       msr;
+ };
+ typedef struct powerpc_saved_state db_regs_t;
+ db_regs_t     ddb_regs;               /* register state */
+ #define DDB_REGS      (&ddb_regs)
+ 
+ #define       PC_REGS(regs)   ((db_addr_t)(regs)->iar)
+ 
+ #define       BKPT_INST       0x7C810808      /* breakpoint instruction */
+ 
+ #define       BKPT_SIZE       (4)             /* size of breakpoint inst */
+ #define       BKPT_SET(inst)  (BKPT_INST)
+ 
+ #define       FIXUP_PC_AFTER_BREAK(regs)      ((regs)->iar -= 4)
+ 
+ #define SR_SINGLESTEP 0x400
+ #define       db_clear_single_step(regs)      ((regs)->msr &= ~SR_SINGLESTEP)
+ #define       db_set_single_step(regs)        ((regs)->msr |=  SR_SINGLESTEP)
+ 
+ #define T_BREAKPOINT  0xffff
+ #define       IS_BREAKPOINT_TRAP(type, code)  ((type) == T_BREAKPOINT)
+ 
+ #define T_WATCHPOINT  0xeeee
+ #ifdef T_WATCHPOINT
+ #define       IS_WATCHPOINT_TRAP(type, code)  ((type) == T_WATCHPOINT)
+ #else
+ #define       IS_WATCHPOINT_TRAP(type, code)  0
+ #endif
+ 
+ #define       M_RTS           0xfc0007fe
+ #define I_RTS         0x4c000020
+ #define M_BC          0xfc000000
+ #define I_BC          0x40000000
+ #define M_B           0xfc000000
+ #define I_B           0x50000000
+ #define       M_RFI           0xfc0007fe
+ #define       I_RFI           0x4c000064
+ 
+ #define       inst_trap_return(ins)   (((ins)&M_RFI) == I_RFI)
+ #define       inst_return(ins)        (((ins)&M_RTS) == I_RTS)
+ #define       inst_call(ins)          (((ins)&M_BC ) == I_BC  || \
+                                ((ins)&M_B  ) == I_B )
+ #define inst_load(ins)                0
+ #define inst_store(ins)               0
+ 
+ #ifdef _KERNEL
+ 
+ void  kdb_kintr __P((void *));
+ int   kdb_trap __P((int, void *));
+ 
+ #endif /* _KERNEL */
+ 
+ #endif        /* _PPC_DB_MACHDEP_H_ */



Home | Main Index | Thread Index | Old Index