diff options
Diffstat (limited to 'arch/blackfin/lib/outs.S')
-rw-r--r-- | arch/blackfin/lib/outs.S | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/blackfin/lib/outs.S b/arch/blackfin/lib/outs.S index 4c3da8ae094e..3daf96035bf6 100644 --- a/arch/blackfin/lib/outs.S +++ b/arch/blackfin/lib/outs.S | |||
@@ -7,7 +7,7 @@ | |||
7 | * Description: Implementation of outs{bwl} for BlackFin processors using zero overhead loops. | 7 | * Description: Implementation of outs{bwl} for BlackFin processors using zero overhead loops. |
8 | * | 8 | * |
9 | * Modified: Copyright (C) 2005 Bas Vermeulen, BuyWays BV <bas@buyways.nl> | 9 | * Modified: Copyright (C) 2005 Bas Vermeulen, BuyWays BV <bas@buyways.nl> |
10 | * Copyright 2004-2006 Analog Devices Inc. | 10 | * Copyright 2004-2008 Analog Devices Inc. |
11 | * | 11 | * |
12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
13 | * | 13 | * |
@@ -63,3 +63,17 @@ ENTRY(_outsb) | |||
63 | .Lbyte_loop_e: B[P0] = R0; | 63 | .Lbyte_loop_e: B[P0] = R0; |
64 | RTS; | 64 | RTS; |
65 | ENDPROC(_outsb) | 65 | ENDPROC(_outsb) |
66 | |||
67 | ENTRY(_outsw_8) | ||
68 | P0 = R0; /* P0 = port */ | ||
69 | P1 = R1; /* P1 = address */ | ||
70 | P2 = R2; /* P2 = count */ | ||
71 | |||
72 | LSETUP( .Lword8_loop_s, .Lword8_loop_e) LC0 = P2; | ||
73 | .Lword8_loop_s: R1 = B[P1++]; | ||
74 | R0 = B[P1++]; | ||
75 | R0 = R0 << 8; | ||
76 | R0 = R0 + R1; | ||
77 | .Lword8_loop_e: W[P0] = R0; | ||
78 | RTS; | ||
79 | ENDPROC(_outsw) | ||