Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 21 May 2012 19:43:54 +0000 (12:43 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 21 May 2012 19:43:54 +0000 (12:43 -0700)
Pull m68k updates from Geert Uytterhoeven.

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
  m68k: Setup CROSS_COMPILE at the top
  m68k: Correct the Atari ALLOWINT definition
  m68k/video: Create <asm/vga.h>
  m68k: Make sure {read,write}s[bwl]() are always defined
  m68k/mm: Port OOM changes to do_page_fault()
  scsi/atari: Make more functions static
  scsi/atari: Revive "atascsi=" setup option
  net/ariadne: Improve debug prints
  m68k/atari: Change VME irq numbers from unsigned long to unsigned int
  m68k/amiga: Use arch_initcall() for registering platform devices
  m68k/amiga: Add error checks when registering platform devices
  m68k/amiga: Mark z_dev_present() __init
  m68k: Remove unused MAX_NOINT_IPL definition

14 files changed:
arch/m68k/Makefile
arch/m68k/amiga/platform.c
arch/m68k/atari/ataints.c
arch/m68k/include/asm/atariints.h
arch/m68k/include/asm/entry.h
arch/m68k/include/asm/io_mm.h
arch/m68k/include/asm/vga.h [new file with mode: 0644]
arch/m68k/mm/fault.c
drivers/net/ethernet/amd/ariadne.c
drivers/net/ethernet/amd/atarilance.c
drivers/scsi/atari_scsi.c
drivers/scsi/atari_scsi.h
drivers/usb/musb/musb_io.h
include/video/vga.h

index cf318f2..41b3bc9 100644 (file)
 
 KBUILD_DEFCONFIG := multi_defconfig
 
+ifneq ($(SUBARCH),$(ARCH))
+       ifeq ($(CROSS_COMPILE),)
+               CROSS_COMPILE := $(call cc-cross-prefix, \
+                       m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-)
+       endif
+endif
+
 #
 #      Enable processor type. Ordering of these is important - we want to
 #      use the minimum processor type of the range we support. The logic
@@ -62,12 +69,6 @@ endif
 
 LDFLAGS := -m m68kelf
 KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/m68k/kernel/module.lds
-ifneq ($(SUBARCH),$(ARCH))
-       ifeq ($(CROSS_COMPILE),)
-               CROSS_COMPILE := $(call cc-cross-prefix, \
-                       m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-)
-       endif
-endif
 
 ifdef CONFIG_SUN3
 LDFLAGS_vmlinux = -N
index 7fd8b41..80076d3 100644 (file)
@@ -6,6 +6,7 @@
  * for more details.
  */
 
+#include <linux/err.h>
 #include <linux/init.h>
 #include <linux/platform_device.h>
 #include <linux/zorro.h>
@@ -46,18 +47,25 @@ static const struct resource zorro_resources[] __initconst = {
 
 static int __init amiga_init_bus(void)
 {
+       struct platform_device *pdev;
+       unsigned int n;
+
        if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(ZORRO))
                return -ENODEV;
 
-       platform_device_register_simple("amiga-zorro", -1, zorro_resources,
-                                       AMIGAHW_PRESENT(ZORRO3) ? 4 : 2);
+       n = AMIGAHW_PRESENT(ZORRO3) ? 4 : 2;
+       pdev = platform_device_register_simple("amiga-zorro", -1,
+                                              zorro_resources, n);
+       if (IS_ERR(pdev))
+               return PTR_ERR(pdev);
+
        return 0;
 }
 
 subsys_initcall(amiga_init_bus);
 
 
-static int z_dev_present(zorro_id id)
+static int __init z_dev_present(zorro_id id)
 {
        unsigned int i;
 
@@ -126,72 +134,122 @@ static const struct resource amiga_rtc_resource __initconst = {
 static int __init amiga_init_devices(void)
 {
        struct platform_device *pdev;
+       int error;
 
        if (!MACH_IS_AMIGA)
                return -ENODEV;
 
        /* video hardware */
-       if (AMIGAHW_PRESENT(AMI_VIDEO))
-               platform_device_register_simple("amiga-video", -1, NULL, 0);
+       if (AMIGAHW_PRESENT(AMI_VIDEO)) {
+               pdev = platform_device_register_simple("amiga-video", -1, NULL,
+                                                      0);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
 
        /* sound hardware */
-       if (AMIGAHW_PRESENT(AMI_AUDIO))
-               platform_device_register_simple("amiga-audio", -1, NULL, 0);
+       if (AMIGAHW_PRESENT(AMI_AUDIO)) {
+               pdev = platform_device_register_simple("amiga-audio", -1, NULL,
+                                                      0);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
 
        /* storage interfaces */
-       if (AMIGAHW_PRESENT(AMI_FLOPPY))
-               platform_device_register_simple("amiga-floppy", -1, NULL, 0);
+       if (AMIGAHW_PRESENT(AMI_FLOPPY)) {
+               pdev = platform_device_register_simple("amiga-floppy", -1,
+                                                      NULL, 0);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
-       if (AMIGAHW_PRESENT(A3000_SCSI))
-               platform_device_register_simple("amiga-a3000-scsi", -1,
-                                               &a3000_scsi_resource, 1);
+       if (AMIGAHW_PRESENT(A3000_SCSI)) {
+               pdev = platform_device_register_simple("amiga-a3000-scsi", -1,
+                                                      &a3000_scsi_resource, 1);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
-       if (AMIGAHW_PRESENT(A4000_SCSI))
-               platform_device_register_simple("amiga-a4000t-scsi", -1,
-                                               &a4000t_scsi_resource, 1);
+       if (AMIGAHW_PRESENT(A4000_SCSI)) {
+               pdev = platform_device_register_simple("amiga-a4000t-scsi", -1,
+                                                      &a4000t_scsi_resource,
+                                                      1);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
        if (AMIGAHW_PRESENT(A1200_IDE) ||
            z_dev_present(ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530_SCSI_IDE)) {
                pdev = platform_device_register_simple("amiga-gayle-ide", -1,
                                                       &a1200_ide_resource, 1);
-               platform_device_add_data(pdev, &a1200_ide_pdata,
-                                        sizeof(a1200_ide_pdata));
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+               error = platform_device_add_data(pdev, &a1200_ide_pdata,
+                                                sizeof(a1200_ide_pdata));
+               if (error)
+                       return error;
        }
 
        if (AMIGAHW_PRESENT(A4000_IDE)) {
                pdev = platform_device_register_simple("amiga-gayle-ide", -1,
                                                       &a4000_ide_resource, 1);
-               platform_device_add_data(pdev, &a4000_ide_pdata,
-                                        sizeof(a4000_ide_pdata));
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+               error = platform_device_add_data(pdev, &a4000_ide_pdata,
+                                                sizeof(a4000_ide_pdata));
+               if (error)
+                       return error;
        }
 
 
        /* other I/O hardware */
-       if (AMIGAHW_PRESENT(AMI_KEYBOARD))
-               platform_device_register_simple("amiga-keyboard", -1, NULL, 0);
+       if (AMIGAHW_PRESENT(AMI_KEYBOARD)) {
+               pdev = platform_device_register_simple("amiga-keyboard", -1,
+                                                      NULL, 0);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
-       if (AMIGAHW_PRESENT(AMI_MOUSE))
-               platform_device_register_simple("amiga-mouse", -1, NULL, 0);
+       if (AMIGAHW_PRESENT(AMI_MOUSE)) {
+               pdev = platform_device_register_simple("amiga-mouse", -1, NULL,
+                                                      0);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
-       if (AMIGAHW_PRESENT(AMI_SERIAL))
-               platform_device_register_simple("amiga-serial", -1, NULL, 0);
+       if (AMIGAHW_PRESENT(AMI_SERIAL)) {
+               pdev = platform_device_register_simple("amiga-serial", -1,
+                                                      NULL, 0);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
-       if (AMIGAHW_PRESENT(AMI_PARALLEL))
-               platform_device_register_simple("amiga-parallel", -1, NULL, 0);
+       if (AMIGAHW_PRESENT(AMI_PARALLEL)) {
+               pdev = platform_device_register_simple("amiga-parallel", -1,
+                                                      NULL, 0);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
 
        /* real time clocks */
-       if (AMIGAHW_PRESENT(A2000_CLK))
-               platform_device_register_simple("rtc-msm6242", -1,
-                                               &amiga_rtc_resource, 1);
+       if (AMIGAHW_PRESENT(A2000_CLK)) {
+               pdev = platform_device_register_simple("rtc-msm6242", -1,
+                                                      &amiga_rtc_resource, 1);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
-       if (AMIGAHW_PRESENT(A3000_CLK))
-               platform_device_register_simple("rtc-rp5c01", -1,
-                                               &amiga_rtc_resource, 1);
+       if (AMIGAHW_PRESENT(A3000_CLK)) {
+               pdev = platform_device_register_simple("rtc-rp5c01", -1,
+                                                      &amiga_rtc_resource, 1);
+               if (IS_ERR(pdev))
+                       return PTR_ERR(pdev);
+       }
 
        return 0;
 }
 
-device_initcall(amiga_init_devices);
+arch_initcall(amiga_init_devices);
index 783d8f0..3f41092 100644 (file)
@@ -206,7 +206,7 @@ void __init atari_init_IRQ(void)
  * hardware with a programmable int vector (probably a VME board).
  */
 
-unsigned long atari_register_vme_int(void)
+unsigned int atari_register_vme_int(void)
 {
        int i;
 
@@ -223,7 +223,7 @@ unsigned long atari_register_vme_int(void)
 EXPORT_SYMBOL(atari_register_vme_int);
 
 
-void atari_unregister_vme_int(unsigned long irq)
+void atari_unregister_vme_int(unsigned int irq)
 {
        if (irq >= VME_SOURCE_BASE && irq < VME_SOURCE_BASE + VME_MAX_SOURCES) {
                irq -= VME_SOURCE_BASE;
index 656bbbf..5fc13bd 100644 (file)
@@ -198,7 +198,7 @@ static inline int atari_irq_pending( unsigned irq )
        return( get_mfp_bit( irq, MFP_PENDING ) );
 }
 
-unsigned long atari_register_vme_int( void );
-void atari_unregister_vme_int( unsigned long );
+unsigned int atari_register_vme_int(void);
+void atari_unregister_vme_int(unsigned int);
 
 #endif /* linux/atariints.h */
index 622138d..d7de0f1 100644 (file)
 
 /* the following macro is used when enabling interrupts */
 #if defined(MACH_ATARI_ONLY)
-       /* block out HSYNC on the atari */
-#define ALLOWINT       (~0x400)
-#define        MAX_NOINT_IPL   3
+       /* block out HSYNC = ipl 2 on the atari */
+#define ALLOWINT       (~0x500)
 #else
        /* portable version */
 #define ALLOWINT       (~0x700)
-#define        MAX_NOINT_IPL   0
 #endif /* machine compilation types */
 
 #ifdef __ASSEMBLY__
index 0fb3468..fa4324b 100644 (file)
@@ -278,6 +278,13 @@ static inline void isa_delay(void)
 #define readl(addr)      in_le32(addr)
 #define writel(val,addr) out_le32((addr),(val))
 
+#define readsb(port, buf, nr)     raw_insb((port), (u8 *)(buf), (nr))
+#define readsw(port, buf, nr)     raw_insw((port), (u16 *)(buf), (nr))
+#define readsl(port, buf, nr)     raw_insl((port), (u32 *)(buf), (nr))
+#define writesb(port, buf, nr)    raw_outsb((port), (u8 *)(buf), (nr))
+#define writesw(port, buf, nr)    raw_outsw((port), (u16 *)(buf), (nr))
+#define writesl(port, buf, nr)    raw_outsl((port), (u32 *)(buf), (nr))
+
 #define mmiowb()
 
 static inline void __iomem *ioremap(unsigned long physaddr, unsigned long size)
diff --git a/arch/m68k/include/asm/vga.h b/arch/m68k/include/asm/vga.h
new file mode 100644 (file)
index 0000000..d3aa140
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef _ASM_M68K_VGA_H
+#define _ASM_M68K_VGA_H
+
+#include <asm/raw_io.h>
+
+/*
+ * FIXME
+ * Ugh, we don't have PCI space, so map readb() and friends to use raw I/O
+ * accessors, which are identical to the z_*() Zorro bus accessors.
+ * This should make cirrusfb work again on Amiga
+ */
+#undef inb_p
+#undef inw_p
+#undef outb_p
+#undef outw
+#undef readb
+#undef writeb
+#undef writew
+#define inb_p(port)            0
+#define inw_p(port)            0
+#define outb_p(port, val)      do { } while (0)
+#define outw(port, val)                do { } while (0)
+#define readb                  raw_inb
+#define writeb                 raw_outb
+#define writew                 raw_outw
+
+#endif /* _ASM_M68K_VGA_H */
index 6b020a8..aeebbb7 100644 (file)
@@ -72,7 +72,8 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
 {
        struct mm_struct *mm = current->mm;
        struct vm_area_struct * vma;
-       int write, fault;
+       int fault;
+       unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
 
 #ifdef DEBUG
        printk ("do page fault:\nregs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld, %p\n",
@@ -87,6 +88,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
        if (in_atomic() || !mm)
                goto no_context;
 
+retry:
        down_read(&mm->mmap_sem);
 
        vma = find_vma(mm, address);
@@ -117,14 +119,13 @@ good_area:
 #ifdef DEBUG
        printk("do_page_fault: good_area\n");
 #endif
-       write = 0;
        switch (error_code & 3) {
                default:        /* 3: write, present */
                        /* fall through */
                case 2:         /* write, not present */
                        if (!(vma->vm_flags & VM_WRITE))
                                goto acc_err;
-                       write++;
+                       flags |= FAULT_FLAG_WRITE;
                        break;
                case 1:         /* read, present */
                        goto acc_err;
@@ -139,10 +140,14 @@ good_area:
         * the fault.
         */
 
-       fault = handle_mm_fault(mm, vma, address, write ? FAULT_FLAG_WRITE : 0);
+       fault = handle_mm_fault(mm, vma, address, flags);
 #ifdef DEBUG
        printk("handle_mm_fault returns %d\n",fault);
 #endif
+
+       if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current))
+               return 0;
+
        if (unlikely(fault & VM_FAULT_ERROR)) {
                if (fault & VM_FAULT_OOM)
                        goto out_of_memory;
@@ -150,10 +155,31 @@ good_area:
                        goto bus_err;
                BUG();
        }
-       if (fault & VM_FAULT_MAJOR)
-               current->maj_flt++;
-       else
-               current->min_flt++;
+
+       /*
+        * Major/minor page fault accounting is only done on the
+        * initial attempt. If we go through a retry, it is extremely
+        * likely that the page will be found in page cache at that point.
+        */
+       if (flags & FAULT_FLAG_ALLOW_RETRY) {
+               if (fault & VM_FAULT_MAJOR)
+                       current->maj_flt++;
+               else
+                       current->min_flt++;
+               if (fault & VM_FAULT_RETRY) {
+                       /* Clear FAULT_FLAG_ALLOW_RETRY to avoid any risk
+                        * of starvation. */
+                       flags &= ~FAULT_FLAG_ALLOW_RETRY;
+
+                       /*
+                        * No need to up_read(&mm->mmap_sem) as we would
+                        * have already released it in __lock_page_or_retry
+                        * in mm/filemap.c.
+                        */
+
+                       goto retry;
+               }
+       }
 
        up_read(&mm->mmap_sem);
        return 0;
index f4c228e..f2958df 100644 (file)
@@ -213,10 +213,10 @@ static int ariadne_rx(struct net_device *dev)
                                                (const void *)priv->rx_buff[entry],
                                                pkt_len);
                        skb->protocol = eth_type_trans(skb, dev);
-                       netdev_dbg(dev, "RX pkt type 0x%04x from %pM to %pM data 0x%08x len %d\n",
+                       netdev_dbg(dev, "RX pkt type 0x%04x from %pM to %pM data %p len %u\n",
                                   ((u_short *)skb->data)[6],
                                   skb->data + 6, skb->data,
-                                  (int)skb->data, (int)skb->len);
+                                  skb->data, skb->len);
 
                        netif_rx(skb);
                        dev->stats.rx_packets++;
@@ -566,10 +566,10 @@ static netdev_tx_t ariadne_start_xmit(struct sk_buff *skb,
 
        /* Fill in a Tx ring entry */
 
-       netdev_dbg(dev, "TX pkt type 0x%04x from %pM to %pM data 0x%08x len %d\n",
+       netdev_dbg(dev, "TX pkt type 0x%04x from %pM to %pM data %p len %u\n",
                   ((u_short *)skb->data)[6],
                   skb->data + 6, skb->data,
-                  (int)skb->data, (int)skb->len);
+                  skb->data, skb->len);
 
        local_irq_save(flags);
 
index 70ed79c..84219df 100644 (file)
@@ -558,21 +558,18 @@ static unsigned long __init lance_probe1( struct net_device *dev,
                        printk( "Lance: request for irq %d failed\n", IRQ_AUTO_5 );
                        return 0;
                }
-               dev->irq = (unsigned short)IRQ_AUTO_5;
+               dev->irq = IRQ_AUTO_5;
        }
        else {
-               /* For VME-RieblCards, request a free VME int;
-                * (This must be unsigned long, since dev->irq is short and the
-                * IRQ_MACHSPEC bit would be cut off...)
-                */
-               unsigned long irq = atari_register_vme_int();
+               /* For VME-RieblCards, request a free VME int */
+               unsigned int irq = atari_register_vme_int();
                if (!irq) {
                        printk( "Lance: request for VME interrupt failed\n" );
                        return 0;
                }
                if (request_irq(irq, lance_interrupt, IRQ_TYPE_PRIO,
                            "Riebl-VME Ethernet", dev)) {
-                       printk( "Lance: request for irq %ld failed\n", irq );
+                       printk( "Lance: request for irq %u failed\n", irq );
                        return 0;
                }
                dev->irq = irq;
index 04a154f..df740cb 100644 (file)
@@ -572,7 +572,7 @@ static void falcon_get_lock(void)
 }
 
 
-int __init atari_scsi_detect(struct scsi_host_template *host)
+static int __init atari_scsi_detect(struct scsi_host_template *host)
 {
        static int called = 0;
        struct Scsi_Host *instance;
@@ -724,7 +724,7 @@ int __init atari_scsi_detect(struct scsi_host_template *host)
        return 1;
 }
 
-int atari_scsi_release(struct Scsi_Host *sh)
+static int atari_scsi_release(struct Scsi_Host *sh)
 {
        if (IS_A_TT())
                free_irq(IRQ_TT_MFP_SCSI, sh);
@@ -734,17 +734,21 @@ int atari_scsi_release(struct Scsi_Host *sh)
        return 1;
 }
 
-void __init atari_scsi_setup(char *str, int *ints)
+#ifndef MODULE
+static int __init atari_scsi_setup(char *str)
 {
        /* Format of atascsi parameter is:
         *   atascsi=<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags>
         * Defaults depend on TT or Falcon, hostid determined at run time.
         * Negative values mean don't change.
         */
+       int ints[6];
+
+       get_options(str, ARRAY_SIZE(ints), ints);
 
        if (ints[0] < 1) {
                printk("atari_scsi_setup: no arguments!\n");
-               return;
+               return 0;
        }
 
        if (ints[0] >= 1) {
@@ -777,9 +781,14 @@ void __init atari_scsi_setup(char *str, int *ints)
                        setup_use_tagged_queuing = !!ints[5];
        }
 #endif
+
+       return 1;
 }
 
-int atari_scsi_bus_reset(Scsi_Cmnd *cmd)
+__setup("atascsi=", atari_scsi_setup);
+#endif /* !MODULE */
+
+static int atari_scsi_bus_reset(Scsi_Cmnd *cmd)
 {
        int rv;
        struct NCR5380_hostdata *hostdata =
@@ -852,7 +861,7 @@ static void __init atari_scsi_reset_boot(void)
 #endif
 
 
-const char *atari_scsi_info(struct Scsi_Host *host)
+static const char *atari_scsi_info(struct Scsi_Host *host)
 {
        /* atari_scsi_detect() is verbose enough... */
        static const char string[] = "Atari native SCSI";
@@ -862,8 +871,9 @@ const char *atari_scsi_info(struct Scsi_Host *host)
 
 #if defined(REAL_DMA)
 
-unsigned long atari_scsi_dma_setup(struct Scsi_Host *instance, void *data,
-                                  unsigned long count, int dir)
+static unsigned long atari_scsi_dma_setup(struct Scsi_Host *instance,
+                                         void *data, unsigned long count,
+                                         int dir)
 {
        unsigned long addr = virt_to_phys(data);
 
index efadb8d..bd52df7 100644 (file)
 /* (I_HAVE_OVERRUNS stuff removed) */
 
 #ifndef ASM
-int atari_scsi_detect (struct scsi_host_template *);
-const char *atari_scsi_info (struct Scsi_Host *);
-int atari_scsi_reset (Scsi_Cmnd *, unsigned int);
-int atari_scsi_release (struct Scsi_Host *);
-
 /* The values for CMD_PER_LUN and CAN_QUEUE are somehow arbitrary. Higher
  * values should work, too; try it! (but cmd_per_lun costs memory!) */
 
index 1d5eda2..f7c1c8e 100644 (file)
@@ -40,7 +40,7 @@
 #if !defined(CONFIG_ARM) && !defined(CONFIG_SUPERH) \
        && !defined(CONFIG_AVR32) && !defined(CONFIG_PPC32) \
        && !defined(CONFIG_PPC64) && !defined(CONFIG_BLACKFIN) \
-       && !defined(CONFIG_MIPS)
+       && !defined(CONFIG_MIPS) && !defined(CONFIG_M68K)
 static inline void readsl(const void __iomem *addr, void *buf, int len)
        { insl((unsigned long)addr, buf, len); }
 static inline void readsw(const void __iomem *addr, void *buf, int len)
index 2b8691f..cac567f 100644 (file)
 
 #include <linux/types.h>
 #include <asm/io.h>
-#ifndef CONFIG_AMIGA
 #include <asm/vga.h>
-#else
-/*
- * FIXME
- * Ugh, we don't have PCI space, so map readb() and friends to use Zorro space
- * for MMIO accesses. This should make cirrusfb work again on Amiga
- */
-#undef inb_p
-#undef inw_p
-#undef outb_p
-#undef outw
-#undef readb
-#undef writeb
-#undef writew
-#define inb_p(port)    0
-#define inw_p(port)    0
-#define outb_p(port, val)      do { } while (0)
-#define outw(port, val)                do { } while (0)
-#define readb          z_readb
-#define writeb         z_writeb
-#define writew         z_writew
-#endif
 #include <asm/byteorder.h>