Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] AVR32: Implement and export __raw_{read,write}s[bwl]

Implement __raw_readsb and __raw_writesb. Export __raw_reads[bwl]
and __raw_writes[bwl] for use by modules.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Haavard Skinnemoen and committed by
Linus Torvalds
d68041cc 065834ab

+109
+9
arch/avr32/kernel/avr32_ksyms.c
··· 7 7 * it under the terms of the GNU General Public License version 2 as 8 8 * published by the Free Software Foundation. 9 9 */ 10 + #include <linux/io.h> 10 11 #include <linux/module.h> 11 12 12 13 #include <asm/checksum.h> ··· 54 53 EXPORT_SYMBOL(find_first_bit); 55 54 EXPORT_SYMBOL(find_next_bit); 56 55 EXPORT_SYMBOL(generic_find_next_zero_le_bit); 56 + 57 + /* I/O primitives (lib/io-*.S) */ 58 + EXPORT_SYMBOL(__raw_readsb); 59 + EXPORT_SYMBOL(__raw_readsw); 60 + EXPORT_SYMBOL(__raw_readsl); 61 + EXPORT_SYMBOL(__raw_writesb); 62 + EXPORT_SYMBOL(__raw_writesw); 63 + EXPORT_SYMBOL(__raw_writesl);
+1
arch/avr32/lib/Makefile
··· 7 7 lib-y += delay.o memset.o memcpy.o findbit.o 8 8 lib-y += csum_partial.o csum_partial_copy_generic.o 9 9 lib-y += io-readsw.o io-readsl.o io-writesw.o io-writesl.o 10 + lib-y += io-readsb.o io-writesb.o 10 11 lib-y += __avr32_lsl64.o __avr32_lsr64.o __avr32_asr64.o
+47
arch/avr32/lib/io-readsb.S
··· 1 + /* 2 + * Copyright (C) 2004-2006 Atmel Corporation 3 + * 4 + * This program is free software; you can redistribute it and/or modify 5 + * it under the terms of the GNU General Public License version 2 as 6 + * published by the Free Software Foundation. 7 + */ 8 + 9 + .text 10 + .Lnot_word_aligned: 11 + 1: ld.ub r8, r12[0] 12 + sub r10, 1 13 + st.b r11++, r8 14 + reteq r12 15 + tst r11, r9 16 + brne 1b 17 + 18 + /* fall through */ 19 + 20 + .global __raw_readsb 21 + .type __raw_readsb,@function 22 + __raw_readsb: 23 + cp.w r10, 0 24 + mov r9, 3 25 + reteq r12 26 + 27 + tst r11, r9 28 + brne .Lnot_word_aligned 29 + 30 + sub r10, 4 31 + brlt 2f 32 + 33 + 1: ldins.b r8:t, r12[0] 34 + ldins.b r8:u, r12[0] 35 + ldins.b r8:l, r12[0] 36 + ldins.b r8:b, r12[0] 37 + st.w r11++, r8 38 + sub r10, 4 39 + brge 1b 40 + 41 + 2: sub r10, -4 42 + reteq r12 43 + 44 + 3: ld.uh r8, r12[0] 45 + sub r10, 1 46 + st.b r11++, r8 47 + brne 3b
+52
arch/avr32/lib/io-writesb.S
··· 1 + /* 2 + * Copyright (C) 2004-2006 Atmel Corporation 3 + * 4 + * This program is free software; you can redistribute it and/or modify 5 + * it under the terms of the GNU General Public License version 2 as 6 + * published by the Free Software Foundation. 7 + */ 8 + 9 + .text 10 + .Lnot_word_aligned: 11 + 1: ld.ub r8, r11++ 12 + sub r10, 1 13 + st.b r12[0], r8 14 + reteq r12 15 + tst r11, r9 16 + brne 1b 17 + 18 + /* fall through */ 19 + 20 + .global __raw_writesb 21 + .type __raw_writesb,@function 22 + __raw_writesb: 23 + cp.w r10, 0 24 + mov r9, 3 25 + reteq r12 26 + 27 + tst r11, r9 28 + brne .Lnot_word_aligned 29 + 30 + sub r10, 4 31 + brlt 2f 32 + 33 + 1: ld.w r8, r11++ 34 + bfextu r9, r8, 24, 8 35 + st.b r12[0], r9 36 + bfextu r9, r8, 16, 8 37 + st.b r12[0], r9 38 + bfextu r9, r8, 8, 8 39 + st.b r12[0], r9 40 + st.b r12[0], r8 41 + sub r10, 4 42 + brge 1b 43 + 44 + 2: sub r10, -4 45 + reteq r12 46 + 47 + 3: ld.ub r8, r11++ 48 + sub r10, 1 49 + st.b r12[0], r8 50 + brne 3b 51 + 52 + retal r12