Merge branch 'for-linus' of git://www.jni.nu/cris
* 'for-linus' of git://www.jni.nu/cris: CRISv10: remove redundant tests on unsigned CRISv32: irq.c - Move end brace outside #endif CRISv32: Fix potential null reference in cryptocop driver. CRISv32: Add arch optimized strcmp. CRIS: assignment/is equal confusion
This commit is contained in:
commit
a800faec1b
7 changed files with 36 additions and 9 deletions
|
@ -24,7 +24,7 @@ int cris_request_dma(unsigned int dmanr, const char * device_id,
|
|||
unsigned long int gens;
|
||||
int fail = -EINVAL;
|
||||
|
||||
if ((dmanr < 0) || (dmanr >= MAX_DMA_CHANNELS)) {
|
||||
if (dmanr >= MAX_DMA_CHANNELS) {
|
||||
printk(KERN_CRIT "cris_request_dma: invalid DMA channel %u\n", dmanr);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -213,7 +213,7 @@ int cris_request_dma(unsigned int dmanr, const char * device_id,
|
|||
void cris_free_dma(unsigned int dmanr, const char * device_id)
|
||||
{
|
||||
unsigned long flags;
|
||||
if ((dmanr < 0) || (dmanr >= MAX_DMA_CHANNELS)) {
|
||||
if (dmanr >= MAX_DMA_CHANNELS) {
|
||||
printk(KERN_CRIT "cris_free_dma: invalid DMA channel %u\n", dmanr);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1395,7 +1395,7 @@ static int create_md5_pad(int alloc_flag, unsigned long long hashed_length, char
|
|||
if (padlen < MD5_MIN_PAD_LENGTH) padlen += MD5_BLOCK_LENGTH;
|
||||
|
||||
p = kmalloc(padlen, alloc_flag);
|
||||
if (!pad) return -ENOMEM;
|
||||
if (!p) return -ENOMEM;
|
||||
|
||||
*p = 0x80;
|
||||
memset(p+1, 0, padlen - 1);
|
||||
|
@ -1427,7 +1427,7 @@ static int create_sha1_pad(int alloc_flag, unsigned long long hashed_length, cha
|
|||
if (padlen < SHA1_MIN_PAD_LENGTH) padlen += SHA1_BLOCK_LENGTH;
|
||||
|
||||
p = kmalloc(padlen, alloc_flag);
|
||||
if (!pad) return -ENOMEM;
|
||||
if (!p) return -ENOMEM;
|
||||
|
||||
*p = 0x80;
|
||||
memset(p+1, 0, padlen - 1);
|
||||
|
|
|
@ -430,8 +430,8 @@ crisv32_do_multiple(struct pt_regs* regs)
|
|||
masked[i] &= ~TIMER_MASK;
|
||||
do_IRQ(TIMER0_INTR_VECT, regs);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef IGNORE_MASK
|
||||
/* Remove IRQs that can't be handled as multiple. */
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
#
|
||||
|
||||
lib-y = checksum.o checksumcopy.o string.o usercopy.o memset.o \
|
||||
csumcpfruser.o spinlock.o delay.o
|
||||
csumcpfruser.o spinlock.o delay.o strcmp.o
|
||||
|
||||
|
|
21
arch/cris/arch-v32/lib/strcmp.S
Normal file
21
arch/cris/arch-v32/lib/strcmp.S
Normal file
|
@ -0,0 +1,21 @@
|
|||
; strcmp.S -- CRISv32 version.
|
||||
; Copyright (C) 2008 AXIS Communications AB
|
||||
; Written by Edgar E. Iglesias
|
||||
;
|
||||
; This source code is licensed under the GNU General Public License,
|
||||
; Version 2. See the file COPYING for more details.
|
||||
|
||||
.global strcmp
|
||||
.type strcmp,@function
|
||||
strcmp:
|
||||
1:
|
||||
move.b [$r10+], $r12
|
||||
seq $r13
|
||||
sub.b [$r11+], $r12
|
||||
or.b $r12, $r13
|
||||
beq 1b
|
||||
nop
|
||||
|
||||
ret
|
||||
movs.b $r12, $r10
|
||||
.size strcmp, . - strcmp
|
|
@ -78,7 +78,7 @@ static inline void __raw_write_lock(raw_rwlock_t *rw)
|
|||
{
|
||||
__raw_spin_lock(&rw->slock);
|
||||
while (rw->lock != RW_LOCK_BIAS);
|
||||
rw->lock == 0;
|
||||
rw->lock = 0;
|
||||
__raw_spin_unlock(&rw->slock);
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw)
|
|||
{
|
||||
__raw_spin_lock(&rw->slock);
|
||||
while (rw->lock != RW_LOCK_BIAS);
|
||||
rw->lock == RW_LOCK_BIAS;
|
||||
rw->lock = RW_LOCK_BIAS;
|
||||
__raw_spin_unlock(&rw->slock);
|
||||
}
|
||||
|
||||
|
@ -114,7 +114,7 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw)
|
|||
int ret = 0;
|
||||
__raw_spin_lock(&rw->slock);
|
||||
if (rw->lock == RW_LOCK_BIAS) {
|
||||
rw->lock == 0;
|
||||
rw->lock = 0;
|
||||
ret = 1;
|
||||
}
|
||||
__raw_spin_unlock(&rw->slock);
|
||||
|
|
|
@ -11,4 +11,10 @@ extern void *memcpy(void *, const void *, size_t);
|
|||
#define __HAVE_ARCH_MEMSET
|
||||
extern void *memset(void *, int, size_t);
|
||||
|
||||
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||
/* For v32 we provide strcmp. */
|
||||
#define __HAVE_ARCH_STRCMP
|
||||
extern int strcmp(const char *s1, const char *s2);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue