-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
David Howells
committed
Mar 28, 2012
1 parent
f642da0
commit 0b43091
Showing
18 changed files
with
242 additions
and
171 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: ae473946586680b01c13975a3b674de23ad7c93e | ||
refs/heads/master: 6a846f3f821a252762897751fa0aeb68dda635f5 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
/* | ||
* Port on Texas Instruments TMS320C6x architecture | ||
* | ||
* Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
* Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
#ifndef _ASM_C6X_BARRIER_H | ||
#define _ASM_C6X_BARRIER_H | ||
|
||
#define nop() asm("NOP\n"); | ||
|
||
#define mb() barrier() | ||
#define rmb() barrier() | ||
#define wmb() barrier() | ||
#define set_mb(var, value) do { var = value; mb(); } while (0) | ||
#define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
|
||
#define smp_mb() barrier() | ||
#define smp_rmb() barrier() | ||
#define smp_wmb() barrier() | ||
#define smp_read_barrier_depends() do { } while (0) | ||
|
||
#endif /* _ASM_C6X_BARRIER_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,7 +15,6 @@ | |
|
||
#include <linux/bitops.h> | ||
|
||
#include <asm/system.h> | ||
#include <asm/byteorder.h> | ||
|
||
/* | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* | ||
* Port on Texas Instruments TMS320C6x architecture | ||
* | ||
* Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
* Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
#ifndef _ASM_C6X_BUG_H | ||
#define _ASM_C6X_BUG_H | ||
|
||
#include <linux/linkage.h> | ||
#include <asm-generic/bug.h> | ||
|
||
struct pt_regs; | ||
|
||
extern void die(char *str, struct pt_regs *fp, int nr); | ||
extern asmlinkage int process_exception(struct pt_regs *regs); | ||
extern asmlinkage void enable_exception(void); | ||
|
||
#endif /* _ASM_C6X_BUG_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
/* | ||
* Port on Texas Instruments TMS320C6x architecture | ||
* | ||
* Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
* Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
#ifndef _ASM_C6X_CMPXCHG_H | ||
#define _ASM_C6X_CMPXCHG_H | ||
|
||
#include <linux/irqflags.h> | ||
|
||
/* | ||
* Misc. functions | ||
*/ | ||
static inline unsigned int __xchg(unsigned int x, volatile void *ptr, int size) | ||
{ | ||
unsigned int tmp; | ||
unsigned long flags; | ||
|
||
local_irq_save(flags); | ||
|
||
switch (size) { | ||
case 1: | ||
tmp = 0; | ||
tmp = *((unsigned char *) ptr); | ||
*((unsigned char *) ptr) = (unsigned char) x; | ||
break; | ||
case 2: | ||
tmp = 0; | ||
tmp = *((unsigned short *) ptr); | ||
*((unsigned short *) ptr) = x; | ||
break; | ||
case 4: | ||
tmp = 0; | ||
tmp = *((unsigned int *) ptr); | ||
*((unsigned int *) ptr) = x; | ||
break; | ||
} | ||
local_irq_restore(flags); | ||
return tmp; | ||
} | ||
|
||
#define xchg(ptr, x) \ | ||
((__typeof__(*(ptr)))__xchg((unsigned int)(x), (void *) (ptr), \ | ||
sizeof(*(ptr)))) | ||
#define tas(ptr) xchg((ptr), 1) | ||
|
||
|
||
#include <asm-generic/cmpxchg-local.h> | ||
|
||
/* | ||
* cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
* them available. | ||
*/ | ||
#define cmpxchg_local(ptr, o, n) \ | ||
((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), \ | ||
(unsigned long)(o), \ | ||
(unsigned long)(n), \ | ||
sizeof(*(ptr)))) | ||
#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
|
||
#include <asm-generic/cmpxchg.h> | ||
|
||
#endif /* _ASM_C6X_CMPXCHG_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#ifndef _ASM_C6X_EXEC_H | ||
#define _ASM_C6X_EXEC_H | ||
|
||
#define arch_align_stack(x) (x) | ||
|
||
#endif /* _ASM_C6X_EXEC_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/* | ||
* Port on Texas Instruments TMS320C6x architecture | ||
* | ||
* Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
* Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
#ifndef _ASM_C6X_SPECIAL_INSNS_H | ||
#define _ASM_C6X_SPECIAL_INSNS_H | ||
|
||
|
||
#define get_creg(reg) \ | ||
({ unsigned int __x; \ | ||
asm volatile ("mvc .s2 " #reg ",%0\n" : "=b"(__x)); __x; }) | ||
|
||
#define set_creg(reg, v) \ | ||
do { unsigned int __x = (unsigned int)(v); \ | ||
asm volatile ("mvc .s2 %0," #reg "\n" : : "b"(__x)); \ | ||
} while (0) | ||
|
||
#define or_creg(reg, n) \ | ||
do { unsigned __x, __n = (unsigned)(n); \ | ||
asm volatile ("mvc .s2 " #reg ",%0\n" \ | ||
"or .l2 %1,%0,%0\n" \ | ||
"mvc .s2 %0," #reg "\n" \ | ||
"nop\n" \ | ||
: "=&b"(__x) : "b"(__n)); \ | ||
} while (0) | ||
|
||
#define and_creg(reg, n) \ | ||
do { unsigned __x, __n = (unsigned)(n); \ | ||
asm volatile ("mvc .s2 " #reg ",%0\n" \ | ||
"and .l2 %1,%0,%0\n" \ | ||
"mvc .s2 %0," #reg "\n" \ | ||
"nop\n" \ | ||
: "=&b"(__x) : "b"(__n)); \ | ||
} while (0) | ||
|
||
#define get_coreid() (get_creg(DNUM) & 0xff) | ||
|
||
/* Set/get IST */ | ||
#define set_ist(x) set_creg(ISTP, x) | ||
#define get_ist() get_creg(ISTP) | ||
|
||
/* | ||
* Exception management | ||
*/ | ||
#define disable_exception() | ||
#define get_except_type() get_creg(EFR) | ||
#define ack_exception(type) set_creg(ECR, 1 << (type)) | ||
#define get_iexcept() get_creg(IERR) | ||
#define set_iexcept(mask) set_creg(IERR, (mask)) | ||
|
||
#define _extu(x, s, e) \ | ||
({ unsigned int __x; \ | ||
asm volatile ("extu .S2 %3,%1,%2,%0\n" : \ | ||
"=b"(__x) : "n"(s), "n"(e), "b"(x)); \ | ||
__x; }) | ||
|
||
#endif /* _ASM_C6X_SPECIAL_INSNS_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/* | ||
* Port on Texas Instruments TMS320C6x architecture | ||
* | ||
* Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
* Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
#ifndef _ASM_C6X_SWITCH_TO_H | ||
#define _ASM_C6X_SWITCH_TO_H | ||
|
||
#include <linux/linkage.h> | ||
|
||
#define prepare_to_switch() do { } while (0) | ||
|
||
struct task_struct; | ||
struct thread_struct; | ||
asmlinkage void *__switch_to(struct thread_struct *prev, | ||
struct thread_struct *next, | ||
struct task_struct *tsk); | ||
|
||
#define switch_to(prev, next, last) \ | ||
do { \ | ||
current->thread.wchan = (u_long) __builtin_return_address(0); \ | ||
(last) = __switch_to(&(prev)->thread, \ | ||
&(next)->thread, (prev)); \ | ||
mb(); \ | ||
current->thread.wchan = 0; \ | ||
} while (0) | ||
|
||
#endif /* _ASM_C6X_SWITCH_TO_H */ |
Oops, something went wrong.