| /* |
| * File...........: linux/drivers/s390x/idals.c |
| * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> |
| * Bugreports.to..: <Linux390@de.ibm.com> |
| * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000a |
| |
| * History of changes |
| * 07/24/00 new file |
| * 12/13/00 changed IDALs to 4kByte-IDALs |
| */ |
| |
| #include <linux/module.h> |
| #include <linux/config.h> |
| #include <linux/slab.h> |
| |
| #include <asm/irq.h> |
| #include <asm/idals.h> |
| |
| #ifdef CONFIG_ARCH_S390X |
| |
| unsigned long __create_idal (unsigned long address, int count) |
| { |
| int nridaws; |
| unsigned long *idal, *tmp; |
| |
| nridaws = ((address & (IDA_BLOCK_SIZE-1)) + count + |
| (IDA_BLOCK_SIZE-1)) >> IDA_SIZE_LOG; |
| idal = idal_alloc(nridaws); |
| if (idal != NULL) { |
| tmp = idal; |
| *tmp++ = address; |
| address &= -IDA_BLOCK_SIZE; |
| while (--nridaws > 0) { |
| address += IDA_BLOCK_SIZE; |
| *tmp++ = address; |
| } |
| } |
| return (unsigned long) idal; |
| } |
| |
| EXPORT_SYMBOL (__create_idal); |
| |
| #endif |