aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/qdio.h
diff options
context:
space:
mode:
authorCornelia Huck <cohuck@de.ibm.com>2006-01-06 03:19:21 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-06 11:33:51 -0500
commita8237fc4108060402d904bea5e1062e22e731969 (patch)
treefc19e33ea8bbe664c33fba6c78b34e497f2cc478 /drivers/s390/cio/qdio.h
parent8129ee164267dc030b8e1d541ee3643c0b9f2fa1 (diff)
[PATCH] s390: introduce struct subchannel_id
This patch introduces a struct subchannel_id containing the subchannel number (formerly referred to as "irq") and switches code formerly relying on the subchannel number over to it. While we're touching inline assemblies anyway, make sure they have correct memory constraints. Signed-off-by: Cornelia Huck <cohuck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/s390/cio/qdio.h')
-rw-r--r--drivers/s390/cio/qdio.h26
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h
index b5d303e79a24..43b840af5300 100644
--- a/drivers/s390/cio/qdio.h
+++ b/drivers/s390/cio/qdio.h
@@ -3,7 +3,9 @@
3 3
4#include <asm/page.h> 4#include <asm/page.h>
5 5
6#define VERSION_CIO_QDIO_H "$Revision: 1.37 $" 6#include "schid.h"
7
8#define VERSION_CIO_QDIO_H "$Revision: 1.40 $"
7 9
8#ifdef CONFIG_QDIO_DEBUG 10#ifdef CONFIG_QDIO_DEBUG
9#define QDIO_VERBOSE_LEVEL 9 11#define QDIO_VERBOSE_LEVEL 9
@@ -317,7 +319,7 @@ do_eqbs(unsigned long sch, unsigned char *state, int queue,
317 319
318 320
319static inline int 321static inline int
320do_siga_sync(unsigned int irq, unsigned int mask1, unsigned int mask2) 322do_siga_sync(struct subchannel_id schid, unsigned int mask1, unsigned int mask2)
321{ 323{
322 int cc; 324 int cc;
323 325
@@ -331,7 +333,7 @@ do_siga_sync(unsigned int irq, unsigned int mask1, unsigned int mask2)
331 "ipm %0 \n\t" 333 "ipm %0 \n\t"
332 "srl %0,28 \n\t" 334 "srl %0,28 \n\t"
333 : "=d" (cc) 335 : "=d" (cc)
334 : "d" (irq), "d" (mask1), "d" (mask2) 336 : "d" (schid), "d" (mask1), "d" (mask2)
335 : "cc", "0", "1", "2", "3" 337 : "cc", "0", "1", "2", "3"
336 ); 338 );
337#else /* CONFIG_ARCH_S390X */ 339#else /* CONFIG_ARCH_S390X */
@@ -344,7 +346,7 @@ do_siga_sync(unsigned int irq, unsigned int mask1, unsigned int mask2)
344 "ipm %0 \n\t" 346 "ipm %0 \n\t"
345 "srl %0,28 \n\t" 347 "srl %0,28 \n\t"
346 : "=d" (cc) 348 : "=d" (cc)
347 : "d" (irq), "d" (mask1), "d" (mask2) 349 : "d" (schid), "d" (mask1), "d" (mask2)
348 : "cc", "0", "1", "2", "3" 350 : "cc", "0", "1", "2", "3"
349 ); 351 );
350#endif /* CONFIG_ARCH_S390X */ 352#endif /* CONFIG_ARCH_S390X */
@@ -352,7 +354,7 @@ do_siga_sync(unsigned int irq, unsigned int mask1, unsigned int mask2)
352} 354}
353 355
354static inline int 356static inline int
355do_siga_input(unsigned int irq, unsigned int mask) 357do_siga_input(struct subchannel_id schid, unsigned int mask)
356{ 358{
357 int cc; 359 int cc;
358 360
@@ -365,7 +367,7 @@ do_siga_input(unsigned int irq, unsigned int mask)
365 "ipm %0 \n\t" 367 "ipm %0 \n\t"
366 "srl %0,28 \n\t" 368 "srl %0,28 \n\t"
367 : "=d" (cc) 369 : "=d" (cc)
368 : "d" (irq), "d" (mask) 370 : "d" (schid), "d" (mask)
369 : "cc", "0", "1", "2", "memory" 371 : "cc", "0", "1", "2", "memory"
370 ); 372 );
371#else /* CONFIG_ARCH_S390X */ 373#else /* CONFIG_ARCH_S390X */
@@ -377,7 +379,7 @@ do_siga_input(unsigned int irq, unsigned int mask)
377 "ipm %0 \n\t" 379 "ipm %0 \n\t"
378 "srl %0,28 \n\t" 380 "srl %0,28 \n\t"
379 : "=d" (cc) 381 : "=d" (cc)
380 : "d" (irq), "d" (mask) 382 : "d" (schid), "d" (mask)
381 : "cc", "0", "1", "2", "memory" 383 : "cc", "0", "1", "2", "memory"
382 ); 384 );
383#endif /* CONFIG_ARCH_S390X */ 385#endif /* CONFIG_ARCH_S390X */
@@ -386,7 +388,7 @@ do_siga_input(unsigned int irq, unsigned int mask)
386} 388}
387 389
388static inline int 390static inline int
389do_siga_output(unsigned long irq, unsigned long mask, __u32 *bb, 391do_siga_output(unsigned long schid, unsigned long mask, __u32 *bb,
390 unsigned int fc) 392 unsigned int fc)
391{ 393{
392 int cc; 394 int cc;
@@ -418,7 +420,7 @@ do_siga_output(unsigned long irq, unsigned long mask, __u32 *bb,
418 ".long 0b,2b \n\t" 420 ".long 0b,2b \n\t"
419 ".previous \n\t" 421 ".previous \n\t"
420 : "=d" (cc), "=d" (busy_bit) 422 : "=d" (cc), "=d" (busy_bit)
421 : "d" (irq), "d" (mask), 423 : "d" (schid), "d" (mask),
422 "i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION) 424 "i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION)
423 : "cc", "0", "1", "2", "memory" 425 : "cc", "0", "1", "2", "memory"
424 ); 426 );
@@ -443,7 +445,7 @@ do_siga_output(unsigned long irq, unsigned long mask, __u32 *bb,
443 ".quad 0b,1b \n\t" 445 ".quad 0b,1b \n\t"
444 ".previous \n\t" 446 ".previous \n\t"
445 : "=d" (cc), "=d" (busy_bit) 447 : "=d" (cc), "=d" (busy_bit)
446 : "d" (irq), "d" (mask), 448 : "d" (schid), "d" (mask),
447 "i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION), "d" (fc) 449 "i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION), "d" (fc)
448 : "cc", "0", "1", "2", "memory" 450 : "cc", "0", "1", "2", "memory"
449 ); 451 );
@@ -554,7 +556,7 @@ struct qdio_q {
554 __u32 * dev_st_chg_ind; 556 __u32 * dev_st_chg_ind;
555 557
556 int is_input_q; 558 int is_input_q;
557 int irq; 559 struct subchannel_id schid;
558 struct ccw_device *cdev; 560 struct ccw_device *cdev;
559 561
560 unsigned int is_iqdio_q; 562 unsigned int is_iqdio_q;
@@ -649,7 +651,7 @@ struct qdio_irq {
649 __u32 * volatile dev_st_chg_ind; 651 __u32 * volatile dev_st_chg_ind;
650 652
651 unsigned long int_parm; 653 unsigned long int_parm;
652 int irq; 654 struct subchannel_id schid;
653 655
654 unsigned int is_iqdio_irq; 656 unsigned int is_iqdio_irq;
655 unsigned int is_thinint_irq; 657 unsigned int is_thinint_irq;