summaryrefslogtreecommitdiffstats
path: root/kernel/arch/arm/mm/pabort-v7.S
blob: 875761f44f3bbb7d5bb064ab0e6a06144de22a96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <linux/linkage.h>
#include <asm/assembler.h>

/*
 * Function: v7_pabort
 *
 * Params  : r2 = pt_regs
 *	   : r4 = address of aborted instruction
 *	   : r5 = psr for parent context
 *
 * Returns : r4 - r11, r13 preserved
 *
 * Purpose : obtain information about current prefetch abort.
 */

	.align	5
ENTRY(v7_pabort)
	mrc	p15, 0, r0, c6, c0, 2		@ get IFAR
	mrc	p15, 0, r1, c5, c0, 1		@ get IFSR
	b	do_PrefetchAbort
ENDPROC(v7_pabort)
pan> active; snd_pcm_uframes_t dma_off; /* current position in alsa dma_area */ snd_pcm_uframes_t period_off; /* current position in current period */ }; struct pcm_runtime { struct sfire_chip *chip; struct snd_pcm *instance; struct pcm_substream playback; struct pcm_substream capture; bool panic; /* if set driver won't do anymore pcm on device */ struct pcm_urb in_urbs[PCM_N_URBS]; struct pcm_urb out_urbs[PCM_N_URBS]; int in_packet_size; int out_packet_size; int in_n_analog; /* number of analog channels soundcard sends */ int out_n_analog; /* number of analog channels soundcard receives */ struct mutex stream_mutex; u8 stream_state; /* one of STREAM_XXX (pcm.c) */ u8 rate; /* one of PCM_RATE_XXX */ wait_queue_head_t stream_wait_queue; bool stream_wait_cond; }; int usb6fire_pcm_init(struct sfire_chip *chip); void usb6fire_pcm_abort(struct sfire_chip *chip); void usb6fire_pcm_destroy(struct sfire_chip *chip); #endif /* USB6FIRE_PCM_H */