diff options
author | Cornelia Huck <cohuck@de.ibm.com> | 2006-01-06 03:19:21 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-06 11:33:51 -0500 |
commit | a8237fc4108060402d904bea5e1062e22e731969 (patch) | |
tree | fc19e33ea8bbe664c33fba6c78b34e497f2cc478 /drivers/s390/cio/qdio.h | |
parent | 8129ee164267dc030b8e1d541ee3643c0b9f2fa1 (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.h | 26 |
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 | ||
319 | static inline int | 321 | static inline int |
320 | do_siga_sync(unsigned int irq, unsigned int mask1, unsigned int mask2) | 322 | do_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 | ||
354 | static inline int | 356 | static inline int |
355 | do_siga_input(unsigned int irq, unsigned int mask) | 357 | do_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 | ||
388 | static inline int | 390 | static inline int |
389 | do_siga_output(unsigned long irq, unsigned long mask, __u32 *bb, | 391 | do_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; |