__asm__ __volatile__ (                          \
        "dmtc2 %[rt],0x4047"                            \
        :                                               \
+       : [rt] "d" (cpu_to_be64(value)));               \
+ } while (0)
+ 
+ /*
+  * The value is the final block dword (64-bit).
+  */
+ #define octeon_sha1_start(value)                      \
+ do {                                                  \
+       __asm__ __volatile__ (                          \
+       "dmtc2 %[rt],0x4057"                            \
+       :                                               \
+       : [rt] "d" (value));                            \
+ } while (0)
+ 
++/*
++ * The value is the final block dword (64-bit).
++ */
++#define octeon_sha256_start(value)                    \
++do {                                                  \
++      __asm__ __volatile__ (                          \
++      "dmtc2 %[rt],0x404f"                            \
++      :                                               \
++      : [rt] "d" (value));                            \
++} while (0)
++
++/*
++ * Macros needed to implement SHA512:
++ */
++
++/*
++ * The index can be 0-7.
++ */
++#define write_octeon_64bit_hash_sha512(value, index)  \
++do {                                                  \
++      __asm__ __volatile__ (                          \
++      "dmtc2 %[rt],0x0250+" STR(index)                \
++      :                                               \
++      : [rt] "d" (value));                            \
++} while (0)
++
++/*
++ * The index can be 0-7.
++ */
++#define read_octeon_64bit_hash_sha512(index)          \
++({                                                    \
++      u64 __value;                                    \
++                                                      \
++      __asm__ __volatile__ (                          \
++      "dmfc2 %[rt],0x0250+" STR(index)                \
++      : [rt] "=d" (__value)                           \
++      : );                                            \
++                                                      \
++      __value;                                        \
++})
++
++/*
++ * The index can be 0-14.
++ */
++#define write_octeon_64bit_block_sha512(value, index) \
++do {                                                  \
++      __asm__ __volatile__ (                          \
++      "dmtc2 %[rt],0x0240+" STR(index)                \
++      :                                               \
++      : [rt] "d" (value));                            \
++} while (0)
++
++/*
++ * The value is the final block word (64-bit).
++ */
++#define octeon_sha512_start(value)                    \
++do {                                                  \
++      __asm__ __volatile__ (                          \
++      "dmtc2 %[rt],0x424f"                            \
++      :                                               \
 +      : [rt] "d" (value));                            \
 +} while (0)
 +
 +/*
 + * The value is the final block dword (64-bit).
 + */
 +#define octeon_sha1_start(value)                      \
 +do {                                                  \
 +      __asm__ __volatile__ (                          \
 +      "dmtc2 %[rt],0x4057"                            \
 +      :                                               \
 +      : [rt] "d" (value));                            \
 +} while (0)
 +
  /*
   * The value is the final block dword (64-bit).
   */
 
  
        pci_add_resource_offset(&resources,
                                hose->mem_resource, hose->mem_offset);
-       pci_add_resource_offset(&resources, hose->io_resource, hose->io_offset);
+       pci_add_resource_offset(&resources,
+                               hose->io_resource, hose->io_offset);
+       pci_add_resource_offset(&resources,
+                               hose->busn_resource, hose->busn_offset);
        bus = pci_scan_root_bus(NULL, next_busno, hose->pci_ops, hose,
                                &resources);
 -      if (!bus)
 -              pci_free_resource_list(&resources);
 -
        hose->bus = bus;
  
        need_domain_info = need_domain_info || hose->index;
 
  obj-$(CONFIG_XTENSA)                  += irq-xtensa-pic.o
  obj-$(CONFIG_XTENSA_MX)                       += irq-xtensa-mx.o
  obj-$(CONFIG_IRQ_CROSSBAR)            += irq-crossbar.o
 +obj-$(CONFIG_SOC_VF610)                       += irq-vf610-mscm-ir.o
+ obj-$(CONFIG_BCM7038_L1_IRQ)          += irq-bcm7038-l1.o
  obj-$(CONFIG_BCM7120_L2_IRQ)          += irq-bcm7120-l2.o
  obj-$(CONFIG_BRCMSTB_L2_IRQ)          += irq-brcmstb-l2.o
  obj-$(CONFIG_KEYSTONE_IRQ)            += irq-keystone.o
 
  #include <linux/etherdevice.h>
  #include <linux/mii.h>
  #include <linux/phy.h>
 +#include <linux/phy_fixed.h>
  #include <linux/interrupt.h>
  #include <linux/dma-mapping.h>
- #include <bcm47xx_nvram.h>
+ #include <linux/bcm47xx_nvram.h>
  
  static const struct bcma_device_id bgmac_bcma_tbl[] = {
        BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_4706_MAC_GBIT, BCMA_ANY_REV, BCMA_ANY_CLASS),