]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge master.kernel.org:/home/rmk/linux-2.6-serial
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Fri, 24 Jun 2005 22:33:30 +0000 (15:33 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Fri, 24 Jun 2005 22:33:30 +0000 (15:33 -0700)
15 files changed:
arch/arm/mach-ixp2000/core.c
arch/arm/mach-ixp4xx/common.c
arch/arm/mm/proc-v6.S
drivers/i2c/busses/i2c-ixp2000.c
fs/qnx4/dir.c
fs/qnx4/inode.c
include/asm-arm/arch-ixp2000/gpio.h
include/asm-arm/arch-ixp2000/io.h
include/asm-arm/arch-ixp2000/platform.h
include/asm-arm/arch-ixp4xx/debug-macro.S
include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
include/asm-arm/io.h
include/asm-i386/string.h
include/linux/qnx4_fs.h
include/linux/qnxtypes.h

index fc0555596d6d70c82a0c3cefb603efc9e574d2e7..0ee34acb8d7b80742dc4588f093ce645db87cefa 100644 (file)
@@ -40,6 +40,8 @@
 #include <asm/mach/time.h>
 #include <asm/mach/irq.h>
 
+#include <asm/arch/gpio.h>
+
 static DEFINE_SPINLOCK(ixp2000_slowport_lock);
 static unsigned long ixp2000_slowport_irq_flags;
 
@@ -179,7 +181,7 @@ static int ixp2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 
        /* clear timer 1 */
        ixp2000_reg_write(IXP2000_T1_CLR, 1);
-       
+
        while ((next_jiffy_time - *missing_jiffy_timer_csr) > ticks_per_jiffy) {
                timer_tick(regs);
                next_jiffy_time -= ticks_per_jiffy;
@@ -238,35 +240,40 @@ void __init ixp2000_init_time(unsigned long tick_rate)
 /*************************************************************************
  * GPIO helpers
  *************************************************************************/
-static unsigned long GPIO_IRQ_rising_edge;
 static unsigned long GPIO_IRQ_falling_edge;
+static unsigned long GPIO_IRQ_rising_edge;
 static unsigned long GPIO_IRQ_level_low;
 static unsigned long GPIO_IRQ_level_high;
 
-void gpio_line_config(int line, int style)
+static void update_gpio_int_csrs(void)
+{
+       ixp2000_reg_write(IXP2000_GPIO_FEDR, GPIO_IRQ_falling_edge);
+       ixp2000_reg_write(IXP2000_GPIO_REDR, GPIO_IRQ_rising_edge);
+       ixp2000_reg_write(IXP2000_GPIO_LSLR, GPIO_IRQ_level_low);
+       ixp2000_reg_write(IXP2000_GPIO_LSHR, GPIO_IRQ_level_high);
+}
+
+void gpio_line_config(int line, int direction)
 {
        unsigned long flags;
 
        local_irq_save(flags);
+       if (direction == GPIO_OUT) {
+               irq_desc[line + IRQ_IXP2000_GPIO0].valid = 0;
 
-       if(style == GPIO_OUT) {
                /* if it's an output, it ain't an interrupt anymore */
-               ixp2000_reg_write(IXP2000_GPIO_PDSR, (1 << line));
                GPIO_IRQ_falling_edge &= ~(1 << line);
                GPIO_IRQ_rising_edge &= ~(1 << line);
                GPIO_IRQ_level_low &= ~(1 << line);
                GPIO_IRQ_level_high &= ~(1 << line);
-               ixp2000_reg_write(IXP2000_GPIO_FEDR, GPIO_IRQ_falling_edge);
-               ixp2000_reg_write(IXP2000_GPIO_REDR, GPIO_IRQ_rising_edge);
-               ixp2000_reg_write(IXP2000_GPIO_LSHR, GPIO_IRQ_level_high);
-               ixp2000_reg_write(IXP2000_GPIO_LSLR, GPIO_IRQ_level_low);
-               irq_desc[line+IRQ_IXP2000_GPIO0].valid = 0;
-       } else if(style == GPIO_IN) {
-               ixp2000_reg_write(IXP2000_GPIO_PDCR, (1 << line));
+               update_gpio_int_csrs();
+
+               ixp2000_reg_write(IXP2000_GPIO_PDSR, 1 << line);
+       } else if (direction == GPIO_IN) {
+               ixp2000_reg_write(IXP2000_GPIO_PDCR, 1 << line);
        }
-               
        local_irq_restore(flags);
-}      
+}
 
 
 /*************************************************************************
@@ -285,9 +292,50 @@ static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc, str
        }
 }
 
+static int ixp2000_GPIO_irq_type(unsigned int irq, unsigned int type)
+{
+       int line = irq - IRQ_IXP2000_GPIO0;
+
+       /*
+        * First, configure this GPIO line as an input.
+        */
+       ixp2000_reg_write(IXP2000_GPIO_PDCR, 1 << line);
+
+       /*
+        * Then, set the proper trigger type.
+        */
+       if (type & IRQT_FALLING)
+               GPIO_IRQ_falling_edge |= 1 << line;
+       else
+               GPIO_IRQ_falling_edge &= ~(1 << line);
+       if (type & IRQT_RISING)
+               GPIO_IRQ_rising_edge |= 1 << line;
+       else
+               GPIO_IRQ_rising_edge &= ~(1 << line);
+       if (type & IRQT_LOW)
+               GPIO_IRQ_level_low |= 1 << line;
+       else
+               GPIO_IRQ_level_low &= ~(1 << line);
+       if (type & IRQT_HIGH)
+               GPIO_IRQ_level_high |= 1 << line;
+       else
+               GPIO_IRQ_level_high &= ~(1 << line);
+       update_gpio_int_csrs();
+
+       /*
+        * Finally, mark the corresponding IRQ as valid.
+        */
+       irq_desc[irq].valid = 1;
+
+       return 0;
+}
+
 static void ixp2000_GPIO_irq_mask_ack(unsigned int irq)
 {
        ixp2000_reg_write(IXP2000_GPIO_INCR, (1 << (irq - IRQ_IXP2000_GPIO0)));
+
+       ixp2000_reg_write(IXP2000_GPIO_EDSR, (1 << (irq - IRQ_IXP2000_GPIO0)));
+       ixp2000_reg_write(IXP2000_GPIO_LDSR, (1 << (irq - IRQ_IXP2000_GPIO0)));
        ixp2000_reg_write(IXP2000_GPIO_INST, (1 << (irq - IRQ_IXP2000_GPIO0)));
 }
 
@@ -302,6 +350,7 @@ static void ixp2000_GPIO_irq_unmask(unsigned int irq)
 }
 
 static struct irqchip ixp2000_GPIO_irq_chip = {
+       .type   = ixp2000_GPIO_irq_type,
        .ack    = ixp2000_GPIO_irq_mask_ack,
        .mask   = ixp2000_GPIO_irq_mask,
        .unmask = ixp2000_GPIO_irq_unmask
@@ -338,7 +387,7 @@ static void ixp2000_irq_mask(unsigned int irq)
 
 static void ixp2000_irq_unmask(unsigned int irq)
 {
-       ixp2000_reg_write(IXP2000_IRQ_ENABLE_SET,  (1 << irq));
+       ixp2000_reg_write(IXP2000_IRQ_ENABLE_SET, (1 << irq));
 }
 
 static struct irqchip ixp2000_irq_chip = {
@@ -375,16 +424,16 @@ void __init ixp2000_init_irq(void)
         * our mask/unmask code much simpler.
         */
        for (irq = IRQ_IXP2000_SOFT_INT; irq <= IRQ_IXP2000_THDB3; irq++) {
-               if((1 << irq) & IXP2000_VALID_IRQ_MASK) {
+               if ((1 << irq) & IXP2000_VALID_IRQ_MASK) {
                        set_irq_chip(irq, &ixp2000_irq_chip);
                        set_irq_handler(irq, do_level_IRQ);
                        set_irq_flags(irq, IRQF_VALID);
                } else set_irq_flags(irq, 0);
        }
-       
+
        /*
         * GPIO IRQs are invalid until someone sets the interrupt mode
-        * by calling gpio_line_set();
+        * by calling set_irq_type().
         */
        for (irq = IRQ_IXP2000_GPIO0; irq <= IRQ_IXP2000_GPIO7; irq++) {
                set_irq_chip(irq, &ixp2000_GPIO_irq_chip);
index 267ba02d77dc770a5ec82d5783d42321bc4e25fb..f39e8408488f56d9cf3139c5dc93260f70ab1442 100644 (file)
@@ -141,7 +141,15 @@ static struct map_desc ixp4xx_io_desc[] __initdata = {
                .physical       = IXP4XX_PCI_CFG_BASE_PHYS,
                .length         = IXP4XX_PCI_CFG_REGION_SIZE,
                .type           = MT_DEVICE
+       },
+#ifdef CONFIG_DEBUG_LL
+       {       /* Debug UART mapping */
+               .virtual        = IXP4XX_DEBUG_UART_BASE_VIRT,
+               .physical       = IXP4XX_DEBUG_UART_BASE_PHYS,
+               .length         = IXP4XX_DEBUG_UART_REGION_SIZE,
+               .type           = MT_DEVICE
        }
+#endif
 };
 
 void __init ixp4xx_map_io(void)
index 0aa73d4147838b07f41cac3f09ed0011efa03bd5..e3d8510f43400b9c66b85bf8f7995b5653050409 100644 (file)
@@ -132,8 +132,8 @@ ENTRY(cpu_v6_switch_mm)
  *       100x   1   0   1      r/o     no acc
  *       10x0   1   0   1      r/o     no acc
  *       1011   0   0   1      r/w     no acc
- *       110x   1   1   0      r/o     r/o
- *       11x0   1   1   0      r/o     r/o
+ *       110x   0   1   0      r/w     r/o
+ *       11x0   0   1   0      r/w     r/o
  *       1111   0   1   1      r/w     r/w
  */
 ENTRY(cpu_v6_set_pte)
@@ -150,7 +150,7 @@ ENTRY(cpu_v6_set_pte)
        tst     r1, #L_PTE_USER
        orrne   r2, r2, #AP1 | nG
        tstne   r2, #APX
-       eorne   r2, r2, #AP0
+       bicne   r2, r2, #APX | AP0
 
        tst     r1, #L_PTE_YOUNG
        biceq   r2, r2, #APX | AP1 | AP0
index ec943cad23147524c917c1fe5d93de97ad6e90c6..1956af382cd896d8421db7373c2d7c395d30a8ad 100644 (file)
@@ -33,7 +33,8 @@
 #include <linux/i2c.h>
 #include <linux/i2c-algo-bit.h>
 
-#include <asm/hardware.h>      /* Pick up IXP42000-specific bits */
+#include <asm/hardware.h>      /* Pick up IXP2000-specific bits */
+#include <asm/arch/gpio.h>
 
 static inline int ixp2000_scl_pin(void *data)
 {
index cd66147cca04c902331f6807b25b6989b8a6b3fb..7a8f5595c26fea5898f1dfe246c8b86025b3e72a 100644 (file)
@@ -61,7 +61,7 @@ static int qnx4_readdir(struct file *filp, void *dirent, filldir_t filldir)
                                                ino = blknum * QNX4_INODES_PER_BLOCK + ix - 1;
                                        else {
                                                le  = (struct qnx4_link_info*)de;
-                                               ino = ( le->dl_inode_blk - 1 ) *
+                                               ino = ( le32_to_cpu(le->dl_inode_blk) - 1 ) *
                                                        QNX4_INODES_PER_BLOCK +
                                                        le->dl_inode_ndx;
                                        }
index aa92d6b76a9af185e2f6a375d8140cfab7a77bfc..b79162a35478ce46fae25af21067844b0fabfd4b 100644 (file)
@@ -236,7 +236,7 @@ unsigned long qnx4_block_map( struct inode *inode, long iblock )
        struct buffer_head *bh = NULL;
        struct qnx4_xblk *xblk = NULL;
        struct qnx4_inode_entry *qnx4_inode = qnx4_raw_inode(inode);
-       qnx4_nxtnt_t nxtnt = le16_to_cpu(qnx4_inode->di_num_xtnts);
+       u16 nxtnt = le16_to_cpu(qnx4_inode->di_num_xtnts);
 
        if ( iblock < le32_to_cpu(qnx4_inode->di_first_xtnt.xtnt_size) ) {
                // iblock is in the first extent. This is easy.
@@ -372,7 +372,7 @@ static int qnx4_fill_super(struct super_block *s, void *data, int silent)
                printk("qnx4: unable to read the superblock\n");
                goto outnobh;
        }
-       if ( le32_to_cpu( *(__u32*)bh->b_data ) != QNX4_SUPER_MAGIC ) {
+       if ( le32_to_cpup((__le32*) bh->b_data) != QNX4_SUPER_MAGIC ) {
                if (!silent)
                        printk("qnx4: wrong fsid in superblock.\n");
                goto out;
index 84634af5cc644ff1ef8d40ba298e17d6746eee17..03cbbe1fd9d8fe0f47874af3f9e43ffc935feb7a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * include/asm-arm/arch-ixp2000/ixp2000-gpio.h
+ * include/asm-arm/arch-ixp2000/gpio.h
  *
  * Copyright (C) 2002 Intel Corporation.
  *
  * Use this instead of directly setting the GPIO registers.
  * GPIOs may also be used as GPIOs (e.g. for emulating i2c/smb)
  */
-#ifndef _ASM_ARCH_IXP2000_GPIO_H_
-#define _ASM_ARCH_IXP2000_GPIO_H_
+#ifndef __ASM_ARCH_GPIO_H
+#define __ASM_ARCH_GPIO_H
 
 #ifndef __ASSEMBLY__
-#define GPIO_OUT                       0x0
-#define GPIO_IN                                0x80
+
+#define GPIO_IN                                0
+#define GPIO_OUT                       1
 
 #define IXP2000_GPIO_LOW               0
 #define IXP2000_GPIO_HIGH              1
 
-#define GPIO_NO_EDGES                  0
-#define GPIO_FALLING_EDGE              1
-#define GPIO_RISING_EDGE               2
-#define GPIO_BOTH_EDGES                3
-#define GPIO_LEVEL_LOW                 4
-#define GPIO_LEVEL_HIGH                8
-
-extern void set_GPIO_IRQ_edge(int gpio_nr, int edge);
-extern void set_GPIO_IRQ_level(int gpio_nr, int level);
-extern void gpio_line_config(int line, int style);
+extern void gpio_line_config(int line, int direction);
 
 static inline int gpio_line_get(int line)
 {
@@ -45,11 +37,12 @@ static inline int gpio_line_get(int line)
 static inline void gpio_line_set(int line, int value)
 {
        if (value == IXP2000_GPIO_HIGH) {
-               ixp_reg_write(IXP2000_GPIO_POSR, BIT(line));
-       } else if (value == IXP2000_GPIO_LOW)
-               ixp_reg_write(IXP2000_GPIO_POCR, BIT(line));
+               ixp2000_reg_write(IXP2000_GPIO_POSR, 1 << line);
+       } else if (value == IXP2000_GPIO_LOW) {
+               ixp2000_reg_write(IXP2000_GPIO_POCR, 1 << line);
+       }
 }
 
 #endif /* !__ASSEMBLY__ */
-#endif /* ASM_ARCH_IXP2000_GPIO_H_ */
 
+#endif /* ASM_ARCH_IXP2000_GPIO_H_ */
index 083462668e184a8953ef49ed8eb9753c38d35d24..5e56b47446e0c4a2ba6e8fe9ea1d7a5dd3ed9e02 100644 (file)
@@ -27,8 +27,8 @@
  * since that isn't available on the A? revisions we just keep doing
  * things manually.
  */
-#define alignb(addr)           (void __iomem *)((unsigned long)addr ^ 3)
-#define alignw(addr)           (void __iomem *)((unsigned long)addr ^ 2)
+#define alignb(addr)           (void __iomem *)((unsigned long)(addr) ^ 3)
+#define alignw(addr)           (void __iomem *)((unsigned long)(addr) ^ 2)
 
 #define outb(v,p)              __raw_writeb((v),alignb(___io(p)))
 #define outw(v,p)              __raw_writew((v),alignw(___io(p)))
 #define insw(p,d,l)            __raw_readsw(alignw(___io(p)),d,l)
 #define insl(p,d,l)            __raw_readsl(___io(p),d,l)
 
+#define __is_io_address(p)     ((((unsigned long)(p)) & ~(IXP2000_PCI_IO_SIZE - 1)) == IXP2000_PCI_IO_VIRT_BASE)
+
+#define ioread8(p)                                             \
+       ({                                                      \
+               unsigned int __v;                               \
+                                                               \
+               if (__is_io_address(p)) {                       \
+                       __v = __raw_readb(alignb(p));           \
+               } else {                                        \
+                       __v = __raw_readb(p);                   \
+               }                                               \
+                                                               \
+               __v;                                            \
+       })                                                      \
+
+#define ioread16(p)                                            \
+       ({                                                      \
+               unsigned int __v;                               \
+                                                               \
+               if (__is_io_address(p)) {                       \
+                       __v = __raw_readw(alignw(p));           \
+               } else {                                        \
+                       __v = le16_to_cpu(__raw_readw(p));      \
+               }                                               \
+                                                               \
+               __v;                                            \
+       })
+
+#define ioread32(p)                                            \
+       ({                                                      \
+               unsigned int __v;                               \
+                                                               \
+               if (__is_io_address(p)) {                       \
+                       __v = __raw_readl(p);                   \
+               } else {                                        \
+                       __v = le32_to_cpu(__raw_readl(p));      \
+               }                                               \
+                                                               \
+                __v;                                           \
+       })
+
+#define iowrite8(v,p)                                          \
+       ({                                                      \
+               if (__is_io_address(p)) {                       \
+                       __raw_writeb((v), alignb(p));           \
+               } else {                                        \
+                       __raw_writeb((v), p);                   \
+               }                                               \
+       })
+
+#define iowrite16(v,p)                                         \
+       ({                                                      \
+               if (__is_io_address(p)) {                       \
+                       __raw_writew((v), alignw(p));           \
+               } else {                                        \
+                       __raw_writew(cpu_to_le16(v), p);        \
+               }                                               \
+       })
+
+#define iowrite32(v,p)                                         \
+       ({                                                      \
+               if (__is_io_address(p)) {                       \
+                       __raw_writel((v), p);                   \
+               } else {                                        \
+                       __raw_writel(cpu_to_le32(v), p);        \
+               }                                               \
+       })
+
+#define ioport_map(port, nr)   ___io(port)
+
+#define ioport_unmap(addr)
+
 
 #ifdef CONFIG_ARCH_IXDP2X01
 /*
index 901bba6d02b47bd3d2891b3a39804cbc31182d08..52ded516ea5caed2d85aff56000d2985af06daf8 100644 (file)
@@ -138,30 +138,10 @@ struct ixp2000_flash_data {
        unsigned long (*bank_setup)(unsigned long);
 };
 
-/*
- * GPIO helper functions
- */
-#define        GPIO_IN         0
-#define        GPIO_OUT        1
-
-extern void gpio_line_config(int line, int style);
-
-static inline int gpio_line_get(int line)
-{
-       return (((*IXP2000_GPIO_PLR) >> line) & 1);
-}
-
-static inline void gpio_line_set(int line, int value)
-{
-       if (value) 
-               ixp2000_reg_write(IXP2000_GPIO_POSR, (1 << line));
-       else 
-               ixp2000_reg_write(IXP2000_GPIO_POCR, (1 << line));
-}
-
 struct ixp2000_i2c_pins {
        unsigned long sda_pin;
        unsigned long scl_pin;
 };
 
+
 #endif /*  !__ASSEMBLY__ */
index 4499ae8e4b448c2f5bf9d729770cc7a51ee554bb..45a6c6cc29d5f8aa065350191b94ee69dd26fdb5 100644 (file)
@@ -14,6 +14,7 @@
                 mrc     p15, 0, \rx, c1, c0
                 tst     \rx, #1                 @ MMU enabled?
                 moveq   \rx, #0xc8000000
+               orrne   \rx, \rx, #0x00b00000
                 movne   \rx, #0xff000000
                 add     \rx,\rx,#3              @ Uart regs are at off set of 3 if
                                                @ byte writes used - Big Endian.
index 8eeb1db6309df154ad8ee44afa2ea2ebda87aee4..004696a95bdb70ef475b2425154332f24a1386ea 100644 (file)
 #define IXP4XX_PERIPHERAL_BASE_VIRT    (0xFFBF2000)
 #define IXP4XX_PERIPHERAL_REGION_SIZE  (0x0000C000)
 
+/*
+ * Debug UART
+ *
+ * This is basically a remap of UART1 into a region that is section
+ * aligned so that it * can be used with the low-level debug code.
+ */
+#define        IXP4XX_DEBUG_UART_BASE_PHYS     (0xC8000000)
+#define        IXP4XX_DEBUG_UART_BASE_VIRT     (0xffb00000)
+#define        IXP4XX_DEBUG_UART_REGION_SIZE   (0x00001000)
+
 #define IXP4XX_EXP_CS0_OFFSET  0x00
 #define IXP4XX_EXP_CS1_OFFSET   0x04
 #define IXP4XX_EXP_CS2_OFFSET   0x08
index 08a46302d26556053e4cdbce8bcc60a164a51011..cc4b5f5dbfcf9d3020b2b347e2a0c59e4d9d802b 100644 (file)
@@ -275,6 +275,7 @@ extern void __iounmap(void __iomem *addr);
 /*
  * io{read,write}{8,16,32} macros
  */
+#ifndef ioread8
 #define ioread8(p)     ({ unsigned int __v = __raw_readb(p); __v; })
 #define ioread16(p)    ({ unsigned int __v = le16_to_cpu(__raw_readw(p)); __v; })
 #define ioread32(p)    ({ unsigned int __v = le32_to_cpu(__raw_readl(p)); __v; })
@@ -293,6 +294,7 @@ extern void __iounmap(void __iomem *addr);
 
 extern void __iomem *ioport_map(unsigned long port, unsigned int nr);
 extern void ioport_unmap(void __iomem *addr);
+#endif
 
 struct pci_dev;
 
index 6a78ac58c19463e6f0a30e52a97b2bed8bd2c4c2..02c8f5d22065df19ec9adab857aabcd8a5627364 100644 (file)
@@ -116,7 +116,8 @@ __asm__ __volatile__(
        "orb $1,%%al\n"
        "3:"
        :"=a" (__res), "=&S" (d0), "=&D" (d1)
-                    :"1" (cs),"2" (ct));
+       :"1" (cs),"2" (ct)
+       :"memory");
 return __res;
 }
 
@@ -138,8 +139,9 @@ __asm__ __volatile__(
        "3:\tsbbl %%eax,%%eax\n\t"
        "orb $1,%%al\n"
        "4:"
-                    :"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
-                    :"1" (cs),"2" (ct),"3" (count));
+       :"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
+       :"1" (cs),"2" (ct),"3" (count)
+       :"memory");
 return __res;
 }
 
@@ -158,7 +160,9 @@ __asm__ __volatile__(
        "movl $1,%1\n"
        "2:\tmovl %1,%0\n\t"
        "decl %0"
-       :"=a" (__res), "=&S" (d0) : "1" (s),"0" (c));
+       :"=a" (__res), "=&S" (d0)
+       :"1" (s),"0" (c)
+       :"memory");
 return __res;
 }
 
@@ -175,7 +179,9 @@ __asm__ __volatile__(
        "leal -1(%%esi),%0\n"
        "2:\ttestb %%al,%%al\n\t"
        "jne 1b"
-       :"=g" (__res), "=&S" (d0), "=&a" (d1) :"0" (0),"1" (s),"2" (c));
+       :"=g" (__res), "=&S" (d0), "=&a" (d1)
+       :"0" (0),"1" (s),"2" (c)
+       :"memory");
 return __res;
 }
 
@@ -189,7 +195,9 @@ __asm__ __volatile__(
        "scasb\n\t"
        "notl %0\n\t"
        "decl %0"
-       :"=c" (__res), "=&D" (d0) :"1" (s),"a" (0), "0" (0xffffffffu));
+       :"=c" (__res), "=&D" (d0)
+       :"1" (s),"a" (0), "0" (0xffffffffu)
+       :"memory");
 return __res;
 }
 
@@ -333,7 +341,9 @@ __asm__ __volatile__(
        "je 1f\n\t"
        "movl $1,%0\n"
        "1:\tdecl %0"
-       :"=D" (__res), "=&c" (d0) : "a" (c),"0" (cs),"1" (count));
+       :"=D" (__res), "=&c" (d0)
+       :"a" (c),"0" (cs),"1" (count)
+       :"memory");
 return __res;
 }
 
@@ -369,7 +379,7 @@ __asm__ __volatile__(
        "je 2f\n\t"
        "stosb\n"
        "2:"
-       : "=&c" (d0), "=&D" (d1)
+       :"=&c" (d0), "=&D" (d1)
        :"a" (c), "q" (count), "0" (count/4), "1" ((long) s)
        :"memory");
 return (s);    
@@ -392,7 +402,8 @@ __asm__ __volatile__(
        "jne 1b\n"
        "3:\tsubl %2,%0"
        :"=a" (__res), "=&d" (d0)
-       :"c" (s),"1" (count));
+       :"c" (s),"1" (count)
+       :"memory");
 return __res;
 }
 /* end of additional stuff */
@@ -473,7 +484,8 @@ static inline void * memscan(void * addr, int c, size_t size)
                "dec %%edi\n"
                "1:"
                : "=D" (addr), "=c" (size)
-               : "0" (addr), "1" (size), "a" (c));
+               : "0" (addr), "1" (size), "a" (c)
+               : "memory");
        return addr;
 }
 
index 22ba580b0ae89045d54f2b262f2e67437dbbc12e..fc610bb0f73397421ba88804236d950a2a4d9c7d 100644 (file)
@@ -46,11 +46,11 @@ struct qnx4_inode_entry {
        char            di_fname[QNX4_SHORT_NAME_MAX];
        qnx4_off_t      di_size;
        qnx4_xtnt_t     di_first_xtnt;
-       __u32           di_xblk;
-       __s32           di_ftime;
-       __s32           di_mtime;
-       __s32           di_atime;
-       __s32           di_ctime;
+       __le32          di_xblk;
+       __le32          di_ftime;
+       __le32          di_mtime;
+       __le32          di_atime;
+       __le32          di_ctime;
        qnx4_nxtnt_t    di_num_xtnts;
        qnx4_mode_t     di_mode;
        qnx4_muid_t     di_uid;
@@ -63,18 +63,18 @@ struct qnx4_inode_entry {
 
 struct qnx4_link_info {
        char            dl_fname[QNX4_NAME_MAX];
-       __u32           dl_inode_blk;
+       __le32          dl_inode_blk;
        __u8            dl_inode_ndx;
        __u8            dl_spare[10];
        __u8            dl_status;
 };
 
 struct qnx4_xblk {
-       __u32           xblk_next_xblk;
-       __u32           xblk_prev_xblk;
+       __le32          xblk_next_xblk;
+       __le32          xblk_prev_xblk;
        __u8            xblk_num_xtnts;
        __u8            xblk_spare[3];
-       __s32           xblk_num_blocks;
+       __le32          xblk_num_blocks;
        qnx4_xtnt_t     xblk_xtnts[QNX4_MAX_XTNTS_PER_XBLK];
        char            xblk_signature[8];
        qnx4_xtnt_t     xblk_first_xtnt;
index fb518e318c7c6209c57240a4a9517375884c3c9f..a3eb1137857b15ab616ab6a5e1352fe7e5a87eaf 100644 (file)
 #ifndef _QNX4TYPES_H
 #define _QNX4TYPES_H
 
-typedef __u16 qnx4_nxtnt_t;
+typedef __le16 qnx4_nxtnt_t;
 typedef __u8  qnx4_ftype_t;
 
 typedef struct {
-       __u32 xtnt_blk;
-       __u32 xtnt_size;
+       __le32 xtnt_blk;
+       __le32 xtnt_size;
 } qnx4_xtnt_t;
 
-typedef __u16 qnx4_mode_t;
-typedef __u16 qnx4_muid_t;
-typedef __u16 qnx4_mgid_t;
-typedef __u32 qnx4_off_t;
-typedef __u16 qnx4_nlink_t;
+typedef __le16 qnx4_mode_t;
+typedef __le16 qnx4_muid_t;
+typedef __le16 qnx4_mgid_t;
+typedef __le32 qnx4_off_t;
+typedef __le16 qnx4_nlink_t;
 
 #endif