Exemplo n.º 1
0
/*
 * Copies the given data to the given offset in card memory, reversing the word order of each 32-bit dword.
 * This can be used to swap left/right channels in an audio stream, for example.  This function will truncate
 * length to a multiple of four.
 */
void tl880_memcpy_swahw32(struct tl880_dev *tl880dev, void *src, u32 addr, size_t length) /* {{{ */
{
	u32 i;
	u32 *src32 = src;
	static int printme = 1;
	
	if(CHECK_NULL(tl880dev) || CHECK_NULL(src)) {
		return;
	}

	if(addr > tl880dev->memlen) {
		return;
	}

	if(addr + length > tl880dev->memlen) {
		length = tl880dev->memlen - addr;
	}
	if(debug > 1) {
		printk(KERN_DEBUG "tl880: memcpy_swahw32 to 0x%07x length 0x%06lx\n", addr, length);
	}

	for(i = addr; i < addr + length; i += 4) {
		if(printme) {
			printk(KERN_DEBUG "writing 0x%08x to 0x%07x\n", src32[i/4], i);
		}
		tl880_write_memory(tl880dev, i, swahw32(src32[i / 4]));
	}
	printme = 0;
} /* }}} */
Exemplo n.º 2
0
/*
 * Crude but fast random-number generator.  Uses a linear congruential
 * generator, with occasional help from cpu_clock().
 */
static unsigned long
rcu_random(struct rcu_random_state *rrsp)
{
	if (--rrsp->rrs_count < 0) {
		rrsp->rrs_state += (unsigned long)local_clock();
		rrsp->rrs_count = RCU_RANDOM_REFRESH;
	}
	rrsp->rrs_state = rrsp->rrs_state * RCU_RANDOM_MULT + RCU_RANDOM_ADD;
	return swahw32(rrsp->rrs_state);
}
Exemplo n.º 3
0
/*
 * Crude but fast random-number generator.  Uses a linear congruential
 * generator, with occasional help from cpu_clock().
 */
static unsigned long
rcu_random(struct rcu_random_state *rrsp)
{
	if (--rrsp->rrs_count < 0) {
		rrsp->rrs_state +=
			(unsigned long)cpu_clock(raw_smp_processor_id());
		rrsp->rrs_count = RCU_RANDOM_REFRESH;
	}
	rrsp->rrs_state = rrsp->rrs_state * RCU_RANDOM_MULT + RCU_RANDOM_ADD;
	return swahw32(rrsp->rrs_state);
}