diff options
Diffstat (limited to 'arch/blackfin/lib/ins.S')
-rw-r--r-- | arch/blackfin/lib/ins.S | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/arch/blackfin/lib/ins.S b/arch/blackfin/lib/ins.S index df7b8833a0c5..eba2343b1b59 100644 --- a/arch/blackfin/lib/ins.S +++ b/arch/blackfin/lib/ins.S | |||
@@ -7,7 +7,7 @@ | |||
7 | * Description: Implementation of ins{bwl} for BlackFin processors using zero overhead loops. | 7 | * Description: Implementation of ins{bwl} for BlackFin processors using zero overhead loops. |
8 | * | 8 | * |
9 | * Modified: | 9 | * Modified: |
10 | * Copyright 2004-2006 Analog Devices Inc. | 10 | * Copyright 2004-2008 Analog Devices Inc. |
11 | * Copyright (C) 2005 Bas Vermeulen, BuyWays BV <bas@buyways.nl> | 11 | * Copyright (C) 2005 Bas Vermeulen, BuyWays BV <bas@buyways.nl> |
12 | * | 12 | * |
13 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 13 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
@@ -63,6 +63,23 @@ ENTRY(_insw) | |||
63 | RTS; | 63 | RTS; |
64 | ENDPROC(_insw) | 64 | ENDPROC(_insw) |
65 | 65 | ||
66 | ENTRY(_insw_8) | ||
67 | P0 = R0; /* P0 = port */ | ||
68 | cli R3; | ||
69 | P1 = R1; /* P1 = address */ | ||
70 | P2 = R2; /* P2 = count */ | ||
71 | SSYNC; | ||
72 | LSETUP( .Lword8_loop_s, .Lword8_loop_e) LC0 = P2; | ||
73 | .Lword8_loop_s: R0 = W[P0]; | ||
74 | B[P1++] = R0; | ||
75 | R0 = R0 >> 8; | ||
76 | B[P1++] = R0; | ||
77 | NOP; | ||
78 | .Lword8_loop_e: NOP; | ||
79 | sti R3; | ||
80 | RTS; | ||
81 | ENDPROC(_insw_8) | ||
82 | |||
66 | ENTRY(_insb) | 83 | ENTRY(_insb) |
67 | P0 = R0; /* P0 = port */ | 84 | P0 = R0; /* P0 = port */ |
68 | cli R3; | 85 | cli R3; |
@@ -78,8 +95,6 @@ ENTRY(_insb) | |||
78 | RTS; | 95 | RTS; |
79 | ENDPROC(_insb) | 96 | ENDPROC(_insb) |
80 | 97 | ||
81 | |||
82 | |||
83 | ENTRY(_insl_16) | 98 | ENTRY(_insl_16) |
84 | P0 = R0; /* P0 = port */ | 99 | P0 = R0; /* P0 = port */ |
85 | cli R3; | 100 | cli R3; |