History log of /arch/blackfin/mach-common/entry.S
Revision Date Author Comments
135c37b83c81b79a888108e3f7c5f64423d8a851 14-Nov-2012 Al Viro <viro@zeniv.linux.org.uk> bfin: switch to generic vfork, get rid of pointless wrappers

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
ee1e17c69eb3c843d283eb3fbed1616ed9a122eb 13-Oct-2012 Al Viro <viro@zeniv.linux.org.uk> blackfin: convert kernel_thread() and kernel_execve() to generic ones

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
c7e48e1e3e926de21605f959c31689d56fb639e3 23-Jul-2012 Sonic Zhang <sonic.zhang@analog.com> bfin: pm: add deepsleep for bf60x

Add add deepsleep for bf60x.
1. Call DMC init functions to enter and exit DDR self refresh mode.
2. Wait till CGU PLL is locked after wake up and exit DDR self refresh mode.
3. Make asessembly function enter_deepsleep comply with C funtion ABI in
order to call other C functions.
4. Switch kernel stack by register EX_SCRATCH_REG.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Bob Liu <lliubbo@gmail.com>
6fd84c0831ec78d98736b76dc5e9b849f1dbfc9e 23-May-2012 Al Viro <viro@zeniv.linux.org.uk> TIF_RESTORE_SIGMASK can be set only when TIF_SIGPENDING is set

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
080bb657eb0d02d0df73e62572eb814aebf66850 01-May-2012 Mike Frysinger <vapier@gentoo.org> Blackfin: delete fork func

We don't implement fork() since we are no-mmu, so redirect it to the
existing ENOSYS stub rather than adding a custom EINVAL one.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Bob Liu <lliubbo@gmail.com>
b5affb0147cee0ea05d909396f8e389092729236 16-May-2012 Bob Liu <lliubbo@gmail.com> blackfin: add bf60x to current framework

This patch added bf60x to current blackfin kernel framework.

Signed-off-by: Bob Liu <lliubbo@gmail.com>
ce6da7cd896b38a68ef0e93e2cdf46a2a7c3762b 19-Feb-2012 Geert Uytterhoeven <geert@linux-m68k.org> Blackfin: s/#if CONFIG/#ifdef CONFIG/

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Bob Liu <lliubbo@gmail.com>
dd47ba13786f22893d08747c152a2cf1435d0d8c 29-Jan-2012 Mike Frysinger <vapier@gentoo.org> Blackfin: wire up new process_vm syscalls

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Bob Liu <lliubbo@gmail.com>
f5b940997397229975ea073679b03967932a541b 27-Aug-2011 NeilBrown <neilb@suse.de> All Arch: remove linkage for sys_nfsservctl system call

The nfsservctl system call is now gone, so we should remove all
linkage for it.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
427472c967977256db42ffbf16f65f2770278b7f 24-May-2011 Mike Frysinger <vapier@gentoo.org> Blackfin: wire up new sendmmsg syscall

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
7b21fddd087678a70ad64afc0f632e0f1071b092 28-May-2011 Eric W. Biederman <ebiederm@xmission.com> ns: Wire up the setns system call

32bit and 64bit on x86 are tested and working. The rest I have looked
at closely and I can't find any problems.

setns is an easy system call to wire up. It just takes two ints so I
don't expect any weird architecture porting problems.

While doing this I have noticed that we have some architectures that are
very slow to get new system calls. cris seems to be the slowest where
the last system calls wired up were preadv and pwritev. avr32 is weird
in that recvmmsg was wired up but never declared in unistd.h. frv is
behind with perf_event_open being the last syscall wired up. On h8300
the last system call wired up was epoll_wait. On m32r the last system
call wired up was fallocate. mn10300 has recvmmsg as the last system
call wired up. The rest seem to at least have syncfs wired up which was
new in the 2.6.39.

v2: Most of the architecture support added by Daniel Lezcano <dlezcano@fr.ibm.com>
v3: ported to v2.6.36-rc4 by: Eric W. Biederman <ebiederm@xmission.com>
v4: Moved wiring up of the system call to another patch
v5: ported to v2.6.39-rc6
v6: rebased onto parisc-next and net-next to avoid syscall conflicts.
v7: ported to Linus's latest post 2.6.39 tree.

>  arch/blackfin/include/asm/unistd.h     |    3 ++-
>  arch/blackfin/mach-common/entry.S      |    1 +
Acked-by: Mike Frysinger <vapier@gentoo.org>

Oh - ia64 wiring looks good.
Acked-by: Tony Luck <tony.luck@intel.com>

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
25985edcedea6396277003854657b5f3cb31a628 31-Mar-2011 Lucas De Marchi <lucas.demarchi@profusion.mobi> Fix common misspellings

Fixes generated by 'codespell' and manually reviewed.

Signed-off-by: Lucas De Marchi <lucas.demarchi@profusion.mobi>
4e3d96deff59d126cfa289645e136e295e65480f 22-Mar-2011 Mike Frysinger <vapier@gentoo.org> Blackfin: wire up new syncfs syscall

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
a8d0142fb7e31a11919ef2d45d6f43e0f225f568 18-Mar-2011 Mike Frysinger <vapier@gentoo.org> Blackfin: wire up new syscalls

Hook up name_to_handle_at, open_by_handle_at, and clock_adjtime.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
9169b51f8ce6cd11cd19913b54466ec11e6a12f9 17-Mar-2011 Philippe Gerum <rpm@xenomai.org> Blackfin/ipipe: fix deferred pipeline sync for the root stage

This patch makes sure to sync the pipeline for the root stage only
from the outer interrupt level, when resuming kernel code after an
interrupt.

This fixes a bug causing EVT15 to be spuriously popped off upon nested
interrupts, which in turn would cause the preempted kernel code to
resume without supervisor privileges.

Signed-off-by: Philippe Gerum <rpm@xenomai.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
503f3d30c6f29c58fce77bfe47b04e3c667e7640 14-Nov-2010 Mike Frysinger <vapier@gentoo.org> Blackfin: fix building IPIPE code when XIP is enabled

The low level assembly needs to use the pseudo_long_call helper so that
we use the right call insn when doing kernel XIP.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
99a5b2878b56d24919eb7e646f2d8e02f63a6efc 06-Sep-2010 Sonic Zhang <sonic.zhang@analog.com> Blackfin: add new cacheflush syscall

Flushing caches sometimes requires anomaly workarounds which require
supervisor-only insns. Normally we don't need to flush caches from
userspace so this isn't a problem, but when gcc generates trampolines
on the stack, we do.

So add a new syscall for gcc to use modeled after the mips version.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
33ded95b1ca5ebd27a762cabaee63f50eb46dcd6 12-Aug-2010 Barry Song <barry.song@analog.com> Blackfin: initial preempt support while returning from interrupt

Signed-off-by: Barry Song <barry.song@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
f3411b16c790e52b5abe174b33c7d213dbf5c259 18-Aug-2010 Mike Frysinger <vapier@gentoo.org> Blackfin: wire up new fanotify/prlimit64 syscalls

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2943bff69e3728cfd69841537120125f9373bb28 25-Feb-2010 Robin Getz <robin.getz@analog.com> Blackfin: fix anomaly 283 handling with exact hardware error

The exact hardware error handling code was added before the workaround
for anomaly 283 which caused the anomaly to be triggered in some cases
(an infinite core stall). So re-order the code to avoid this.

Reported-by: Andrew Rook <andrew.rook@speakerbus.co.uk>
Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
9e228ee9eae97b533d3b3133f76478c70dbd4294 12-Feb-2010 Mike Frysinger <vapier@gentoo.org> Blackfin: check for bad syscalls after tracing it

We want to report all system calls (even invalid ones) to the tracing
layers, so check the NR only after we've notified.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
600482c13d3d3612d71f39d8aaec47f63aafa801 17-Feb-2010 Mike Frysinger <vapier@gentoo.org> Blackfin: fix single stepping over system calls

On Blackfin systems, the hardware single step exception triggers before
the system call exception, so we need to save this info to process it
later on. Otherwise, single stepping in userspace misses a few insns
right after the system call.

This is based a bit on the SuperH code added in commit 4b505db9c4c72dbd.

Reported-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
e8f263dfd32a784a816fe68956e564f8ede4a9fc 26-Jan-2010 Mike Frysinger <vapier@gentoo.org> Blackfin: initial tracehook support

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
441504df6b81302c06010083c8d63b1465ead405 19-Jan-2010 Yi Li <yi.li@analog.com> Blackfin: add support for irqflags tracing

Signed-off-by: Yi Li <yi.li@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
d86bfb1600db38e8387beee0aaab4263cfd728a2 07-Jan-2010 Barry Song <barry.song@analog.com> Blackfin: initial XIP support

Signed-off-by: Barry Song <barry.song@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
360adee8a5c249f221de43d7d46073391359a4ba 15-Dec-2009 Mike Frysinger <vapier@gentoo.org> Blackfin: wire up the various memory related syscalls

These all just go to the stub syscall at the moment, so this is largely
future proofing.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
d1be2e485bfb5e3ee3ef5d2131f0151f9a3c4387 08-Dec-2009 Barry Song <barry.song@analog.com> Blackfin: add support for TIF_NOTIFY_RESUME

Signed-off-by: Barry Song <barry.song@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
f8b7256096a20436f6d0926747e3ac3d64c81d24 30-Nov-2009 Al Viro <viro@zeniv.linux.org.uk> Unify sys_mmap*

New helper - sys_mmap_pgoff(); switch syscalls to using it.

Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
dd17c8f72993f9461e9c19250e3f155d6d99df22 29-Oct-2009 Rusty Russell <rusty@rustcorp.com.au> percpu: remove per_cpu__ prefix.

Now that the return from alloc_percpu is compatible with the address
of per-cpu vars, it makes sense to hand around the address of per-cpu
variables. To make this sane, we remove the per_cpu__ prefix we used
created to stop people accidentally using these vars directly.

Now we have sparse, we can use that (next patch).

tj: * Updated to convert stuff which were missed by or added after the
original patch.

* Kill per_cpu_var() macro.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Christoph Lameter <cl@linux-foundation.org>
a2e2725541fad72416326798c2d7fa4dafb7d337 13-Oct-2009 Arnaldo Carvalho de Melo <acme@redhat.com> net: Introduce recvmmsg socket syscall

Meaning receive multiple messages, reducing the number of syscalls and
net stack entry/exit operations.

Next patches will introduce mechanisms where protocols that want to
optimize this operation will provide an unlocked_recvmsg operation.

This takes into account comments made by:

. Paul Moore: sock_recvmsg is called only for the first datagram,
sock_recvmsg_nosec is used for the rest.

. Caitlin Bestler: recvmmsg now has a struct timespec timeout, that
works in the same fashion as the ppoll one.

If the underlying protocol returns a datagram with MSG_OOB set, this
will make recvmmsg return right away with as many datagrams (+ the OOB
one) it has received so far.

. Rémi Denis-Courmont & Steven Whitehouse: If we receive N < vlen
datagrams and then recvmsg returns an error, recvmmsg will return
the successfully received datagrams, store the error and return it
in the next call.

This paves the way for a subsequent optimization, sk_prot->unlocked_recvmsg,
where we will be able to acquire the lock only at batch start and end, not at
every underlying recvmsg call.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
96f1050d3df105c9ae6c6ac224f370199ea82fcd 24-Sep-2009 Robin Getz <robin.getz@analog.com> Blackfin: mass clean up of copyright/licensing info

Bill Gatliff & David Brownell pointed out we were missing some
copyrights, and licensing terms in some of the files in
./arch/blackfin, so this fixes things, and cleans them up.

It also removes:
- verbose GPL text(refer to the top level ./COPYING file)
- file names (you are looking at the file)
- bug url (it's in the ./MAINTAINERS file)
- "or later" on GPL-2, when we did not have that right

It also allows some Blackfin-specific assembly files to be under a BSD
like license (for people to use them outside of Linux).

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
cdd6c482c9ff9c55475ee7392ec8f672eddb7be6 21-Sep-2009 Ingo Molnar <mingo@elte.hu> perf: Do the big rename: Performance Counters -> Performance Events

Bye-bye Performance Counters, welcome Performance Events!

In the past few months the perfcounters subsystem has grown out its
initial role of counting hardware events, and has become (and is
becoming) a much broader generic event enumeration, reporting, logging,
monitoring, analysis facility.

Naming its core object 'perf_counter' and naming the subsystem
'perfcounters' has become more and more of a misnomer. With pending
code like hw-breakpoints support the 'counter' name is less and
less appropriate.

All in one, we've decided to rename the subsystem to 'performance
events' and to propagate this rename through all fields, variables
and API names. (in an ABI compatible fashion)

The word 'event' is also a bit shorter than 'counter' - which makes
it slightly more convenient to write/handle as well.

Thanks goes to Stephane Eranian who first observed this misnomer and
suggested a rename.

User-space tooling and ABI compatibility is not affected - this patch
should be function-invariant. (Also, defconfigs were not touched to
keep the size down.)

This patch has been generated via the following script:

FILES=$(find * -type f | grep -vE 'oprofile|[^K]config')

sed -i \
-e 's/PERF_EVENT_/PERF_RECORD_/g' \
-e 's/PERF_COUNTER/PERF_EVENT/g' \
-e 's/perf_counter/perf_event/g' \
-e 's/nb_counters/nb_events/g' \
-e 's/swcounter/swevent/g' \
-e 's/tpcounter_event/tp_event/g' \
$FILES

for N in $(find . -name perf_counter.[ch]); do
M=$(echo $N | sed 's/perf_counter/perf_event/g')
mv $N $M
done

FILES=$(find . -name perf_event.*)

sed -i \
-e 's/COUNTER_MASK/REG_MASK/g' \
-e 's/COUNTER/EVENT/g' \
-e 's/\<event\>/event_id/g' \
-e 's/counter/event/g' \
-e 's/Counter/Event/g' \
$FILES

... to keep it as correct as possible. This script can also be
used by anyone who has pending perfcounters patches - it converts
a Linux kernel tree over to the new naming. We tried to time this
change to the point in time where the amount of pending patches
is the smallest: the end of the merge window.

Namespace clashes were fixed up in a preparatory patch - and some
stylistic fallout will be fixed up in a subsequent patch.

( NOTE: 'counters' are still the proper terminology when we deal
with hardware registers - and these sed scripts are a bit
over-eager in renaming them. I've undone some of that, but
in case there's something left where 'counter' would be
better than 'event' we can undo that on an individual basis
instead of touching an otherwise nicely automated patch. )

Suggested-by: Stephane Eranian <eranian@google.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Paul Mackerras <paulus@samba.org>
Reviewed-by: Arjan van de Ven <arjan@linux.intel.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: David Howells <dhowells@redhat.com>
Cc: Kyle McMartin <kyle@mcmartin.ca>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: <linux-arch@vger.kernel.org>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
dedfd5d7f21b08d50ba8c0220778e119952e2f77 26-Aug-2009 Robin Getz <robin.getz@analog.com> Blackfin: workaround anomaly 05000283

Make sure our interrupt entry code with exact hardware errors handles
anomaly 05000283 (infinite stall in system MMR kill) so we don't stall
while under load.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
926494943b7d9dbc998adb298a92a708232ce46b 17-Aug-2009 Mike Frysinger <vapier@gentoo.org> Blackfin: optimize fixed code handling for the most common case

The majority of the time we are returning to user space, it is not in the
fixed atomic code region. So rather than branch to a function where we
check the PC and return, do the check inline and branch only when needed.

Also, tweak some of the fixed code handling based on assumptions we are
aware of but cannot be expressed in C.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
eb7bd9c461bbfbb195cb1e1346453222a4352df4 07-Aug-2009 Yi Li <yi.li@analog.com> Blackfin: cleanup sync handling when enabling/disabling cplbs

The handling of updating the [DI]MEM_CONTROL MMRs does not follow proper
sync procedures as laid out in the Blackfin programming manual. So rather
than audit/fix every call location, create helper functions that do the
right things in order to safely update these MMRs. Then convert all call
sites to use these new helper functions.

While we're fixing the code, drop the workaround for anomaly 05000125 as
that anomaly applies to old versions of silicon that we do not support.

Signed-off-by: Yi Li <yi.li@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
01b9f4b0ed3b1111b2080a3c9bcb66df1fdf48b7 22-Jul-2009 Graf Yang <graf.yang@analog.com> Blackfin: improve double fault debug handling

Since the hardware only provides reporting for the last exception handled,
and the values are valid only when executing the exception handler, we
need to save the context for reporting at a later point. While we do this
for one exception, it doesn't work properly when handling a second one as
the original exception is clobbered by the double fault. So when double
fault debugging is enabled, create a dedicated shadow of these values and
save/restore out of there. Now the crash report properly displays the
first exception as well as the second one.

Signed-off-by: Graf Yang <graf.yang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
f4e129399c9ead8ec37910ce9793813698c2df51 22-Jun-2009 Philippe Gerum <rpm@xenomai.org> Blackfin: inline I-pipe bypass code in ret_from_exception

Signed-off-by: Philippe Gerum <rpm@xenomai.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
9ea7770fdb0d6742d6a0aba62facda4b35356cf2 22-Jun-2009 Philippe Gerum <rpm@xenomai.org> Blackfin: sanitize manual control of IPEND[4]

Cleanup is performed in two ways:

- remove extraneous updates of IPEND[4] w/ CONFIG_IPIPE,
and document remaining use.

- substitute pop-reg-from-stack instructions with plain SP fixups in
all save-RETI-then-discard patterns.

Signed-off-by: Philippe Gerum <rpm@xenomai.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
9703a73c983edab860d6d145c87480440fc83348 22-Jun-2009 Philippe Gerum <rpm@xenomai.org> Blackfin: use generic name for EVT14 handler

The purpose of the EVT14 handler may depend on whether CONFIG_IPIPE is
enabled, albeit its implementation can be the same in both cases. When
the interrupt pipeline is enabled, EVT14 can be used to raise the core
priority level for the running code; when CONFIG_IPIPE is off, EVT14
can be used to lower this level before running softirq handlers.

Rename evt14_softirq to evt_evt14 to pick an identifier that fits
both, which allows to reuse the same vector setup code as well.

Signed-off-by: Philippe Gerum <rpm@xenomai.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
ae4f073c40bf677b03826262e6022b4a251fe437 22-Jun-2009 Robin Getz <robin.getz@analog.com> Blackfin: make EVT3->EVT5 lowering more robust wrt IPEND[4]

We handle many exceptions at EVT5 (hardware error level) so that we can
catch exceptions in our exception handling code. Today - if the global
interrupt enable bit (IPEND[4]) is set (interrupts disabled) our trap
handling code goes into a infinite loop, since we need interrupts to be
on to defer things to EVT5.

Normal kernel code should not trigger this for any reason as IPEND[4] gets
cleared early (when doing an interrupt context save) and the kernel stack
there should be sane (or something much worse is happening in the system).
But there have been a few times where this has happened, so this change
makes sure we dump a proper crash message even when things have gone south.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
1997660cea28202ece0956cd44f332ac57700138 17-Jun-2009 Robin Getz <robin.getz@analog.com> Blackfin: cleanup code a bit with comments and defines

Improve the assembly with a few explanatory comments and use symbolic
defines rather than numeric values for bit positions.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
5ecf3e03cd513e8dba080d389b56bac11a2b0d8a 20-Jun-2009 Mike Frysinger <vapier@gentoo.org> Blackfin: hook up new perf_counter_open syscall

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
61cdd7a28f8b515140cb5d8aea518678f0fae024 12-Jun-2009 Mike Frysinger <vapier@gentoo.org> Blackfin: hook up new rt_tgsigqueueinfo syscall

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
16aadcb680e188bd0a6d7b0ecd5d0ceabd4fba4d 09-Jun-2009 Robin Getz <robin.getz@analog.com> Blackfin: only handle CPLB protection violations when MPU is enabled

We don't need to handle CPLB protection violations unless we are running
with the MPU on. Fix the entry code to call common trap_c, and remove the
code which is never run. This allows the traps test suite to run on older
boards with the MPU disabled.

URL: http://blackfin.uclinux.org/gf/tracker/5129
Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
b9a3899d59c3f0fc074573f0eba2419b1e4c0bca 18-May-2009 Robin Getz <robin.getz@analog.com> Blackfin: make deferred hardware errors more exact

Hardware errors on the Blackfin architecture are queued by nature of the
hardware design. Things that could generate a hardware level queue up at
the system interface and might not process until much later, at which
point the system would send a notification back to the core.

As such, it is possible for user space code to do something that would
trigger a hardware error, but have it delay long enough for the process
context to switch. So when the hardware error does signal, we mistakenly
evaluate it as a different process or as kernel context and panic (erp!).
This makes it pretty difficult to find the offending context. But wait,
there is good news somewhere.

By forcing a SSYNC in the interrupt entry, we force all pending queues at
the system level to be processed and all hardware errors to be signaled.
Then we check the current interrupt state to see if the hardware error is
now signaled. If so, we re-queue the current interrupt and return thus
allowing the higher priority hardware error interrupt to process properly.
Since we haven't done any other context processing yet, the right context
will be selected and killed. There is still the possibility that the
exact offending instruction will be unknown, but at least we'll have a
much better idea of where to look.

The downside of course is that this causes system-wide syncs at every
interrupt point which results in significant performance degradation.
Since this situation should not occur in any properly configured system
(as hardware errors are triggered by things like bad pointers), make it a
debug configuration option and disable it by default.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
f82e0a0c67621df83458753aef580a3508d5428e 08-Apr-2009 Graf Yang <graf.yang@analog.com> Blackfin: fix link failure due to CONFIG_EXCEPTION_L1_SCRATCH

Move exception stack mess from entry.S to init.c to fix link failure when
CONFIG_EXCEPTION_L1_SCRATCH is in use.

Signed-off-by: Graf Yang <graf.yang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
7a1450fdf4c69961f3926352fd8bc4ea19676756 26-May-2009 Mike Frysinger <vapier@gentoo.org> Blackfin: hook up preadv/pwritev syscalls

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
9bd50df6aa9bdd583793a16b0b9379dfd78c079e 04-Mar-2009 Philippe Gerum <rpm@xenomai.org> Blackfin arch: Update adeos blackfin arch patch to 1.9-00

Signed-off-by: Philippe Gerum <rpm@xenomai.org>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
3aee91bafef01bd5c59853346f1fcb85f701fdc1 04-Feb-2009 Jie Zhang <jie.zhang@analog.com> Blackfin arch: fix 2 bugs related to debug

- unable to single step over emuexcpt instruction
- gdbproxy goes into infinite loop when doing gdb does "next" over
"emuexcpt"

Don't decrement PC after software breakpoint.

Signed-off-by: Jie Zhang <jie.zhang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
dbdf20db537a5369c65330f878ad4905020a8bfa 07-Jan-2009 Bernd Schmidt <bernds_cb1@t-online.de> Blackfin arch: Faster C implementation of no-MPU CPLB handler

This is a mixture ofcMichael McTernan's patch and the existing cplb-mpu code.

We ditch the old cplb-nompu implementation, which is a good example of
why a good algorithm in a HLL is preferrable to a bad algorithm written in
assembly. Rather than try to construct a table of all posible CPLBs and
search it, we just create a (smaller) table of memory regions and
their attributes. Some of the data structures are now unified for both
the mpu and nompu cases. A lot of needless complexity in cplbinit.c is
removed.

Further optimizations:
* compile cplbmgr.c with a lot of -ffixed-reg options, and omit saving
these registers on the stack when entering a CPLB exception.
* lose cli/nop/nop/sti sequences for some workarounds - these don't
* make
sense in an exception context

Additional code unification should be possible after this.

[Mike Frysinger <vapier.adi@gmail.com>:
- convert CPP if statements to C if statements
- remove redundant statements
- use a do...while loop rather than a for loop to get slightly better
optimization and to avoid gcc "may be used uninitialized" warnings ...
we know that the [id]cplb_nr_bounds variables will never be 0, so this
is OK
- the no-mpu code was the last user of MAX_MEM_SIZE and with that rewritten,
we can punt it
- add some BUG_ON() checks to make sure we dont overflow the small
cplb_bounds array
- add i/d cplb entries for the bootrom because there is functions/data in
there we want to access
- we do not need a NULL trailing entry as any time we access the bounds
arrays, we use the nr_bounds variable
]

Signed-off-by: Michael McTernan <mmcternan@airvana.com>
Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
4213cb64004e38b3e78424f30e1e638f8004c7a8 18-Nov-2008 Graf Yang <graf.yang@analog.com> Blackfin arch: fix bug - Turn on DEBUG_DOUBLEFAULT, booting SMP kernel crash

Signed-off-by: Graf Yang <graf.yang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
33c8691f45459a41864562ae8d1ec12b4503f200 18-Nov-2008 Mike Frysinger <vapier.adi@gmail.com> Blackfin arch: fix building with CONFIG_DEBUG_DOUBLEFAULT

arch/blackfin/mach-common/entry.S:465: Error: pcrel too far
BFD_RELOC_BFIN_10

Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
400597842452c02916a61a51f3154dd032c2d569 18-Nov-2008 Mike Frysinger <vapier.adi@gmail.com> Blackfin arch: rename irq_flags to bfin_irq_flags

rename irq_flags to bfin_irq_flags to avoid namespace
collision with common code

Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
6b3087c64a92a36ae20d33479b4df6d7afc910d4 07-Jan-2009 Graf Yang <graf.yang@analog.com> Blackfin arch: SMP supporting patchset: Blackfin header files and machine common code

Blackfin dual core BF561 processor can support SMP like features.
https://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:smp-like

In this patch, we provide SMP extend to Blackfin header files
and machine common code

Signed-off-by: Graf Yang <graf.yang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
efe065a1b39974ff2bbb9aa693400f3de4ba5a6a 28-Oct-2008 Graf Yang <graf.yang@analog.com> Blackfin arch: fix bug - kernel with SMP patch can not bootup

The original code defined _exception_stack but not alloc space for the exception
stack. In exception, this area is over written by exception stack. Common kernel
luckly boot up, but SMP kernel stuck.

Signed-off-by: Graf Yang <graf.yang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
6ad2b84cf014d91a9dffa3f8edb008430fbdb445 28-Oct-2008 Mike Frysinger <vapier.adi@gmail.com> Blackfin arch: add an option to allow people to stick exception stack into L1 scratch

allow people to stick exception stack into L1 scratch
and make sure it gets placed into .bss sections rather than .data

Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
47664c1f86c833c4b6398885fdb2b80fc4945c6a 09-Oct-2008 Mike Frysinger <vapier.adi@gmail.com> Blackfin arch: give sys_strace proper entry markings

a global _sys_trace will cause the assembler to fail, it should be fixed in toolchain side firstly.

Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
5e9e7687cbc016ac36b6825f79d78213319331d9 08-Oct-2008 Michael Hennerich <michael.hennerich@analog.com> Blackfin arch: Fix BUG -- BF533 + 0.5 silicon + MPU + UART PIO -> crash

Apply ANOMALY_05000283 & ANOMALY_05000315
Workaround also to the EXCEPTION path.

Cover evt_ivhw also with ANOMALY_05000315
The Workaround needs to be prior to accesses (either read or write) to
any system MMR.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
a5ac0129249611fc4a35e6d7cd9b8462d67e5798 13-Oct-2008 Sonic Zhang <sonic.zhang@analog.com> Blackfin arch: add supporting for kgdb

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
0c7a6b2135c1bcb5139ca9ca87f292caafcb9410 08-Oct-2008 Robin Getz <rgetz@blackfin.uclinux.org> Blackfin arch: add supporting for double fault debug handling

Signed-off-by: Robin Getz <rgetz@blackfin.uclinux.org>
Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
639f6571458948b5112be2cf00c0c2c04db2897d 27-Aug-2008 Bryan Wu <cooloney@kernel.org> Blackfin arch: move include/asm-blackfin header files to arch/blackfin

Signed-off-by: Bryan Wu <cooloney@kernel.org>
a4b7b6d7d3f4f71e741a878bcca6226d8d326a34 14-Aug-2008 Bryan Wu <cooloney@kernel.org> Blackfin arch: hook up some missing new system calls

Signed-off-by: Bryan Wu <cooloney@kernel.org>
d6a29891369827317659b7833170d2f5f0c7b97f 05-Aug-2008 Sonic Zhang <sonic.zhang@analog.com> Blackfin arch: Fix bugs - Make kgdb code apparent to app debugging.

- Skip single step if global interrupt disable bit is set.
- Extend bernds' patch r4673 to skip single step in any interrupt entry
that interrupts the code which is under single stepping. Bernds' patch
only allow user space single stepping.

Singed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
5400c5aa2de41501be7529831c9df36c729bf371 05-Aug-2008 Jie Zhang <jie.zhang@analog.com> Blackfin arch: Fix bug - This change eliminates impact on application debugging

Signed-off-by: Jie Zhang <jie.zhang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
0d1cdd7ab6e0e7ccaf9f3b1d2afa0ddeead23ccc 26-Jul-2008 Sonic Zhang <sonic.zhang@analog.com> Blackfin arch: Fix bug - skip single step in high priority interrupt handler instead of disabling all interrupts in single step debugging.

Skip single step if event priority of current instruction is higher than
that of the first instruction, from which gdb starts single step.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
0893f1250f87e0a832f47bb60fb69ed0d52be7a3 07-May-2008 Bernd Schmidt <bernds_cb1@t-online.de> [Blackfin] arch: fix gdb testing regression

When transferring to IRQ5 from an exception, save SYSCFG in memory across the
transfer and clear the trace bit.

When we get a single step exception, check whether we can safely clear the
trace bit in SYSCFG. We can (and should) clear it after the first instruction
of the interrupt handler; the first insn saves SYSCFG to the stack in all
handlers.

Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
ddb3f00ca0897f585128a6cca229eeb9d91fa6ef 07-May-2008 Bernd Schmidt <bernds_cb1@t-online.de> [Blackfin] arch: In the double fault handler, set up the PT_RETI slot

In the double fault handler, set up the PT_RETI slot so that
we print out the correct return address in the dumping code.

Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
2f775dbaa541d6bc0cccf20aab95f7a0930ef7e9 07-Mar-2008 Bryan Wu <cooloney@kernel.org> [Blackfin] arch: to kill syscalls missing warning by adding new timerfd syscalls

Signed-off-by: Bryan Wu <cooloney@kernel.org>
5d750b9e4f6ca7d366b4954517ff8be9ee07e1bf 24-Apr-2008 Bernd Schmidt <bernds_cb1@t-online.de> [Blackfin] arch: Remove the circular buffering mechanism for exceptions

Remove the circular buffering mechanism for exceptions. Instead, point RETX
at a safe location from which to fetch three NOPs.

This safe location is now in the fixed code area, and also used for certain
anomaly workarounds, to ensure that user space can find a valid ICPLB when
things are built with CONFIG_MPU.

Also, save I/DCPLB_FAULT_ADDRESS when lowering to level 5, since the hardware
reg is valid only at exception level.

Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
2a0c4fdb6602ea066380aaf71ff7bb2f61ffeee8 23-Apr-2008 Bernd Schmidt <bernds_cb1@t-online.de> [Blackfin] arch: fix bug - when using trace buffer with CONFIG_MPU enabled.

There were a couple of problems with the way the trace buffer state
is saved/restored in assembly. The DEBUG_HWTRACE_SAVE/RESTORE macros
save a value to the stack, which is not immediately obvious; the CPLB
exception code needed changes to load the correct value of the stack
pointer. The other problem is that the SAVE/RESTORE macros weren't
pushing and popping the value downwards on the stack, but rather moving
it _upwards_, which is of course completely broken.

We also need to make sure there's a matching DEBUG_HWTRACE_RESTORE in
the error case of the CPLB handler.

Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
4d672e7ac79b5ec5cdc90e450823441e20464691 05-Feb-2008 Davide Libenzi <davidel@xmailserver.org> timerfd: new timerfd API

This is the new timerfd API as it is implemented by the following patch:

int timerfd_create(int clockid, int flags);
int timerfd_settime(int ufd, int flags,
const struct itimerspec *utmr,
struct itimerspec *otmr);
int timerfd_gettime(int ufd, struct itimerspec *otmr);

The timerfd_create() API creates an un-programmed timerfd fd. The "clockid"
parameter can be either CLOCK_MONOTONIC or CLOCK_REALTIME.

The timerfd_settime() API give new settings by the timerfd fd, by optionally
retrieving the previous expiration time (in case the "otmr" parameter is not
NULL).

The time value specified in "utmr" is absolute, if the TFD_TIMER_ABSTIME bit
is set in the "flags" parameter. Otherwise it's a relative time.

The timerfd_gettime() API returns the next expiration time of the timer, or
{0, 0} if the timerfd has not been set yet.

Like the previous timerfd API implementation, read(2) and poll(2) are
supported (with the same interface). Here's a simple test program I used to
exercise the new timerfd APIs:

http://www.xmailserver.org/timerfd-test2.c

[akpm@linux-foundation.org: coding-style cleanups]
[akpm@linux-foundation.org: fix ia64 build]
[akpm@linux-foundation.org: fix m68k build]
[akpm@linux-foundation.org: fix mips build]
[akpm@linux-foundation.org: fix alpha, arm, blackfin, cris, m68k, s390, sparc and sparc64 builds]
[heiko.carstens@de.ibm.com: fix s390]
[akpm@linux-foundation.org: fix powerpc build]
[akpm@linux-foundation.org: fix sparc64 more]
Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
Cc: Michael Kerrisk <mtk-manpages@gmx.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Davide Libenzi <davidel@xmailserver.org>
Cc: Michael Kerrisk <mtk-manpages@gmx.net>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Davide Libenzi <davidel@xmailserver.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
80f31c8a03d2f0644d0ceaf14e7e0108a007c962 02-Feb-2008 Mike Frysinger <vapier.adi@gmail.com> [Blackfin] arch: change the trace buffer control start/stop logic in the exception handlers

To save/restore the trace buffer control so that if we take an exception
after turning off the trace buffer at a higher level we dont inadvertently
turn the trace buffer back on

Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
9cb07b23dbc1c4c6ded49ba31d51b639a13970e3 21-Nov-2007 Mike Frysinger <michael.frysinger@analog.com> Blackfin arch: use common __INIT/__FINIT defines rather than setting the .section ourselves to .init.text

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
0bad33d93af85a445adeedc19c363ef4e492ddd3 21-Nov-2007 Bernd Schmidt <bernd.schmidt@analog.com> Blackfin arch: Need to specify ax with the .init.text section,

Need to specify "ax" with the .init.text section, otherwise the linker will
make unique .init.text.1 .. .init.text.3 sections to cope with the flags
46c87c3ccec0d81a7b695fe9d5edc86a7e446962 21-Nov-2007 Mike Frysinger <michael.frysinger@analog.com> Blackfin arch: Fix typo, and add ENDPROC - no functional changes

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
8d6c242062b90ce1b339e32a12fe183fe9612dcb 21-Nov-2007 Mike Frysinger <michael.frysinger@analog.com> Blackfin arch: rename _return_from_exception to _bfin_return_from_exception and export it

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
fc97551db9e4e9402ff2b5c94be8267b2e5f32f4 27-Jan-2008 Bernd Schmidt <bernd.schmidt@analog.com> [Blackfin] arch: Add the semtimedop syscall. Upstream uClibc doesn't compile without it.

Signed-off-by: Bernd Schmidt <bernd.schmidt@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
b97b8a998397e8c64699559099fa9febffae2b4d 27-Jan-2008 Bernd Schmidt <bernd.schmidt@analog.com> [Blackfin] arch: Initial checkin of the memory protection support.

Enable it with CONFIG_MPU.

Signed-off-by: Bernd Schmidt <bernd.schmidt@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
d5c4b5e3b2682a9aac07a43a8a79d3b692b22567 21-Dec-2007 Robin Getz <robin.getz@analog.com> [Blackfin] arch: Let the pre-processor do the math to save a few cycles - no functional changes

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
6f3ed704b03b2f9997b604690ac43a3514105a6a 21-Dec-2007 Robin Getz <robin.getz@analog.com> [Blackfin] arch: do not use fixed numbers to describe offsets - no functional changes

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
f26fbc48f130962fce15f37d079968f0f272e0c2 12-Nov-2007 Robin Getz <robin.getz@analog.com> Blackfin arch: ensure we work around ANOMALY_05000261 for null pointers

We currently do not. Also make it easier to handle cplb violations - in traps.c

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
9f336a53266f43ae1002f4aaad5373944589c828 29-Oct-2007 Robin Getz <robin.getz@analog.com> Blackfin arch: ensure that speculative loads of bad pointers don't cause us to do bad things.

Fix/change formatting of a few more things.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
0b95f22bd3b91c7114c6892bbfbb5a8576b27fbe 22-Sep-2007 Bryan Wu <bryan.wu@analog.com> Blackfin arch: add some missing syscall

When compiling the Blackfin kernel, checksyscalls.pl will report lots of missing syscalls warnings.
This patch will add some missing syscalls which make sense on Blackfin arch

After appling this patch, toolchain should be rebuilt. Then recompiling the kernel with the new
toolchain.

Signed-off-by: Bryan Wu <bryan.wu@analog.com>
b3f8b9276314f4942ef9033aa5f4dc184901d640 10-Oct-2007 Robin Getz <robin.getz@analog.com> Blackfin arch: the load address is not safe to point to as a workaround for ANOMALY 05000281

Now that we have moved head.S into the init section, the load
address is not safe to point to as a workaround for ANOMALY 05000281

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
337d390b3a9c1ce92a12bdb77b9ae6ded6273b12 09-Oct-2007 Robin Getz <robin.getz@analog.com> Blackfin arch: Print out debug info, as early as possible

Print out debug info, as early as possible - even before the
kernel initializes the interrupt vectors. Now we can print out debug
messages almost anytime during the boot process.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
2ebcade590dcf822dcdadcc4f8f68efd3ff2e217 09-Oct-2007 Robin Getz <robin.getz@analog.com> Blackfin arch: fix endless loop bug when a double fault happens

Today when a double fault happens (exception during an exception
handling event), we go into an endless loop, with nothing comming out
the UART. With this patch, we actually see that we have commited a
double fault event

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
1ffe6646babf8471714e649849ec2c9662bf410c 05-Aug-2007 Mike Frysinger <michael.frysinger@analog.com> Blackfin arch: add an exception request/free api

add an exception request/free api similar to the interrupt request/fre
api so people can utilize the free software based exceptions for their
own purposes

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
f0b5d12f2b3226c85258519d7725e63d9daf5e90 05-Aug-2007 Mike Frysinger <michael.frysinger@analog.com> Blackfin arch: allow people to select the feature that is unavailable to the kernel

- allow people to select the feature that is unavailable to the kernel: NMI, JTAG, or CYCLES.
- change default NMI handler to simply dump hardware trace buffer.
- remove default NMI handler completely as calling into kernel code is not safe
move example handler to wiki so people dont haphazardly copy and paste this stuff thinking its safe

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
518039bc24cbb9ce34665814fe120eac50bedd9a 25-Jul-2007 Robin Getz <robin.getz@analog.com> Blackfin arch: Add ability to expend the hardware trace buffer

Add ability to expend the hardware trace buffer via a configurable
software buffer - so you can have lots of history when a crash occurs.

The interesting way we do printk in the traps.c confusese the checking
script

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
1aafd9091226a02b481298315f959f777294684e 25-Jul-2007 Mike Frysinger <michael.frysinger@analog.com> Blackfin arch: revise anomaly handling by basing things on the compiler not the kconfig defines

revise anomaly handling by basing things on the compiler not the kconfig defines,
so the header is stable and usable outside of the kernel. This also allows us to
move some code from preprocessing to compiling (gcc culls dead code)
which should help with code quality (readability, catch minor bugs, etc...).

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
9401e618c8f70920f34893946239e24d40a3519a 12-Jul-2007 Mike Frysinger <michael.frysinger@analog.com> Blackfin arch: scrub dead code

we converted to using a system call for userspace spinlocks
rather than a dedicated exception long ago

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
1f83b8f148a1eb967d2a628cbb741cd56fb54572 12-Jul-2007 Mike Frysinger <michael.frysinger@analog.com> Blackfin arch: cleanup warnings from checkpatch -- no functional changes

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
669b792c77bbc30e9f4d9c95dbc918dc348c49c2 21-Jun-2007 Robin Getz <robin.getz@analog.com> Blackfin arch: Clean up trace buffer handling, No major functional changes.

Turns on trace earlier, so crashes at kernel start should print out a
trace, making things easier to debug.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
7adfb58fbd0a27469d26536f99b66391c4c8e2a0 21-Jun-2007 Bernd Schmidt <bernd.schmidt@analog.com> Blackfin arch: defines and provides entry points for certain user space functions at fixed addresses

This patch defines (and provides) entry points for certain user space functions
at fixed addresses. The Blackfin has no usable atomic instructions, but we can
ensure that these code sequences appear atomic from a user space point of view
by detecting when we're in the process of executing them during the interrupt
handler return path. This allows much more efficient pthread lock
implementations than the bfin_spinlock syscall we're currently using.

Also provided is a small sys_rt_sigreturn stub which can be used by the signal
handler setup code. The signal.c part will be committed separately.

Signed-off-by: Bernd Schmidt <bernd.schmidt@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
51be24c351bc9ee4937121100adb098eeb1effdd 11-Jun-2007 Mike Frysinger <michael.frysinger@analog.com> Blackfin arch: add proper ENDPROC()

add proper ENDPROC() to close out assembly functions
so size/type is set properly in the final ELF image

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
c824498db47285aeff430c007685a193b673c949 21-May-2007 Bernd Schmidt <bernd.schmidt@analog.com> Blackfin arch: fix signal handling bug

There's a forum thread at
https://blackfin.uclinux.org/gf/project/uclinux-dist/forum/?action=ForumBrowse&_forum_action=MessageReply&message_id=24741

which has a testcase involving signal handling that crashes quite readily.
Inspecting the code I believe what happens is that signal handling can become
confused when it is invoked on return from an interrupt, if the contents of
P0 and R0 at the time of the interrupt happen to be such that P0 is larger
than zero (indicating to the signal code that we're in a syscall), and R0
happens to have a value of something like -EINTR or -ERESTARTSYS.
Fixed by setting orig_p0 to -1 if we're returning from an interrupt. The
testcase now seems to run without problems.

Signed-off-by: Bernd Schmidt <bernd.schmidt@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
8af10b79877ff5dfd5c7b1928d57cf38483e819d 21-May-2007 Michael Hennerich <michael.hennerich@analog.com> Blackfin arch: Add Workaround for ANOMALY 05000257

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1394f03221790a988afc3e4b3cb79f2e477246a9 06-May-2007 Bryan Wu <bryan.wu@analog.com> blackfin architecture

This adds support for the Analog Devices Blackfin processor architecture, and
currently supports the BF533, BF532, BF531, BF537, BF536, BF534, and BF561
(Dual Core) devices, with a variety of development platforms including those
avaliable from Analog Devices (BF533-EZKit, BF533-STAMP, BF537-STAMP,
BF561-EZKIT), and Bluetechnix! Tinyboards.

The Blackfin architecture was jointly developed by Intel and Analog Devices
Inc. (ADI) as the Micro Signal Architecture (MSA) core and introduced it in
December of 2000. Since then ADI has put this core into its Blackfin
processor family of devices. The Blackfin core has the advantages of a clean,
orthogonal,RISC-like microprocessor instruction set. It combines a dual-MAC
(Multiply/Accumulate), state-of-the-art signal processing engine and
single-instruction, multiple-data (SIMD) multimedia capabilities into a single
instruction-set architecture.

The Blackfin architecture, including the instruction set, is described by the
ADSP-BF53x/BF56x Blackfin Processor Programming Reference
http://blackfin.uclinux.org/gf/download/frsrelease/29/2549/Blackfin_PRM.pdf

The Blackfin processor is already supported by major releases of gcc, and
there are binary and source rpms/tarballs for many architectures at:
http://blackfin.uclinux.org/gf/project/toolchain/frs There is complete
documentation, including "getting started" guides available at:
http://docs.blackfin.uclinux.org/ which provides links to the sources and
patches you will need in order to set up a cross-compiling environment for
bfin-linux-uclibc

This patch, as well as the other patches (toolchain, distribution,
uClibc) are actively supported by Analog Devices Inc, at:
http://blackfin.uclinux.org/

We have tested this on LTP, and our test plan (including pass/fails) can
be found at:
http://docs.blackfin.uclinux.org/doku.php?id=testing_the_linux_kernel

[m.kozlowski@tuxland.pl: balance parenthesis in blackfin header files]
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Signed-off-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
Signed-off-by: Aubrey Li <aubrey.li@analog.com>
Signed-off-by: Jie Zhang <jie.zhang@analog.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>