Commit d5f1a21c authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/home/rmk/linux-2.6-arm

* master.kernel.org:/home/rmk/linux-2.6-arm:
  [ARM] 4875/1: Add MODULE_ALIAS to ixp4xx-beeper module
  [ARM] 4873/1: Fix ITE 8152 interrupt demux
  [ARM] 4878/1: Add oabi shim for fstatat64
parents 1f4cfbaa 1035d60d
...@@ -120,6 +120,7 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc) ...@@ -120,6 +120,7 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
time, when they all three were 0. */ time, when they all three were 0. */
bits_pd = __raw_readl(IT8152_INTC_PDCNIRR); bits_pd = __raw_readl(IT8152_INTC_PDCNIRR);
bits_lp = __raw_readl(IT8152_INTC_LPCNIRR); bits_lp = __raw_readl(IT8152_INTC_LPCNIRR);
bits_ld = __raw_readl(IT8152_INTC_LDCNIRR);
if (!(bits_ld | bits_lp | bits_pd)) if (!(bits_ld | bits_lp | bits_pd))
return; return;
} }
...@@ -133,14 +134,14 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc) ...@@ -133,14 +134,14 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
bits_lp &= ((1 << IT8152_LP_IRQ_COUNT) - 1); bits_lp &= ((1 << IT8152_LP_IRQ_COUNT) - 1);
while (bits_lp) { while (bits_lp) {
i = __ffs(bits_pd); i = __ffs(bits_lp);
it8152_irq(IT8152_LP_IRQ(i)); it8152_irq(IT8152_LP_IRQ(i));
bits_lp &= ~(1 << i); bits_lp &= ~(1 << i);
} }
bits_ld &= ((1 << IT8152_LD_IRQ_COUNT) - 1); bits_ld &= ((1 << IT8152_LD_IRQ_COUNT) - 1);
while (bits_ld) { while (bits_ld) {
i = __ffs(bits_pd); i = __ffs(bits_ld);
it8152_irq(IT8152_LD_IRQ(i)); it8152_irq(IT8152_LD_IRQ(i));
bits_ld &= ~(1 << i); bits_ld &= ~(1 << i);
} }
......
...@@ -336,7 +336,7 @@ ...@@ -336,7 +336,7 @@
CALL(sys_mknodat) CALL(sys_mknodat)
/* 325 */ CALL(sys_fchownat) /* 325 */ CALL(sys_fchownat)
CALL(sys_futimesat) CALL(sys_futimesat)
CALL(sys_fstatat64) CALL(ABI(sys_fstatat64, sys_oabi_fstatat64))
CALL(sys_unlinkat) CALL(sys_unlinkat)
CALL(sys_renameat) CALL(sys_renameat)
/* 330 */ CALL(sys_linkat) /* 330 */ CALL(sys_linkat)
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
* sys_stat64: * sys_stat64:
* sys_lstat64: * sys_lstat64:
* sys_fstat64: * sys_fstat64:
* sys_fstatat64:
* *
* struct stat64 has different sizes and some members are shifted * struct stat64 has different sizes and some members are shifted
* Compatibility wrappers are needed for them and provided below. * Compatibility wrappers are needed for them and provided below.
...@@ -169,6 +170,29 @@ asmlinkage long sys_oabi_fstat64(unsigned long fd, ...@@ -169,6 +170,29 @@ asmlinkage long sys_oabi_fstat64(unsigned long fd,
return error; return error;
} }
asmlinkage long sys_oabi_fstatat64(int dfd,
char __user *filename,
struct oldabi_stat64 __user *statbuf,
int flag)
{
struct kstat stat;
int error = -EINVAL;
if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0)
goto out;
if (flag & AT_SYMLINK_NOFOLLOW)
error = vfs_lstat_fd(dfd, filename, &stat);
else
error = vfs_stat_fd(dfd, filename, &stat);
if (!error)
error = cp_oldabi_stat64(&stat, statbuf);
out:
return error;
}
struct oabi_flock64 { struct oabi_flock64 {
short l_type; short l_type;
short l_whence; short l_whence;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment