Merge branch 'linus_origin' into hotfixes
This commit is contained in:
commit
52833e897f
|
@ -109,6 +109,8 @@ cpu-hotplug.txt
|
|||
- document describing CPU hotplug support in the Linux kernel.
|
||||
cpu-load.txt
|
||||
- document describing how CPU load statistics are collected.
|
||||
cpuidle/
|
||||
- info on CPU_IDLE, CPU idle state management subsystem.
|
||||
cpusets.txt
|
||||
- documents the cpusets feature; assign CPUs and Mem to a set of tasks.
|
||||
cputopology.txt
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
|
||||
Supporting multiple CPU idle levels in kernel
|
||||
|
||||
cpuidle
|
||||
|
||||
General Information:
|
||||
|
||||
Various CPUs today support multiple idle levels that are differentiated
|
||||
by varying exit latencies and power consumption during idle.
|
||||
cpuidle is a generic in-kernel infrastructure that separates
|
||||
idle policy (governor) from idle mechanism (driver) and provides a
|
||||
standardized infrastructure to support independent development of
|
||||
governors and drivers.
|
||||
|
||||
cpuidle resides under drivers/cpuidle.
|
||||
|
||||
Boot options:
|
||||
"cpuidle_sysfs_switch"
|
||||
enables current_governor interface in /sys/devices/system/cpu/cpuidle/,
|
||||
which can be used to switch governors at run time. This boot option
|
||||
is meant for developer testing only. In normal usage, kernel picks the
|
||||
best governor based on governor ratings.
|
||||
SEE ALSO: sysfs.txt in this directory.
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
|
||||
Supporting multiple CPU idle levels in kernel
|
||||
|
||||
cpuidle drivers
|
||||
|
||||
|
||||
|
||||
|
||||
cpuidle driver hooks into the cpuidle infrastructure and handles the
|
||||
architecture/platform dependent part of CPU idle states. Driver
|
||||
provides the platform idle state detection capability and also
|
||||
has mechanisms in place to support actual entry-exit into CPU idle states.
|
||||
|
||||
cpuidle driver initializes the cpuidle_device structure for each CPU device
|
||||
and registers with cpuidle using cpuidle_register_device.
|
||||
|
||||
It can also support the dynamic changes (like battery <-> AC), by using
|
||||
cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device,
|
||||
cpuidle_resume_and_unlock.
|
||||
|
||||
Interfaces:
|
||||
extern int cpuidle_register_driver(struct cpuidle_driver *drv);
|
||||
extern void cpuidle_unregister_driver(struct cpuidle_driver *drv);
|
||||
extern int cpuidle_register_device(struct cpuidle_device *dev);
|
||||
extern void cpuidle_unregister_device(struct cpuidle_device *dev);
|
||||
|
||||
extern void cpuidle_pause_and_lock(void);
|
||||
extern void cpuidle_resume_and_unlock(void);
|
||||
extern int cpuidle_enable_device(struct cpuidle_device *dev);
|
||||
extern void cpuidle_disable_device(struct cpuidle_device *dev);
|
|
@ -0,0 +1,29 @@
|
|||
|
||||
|
||||
|
||||
Supporting multiple CPU idle levels in kernel
|
||||
|
||||
cpuidle governors
|
||||
|
||||
|
||||
|
||||
|
||||
cpuidle governor is policy routine that decides what idle state to enter at
|
||||
any given time. cpuidle core uses different callbacks to the governor.
|
||||
|
||||
* enable() to enable governor for a particular device
|
||||
* disable() to disable governor for a particular device
|
||||
* select() to select an idle state to enter
|
||||
* reflect() called after returning from the idle state, which can be used
|
||||
by the governor for some record keeping.
|
||||
|
||||
More than one governor can be registered at the same time and
|
||||
users can switch between drivers using /sysfs interface (when enabled).
|
||||
More than one governor part is supported for developers to easily experiment
|
||||
with different governors. By default, most optimal governor based on your
|
||||
kernel configuration and platform will be selected by cpuidle.
|
||||
|
||||
Interfaces:
|
||||
extern int cpuidle_register_governor(struct cpuidle_governor *gov);
|
||||
extern void cpuidle_unregister_governor(struct cpuidle_governor *gov);
|
||||
struct cpuidle_governor
|
|
@ -0,0 +1,79 @@
|
|||
|
||||
|
||||
Supporting multiple CPU idle levels in kernel
|
||||
|
||||
cpuidle sysfs
|
||||
|
||||
System global cpuidle related information and tunables are under
|
||||
/sys/devices/system/cpu/cpuidle
|
||||
|
||||
The current interfaces in this directory has self-explanatory names:
|
||||
* current_driver
|
||||
* current_governor_ro
|
||||
|
||||
With cpuidle_sysfs_switch boot option (meant for developer testing)
|
||||
following objects are visible instead.
|
||||
* current_driver
|
||||
* available_governors
|
||||
* current_governor
|
||||
In this case users can switch the governor at run time by writing
|
||||
to current_governor.
|
||||
|
||||
|
||||
Per logical CPU specific cpuidle information are under
|
||||
/sys/devices/system/cpu/cpuX/cpuidle
|
||||
for each online cpu X
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
# ls -lR /sys/devices/system/cpu/cpu0/cpuidle/
|
||||
/sys/devices/system/cpu/cpu0/cpuidle/:
|
||||
total 0
|
||||
drwxr-xr-x 2 root root 0 Feb 8 10:42 state0
|
||||
drwxr-xr-x 2 root root 0 Feb 8 10:42 state1
|
||||
drwxr-xr-x 2 root root 0 Feb 8 10:42 state2
|
||||
drwxr-xr-x 2 root root 0 Feb 8 10:42 state3
|
||||
|
||||
/sys/devices/system/cpu/cpu0/cpuidle/state0:
|
||||
total 0
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 desc
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 latency
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 name
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 power
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 time
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 usage
|
||||
|
||||
/sys/devices/system/cpu/cpu0/cpuidle/state1:
|
||||
total 0
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 desc
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 latency
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 name
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 power
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 time
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 usage
|
||||
|
||||
/sys/devices/system/cpu/cpu0/cpuidle/state2:
|
||||
total 0
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 desc
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 latency
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 name
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 power
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 time
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 usage
|
||||
|
||||
/sys/devices/system/cpu/cpu0/cpuidle/state3:
|
||||
total 0
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 desc
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 latency
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 name
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 power
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 time
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 usage
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
* desc : Small description about the idle state (string)
|
||||
* latency : Latency to exit out of this idle state (in microseconds)
|
||||
* name : Name of the idle state (string)
|
||||
* power : Power consumed while in this idle state (in milliwatts)
|
||||
* time : Total time spent in this idle state (in microseconds)
|
||||
* usage : Number of times this state was entered (count)
|
|
@ -1255,8 +1255,8 @@ W: http://linux-net.osdl.org/index.php/DCCP
|
|||
S: Maintained
|
||||
|
||||
DECnet NETWORK LAYER
|
||||
P: Patrick Caulfield
|
||||
M: patrick@tykepenguin.com
|
||||
P: Christine Caulfield
|
||||
M: christine.caulfield@googlemail.com
|
||||
W: http://linux-decnet.sourceforge.net
|
||||
L: linux-decnet-user@lists.sourceforge.net
|
||||
S: Maintained
|
||||
|
@ -1318,8 +1318,8 @@ L: linux-kernel@vger.kernel.org
|
|||
S: Maintained
|
||||
|
||||
DISTRIBUTED LOCK MANAGER
|
||||
P: Patrick Caulfield
|
||||
M: pcaulfie@redhat.com
|
||||
P: Christine Caulfield
|
||||
M: ccaulfie@redhat.com
|
||||
P: David Teigland
|
||||
M: teigland@redhat.com
|
||||
L: cluster-devel@redhat.com
|
||||
|
@ -1616,6 +1616,7 @@ S: Maintained
|
|||
FILESYSTEMS (VFS and infrastructure)
|
||||
P: Alexander Viro
|
||||
M: viro@zeniv.linux.org.uk
|
||||
L: linux-fsdevel@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
FIREWIRE SUBSYSTEM (drivers/firewire, <linux/firewire*.h>)
|
||||
|
|
|
@ -259,8 +259,8 @@ osf_statfs(char __user *path, struct osf_statfs __user *buffer, unsigned long bu
|
|||
|
||||
retval = user_path_walk(path, &nd);
|
||||
if (!retval) {
|
||||
retval = do_osf_statfs(nd.dentry, buffer, bufsiz);
|
||||
path_release(&nd);
|
||||
retval = do_osf_statfs(nd.path.dentry, buffer, bufsiz);
|
||||
path_put(&nd.path);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
|
|
@ -126,15 +126,13 @@ static void decode_address(char *buf, unsigned long address)
|
|||
struct vm_area_struct *vma = vml->vma;
|
||||
|
||||
if (address >= vma->vm_start && address < vma->vm_end) {
|
||||
char _tmpbuf[256];
|
||||
char *name = p->comm;
|
||||
struct file *file = vma->vm_file;
|
||||
if (file) {
|
||||
char _tmpbuf[256];
|
||||
name = d_path(file->f_dentry,
|
||||
file->f_vfsmnt,
|
||||
_tmpbuf,
|
||||
sizeof(_tmpbuf));
|
||||
}
|
||||
|
||||
if (file)
|
||||
name = d_path(&file->f_path, _tmpbuf,
|
||||
sizeof(_tmpbuf));
|
||||
|
||||
/* FLAT does not have its text aligned to the start of
|
||||
* the map while FDPIC ELF does ...
|
||||
|
|
|
@ -1,252 +1,259 @@
|
|||
/*#************************************************************************#*/
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/*# */
|
||||
/*# FUNCTION NAME: memset() */
|
||||
/*# */
|
||||
/*# PARAMETERS: void* dst; Destination address. */
|
||||
/*# int c; Value of byte to write. */
|
||||
/*# int len; Number of bytes to write. */
|
||||
/*# */
|
||||
/*# RETURNS: dst. */
|
||||
/*# */
|
||||
/*# DESCRIPTION: Sets the memory dst of length len bytes to c, as standard. */
|
||||
/*# Framework taken from memcpy. This routine is */
|
||||
/*# very sensitive to compiler changes in register allocation. */
|
||||
/*# Should really be rewritten to avoid this problem. */
|
||||
/*# */
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/*# */
|
||||
/*# HISTORY */
|
||||
/*# */
|
||||
/*# DATE NAME CHANGES */
|
||||
/*# ---- ---- ------- */
|
||||
/*# 990713 HP Tired of watching this function (or */
|
||||
/*# really, the nonoptimized generic */
|
||||
/*# implementation) take up 90% of simulator */
|
||||
/*# output. Measurements needed. */
|
||||
/*# */
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/* A memset for CRIS.
|
||||
Copyright (C) 1999-2005 Axis Communications.
|
||||
All rights reserved.
|
||||
|
||||
#include <linux/types.h>
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
/* No, there's no macro saying 12*4, since it is "hard" to get it into
|
||||
the asm in a good way. Thus better to expose the problem everywhere.
|
||||
*/
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
/* Assuming 1 cycle per dword written or read (ok, not really true), and
|
||||
one per instruction, then 43+3*(n/48-1) <= 24+24*(n/48-1)
|
||||
so n >= 45.7; n >= 0.9; we win on the first full 48-byte block to set. */
|
||||
2. Neither the name of Axis Communications nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
#define ZERO_BLOCK_SIZE (1*12*4)
|
||||
THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||
COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE. */
|
||||
|
||||
void *memset(void *pdst,
|
||||
int c,
|
||||
size_t plen)
|
||||
/* FIXME: This file should really only be used for reference, as the
|
||||
result is somewhat depending on gcc generating what we expect rather
|
||||
than what we describe. An assembly file should be used instead. */
|
||||
|
||||
/* Note the multiple occurrence of the expression "12*4", including the
|
||||
asm. It is hard to get it into the asm in a good way. Thus better to
|
||||
expose the problem everywhere: no macro. */
|
||||
|
||||
/* Assuming one cycle per dword written or read (ok, not really true; the
|
||||
world is not ideal), and one cycle per instruction, then 43+3*(n/48-1)
|
||||
<= 24+24*(n/48-1) so n >= 45.7; n >= 0.9; we win on the first full
|
||||
48-byte block to set. */
|
||||
|
||||
#define MEMSET_BY_BLOCK_THRESHOLD (1 * 48)
|
||||
|
||||
/* No name ambiguities in this file. */
|
||||
__asm__ (".syntax no_register_prefix");
|
||||
|
||||
void *memset(void *pdst, int c, unsigned int plen)
|
||||
{
|
||||
/* Ok. Now we want the parameters put in special registers.
|
||||
Make sure the compiler is able to make something useful of this. */
|
||||
/* Now we want the parameters in special registers. Make sure the
|
||||
compiler does something usable with this. */
|
||||
|
||||
register char *return_dst __asm__ ("r10") = pdst;
|
||||
register int n __asm__ ("r12") = plen;
|
||||
register int lc __asm__ ("r11") = c;
|
||||
|
||||
/* Most apps use memset sanely. Only those memsetting about 3..4
|
||||
bytes or less get penalized compared to the generic implementation
|
||||
- and that's not really sane use. */
|
||||
/* Most apps use memset sanely. Memsetting about 3..4 bytes or less get
|
||||
penalized here compared to the generic implementation. */
|
||||
|
||||
/* Ugh. This is fragile at best. Check with newer GCC releases, if
|
||||
they compile cascaded "x |= x << 8" sanely! */
|
||||
__asm__("movu.b %0,$r13\n\t"
|
||||
"lslq 8,$r13\n\t"
|
||||
"move.b %0,$r13\n\t"
|
||||
"move.d $r13,%0\n\t"
|
||||
"lslq 16,$r13\n\t"
|
||||
"or.d $r13,%0"
|
||||
: "=r" (lc) : "0" (lc) : "r13");
|
||||
/* This is fragile performancewise at best. Check with newer GCC
|
||||
releases, if they compile cascaded "x |= x << 8" to sane code. */
|
||||
__asm__("movu.b %0,r13 \n\
|
||||
lslq 8,r13 \n\
|
||||
move.b %0,r13 \n\
|
||||
move.d r13,%0 \n\
|
||||
lslq 16,r13 \n\
|
||||
or.d r13,%0"
|
||||
: "=r" (lc) /* Inputs. */
|
||||
: "0" (lc) /* Outputs. */
|
||||
: "r13"); /* Trash. */
|
||||
|
||||
{
|
||||
register char *dst __asm__ ("r13") = pdst;
|
||||
|
||||
/* This is NONPORTABLE, but since this whole routine is */
|
||||
/* grossly nonportable that doesn't matter. */
|
||||
if (((unsigned long) pdst & 3) != 0
|
||||
/* Oops! n = 0 must be a valid call, regardless of alignment. */
|
||||
&& n >= 3)
|
||||
{
|
||||
if ((unsigned long) dst & 1)
|
||||
{
|
||||
*dst = (char) lc;
|
||||
n--;
|
||||
dst++;
|
||||
}
|
||||
|
||||
if (((unsigned long) pdst & 3) != 0
|
||||
/* Oops! n=0 must be a legal call, regardless of alignment. */
|
||||
&& n >= 3)
|
||||
{
|
||||
if ((unsigned long)dst & 1)
|
||||
{
|
||||
*dst = (char) lc;
|
||||
n--;
|
||||
dst++;
|
||||
}
|
||||
if ((unsigned long) dst & 2)
|
||||
{
|
||||
*(short *) dst = lc;
|
||||
n -= 2;
|
||||
dst += 2;
|
||||
}
|
||||
}
|
||||
|
||||
if ((unsigned long)dst & 2)
|
||||
{
|
||||
*(short *)dst = lc;
|
||||
n -= 2;
|
||||
dst += 2;
|
||||
}
|
||||
}
|
||||
|
||||
/* Now the fun part. For the threshold value of this, check the equation
|
||||
above. */
|
||||
/* Decide which copying method to use. */
|
||||
if (n >= ZERO_BLOCK_SIZE)
|
||||
{
|
||||
/* For large copies we use 'movem' */
|
||||
|
||||
/* It is not optimal to tell the compiler about clobbering any
|
||||
registers; that will move the saving/restoring of those registers
|
||||
to the function prologue/epilogue, and make non-movem sizes
|
||||
suboptimal.
|
||||
|
||||
This method is not foolproof; it assumes that the "asm reg"
|
||||
declarations at the beginning of the function really are used
|
||||
here (beware: they may be moved to temporary registers).
|
||||
This way, we do not have to save/move the registers around into
|
||||
temporaries; we can safely use them straight away.
|
||||
|
||||
If you want to check that the allocation was right; then
|
||||
check the equalities in the first comment. It should say
|
||||
"r13=r13, r12=r12, r11=r11" */
|
||||
__asm__ volatile ("\n\
|
||||
;; Check that the following is true (same register names on \n\
|
||||
;; both sides of equal sign, as in r8=r8): \n\
|
||||
;; %0=r13, %1=r12, %4=r11 \n\
|
||||
;; \n\
|
||||
;; Save the registers we'll clobber in the movem process \n\
|
||||
;; on the stack. Don't mention them to gcc, it will only be \n\
|
||||
;; upset. \n\
|
||||
subq 11*4,$sp \n\
|
||||
movem $r10,[$sp] \n\
|
||||
/* Decide which setting method to use. */
|
||||
if (n >= MEMSET_BY_BLOCK_THRESHOLD)
|
||||
{
|
||||
/* It is not optimal to tell the compiler about clobbering any
|
||||
registers; that will move the saving/restoring of those registers
|
||||
to the function prologue/epilogue, and make non-block sizes
|
||||
suboptimal. */
|
||||
__asm__ volatile
|
||||
("\
|
||||
;; GCC does promise correct register allocations, but let's \n\
|
||||
;; make sure it keeps its promises. \n\
|
||||
.ifnc %0-%1-%4,$r13-$r12-$r11 \n\
|
||||
.error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\" \n\
|
||||
.endif \n\
|
||||
\n\
|
||||
move.d $r11,$r0 \n\
|
||||
move.d $r11,$r1 \n\
|
||||
move.d $r11,$r2 \n\
|
||||
move.d $r11,$r3 \n\
|
||||
move.d $r11,$r4 \n\
|
||||
move.d $r11,$r5 \n\
|
||||
move.d $r11,$r6 \n\
|
||||
move.d $r11,$r7 \n\
|
||||
move.d $r11,$r8 \n\
|
||||
move.d $r11,$r9 \n\
|
||||
move.d $r11,$r10 \n\
|
||||
;; Save the registers we'll clobber in the movem process \n\
|
||||
;; on the stack. Don't mention them to gcc, it will only be \n\
|
||||
;; upset. \n\
|
||||
subq 11*4,sp \n\
|
||||
movem r10,[sp] \n\
|
||||
\n\
|
||||
;; Now we've got this: \n\
|
||||
;; r13 - dst \n\
|
||||
;; r12 - n \n\
|
||||
move.d r11,r0 \n\
|
||||
move.d r11,r1 \n\
|
||||
move.d r11,r2 \n\
|
||||
move.d r11,r3 \n\
|
||||
move.d r11,r4 \n\
|
||||
move.d r11,r5 \n\
|
||||
move.d r11,r6 \n\
|
||||
move.d r11,r7 \n\
|
||||
move.d r11,r8 \n\
|
||||
move.d r11,r9 \n\
|
||||
move.d r11,r10 \n\
|
||||
\n\
|
||||
;; Update n for the first loop \n\
|
||||
subq 12*4,$r12 \n\
|
||||
;; Now we've got this: \n\
|
||||
;; r13 - dst \n\
|
||||
;; r12 - n \n\
|
||||
\n\
|
||||
;; Update n for the first loop \n\
|
||||
subq 12*4,r12 \n\
|
||||
0: \n\
|
||||
subq 12*4,$r12 \n\
|
||||
bge 0b \n\
|
||||
movem $r11,[$r13+] \n\
|
||||
"
|
||||
#ifdef __arch_common_v10_v32
|
||||
/* Cater to branch offset difference between v32 and v10. We
|
||||
assume the branch below has an 8-bit offset. */
|
||||
" setf\n"
|
||||
#endif
|
||||
" subq 12*4,r12 \n\
|
||||
bge 0b \n\
|
||||
movem r11,[r13+] \n\
|
||||
\n\
|
||||
addq 12*4,$r12 ;; compensate for last loop underflowing n \n\
|
||||
;; Compensate for last loop underflowing n. \n\
|
||||
addq 12*4,r12 \n\
|
||||
\n\
|
||||
;; Restore registers from stack \n\
|
||||
movem [$sp+],$r10"
|
||||
;; Restore registers from stack. \n\
|
||||
movem [sp+],r10"
|
||||
|
||||
/* Outputs */ : "=r" (dst), "=r" (n)
|
||||
/* Inputs */ : "0" (dst), "1" (n), "r" (lc));
|
||||
/* Outputs. */
|
||||
: "=r" (dst), "=r" (n)
|
||||
|
||||
}
|
||||
/* Inputs. */
|
||||
: "0" (dst), "1" (n), "r" (lc));
|
||||
}
|
||||
|
||||
/* Either we directly starts copying, using dword copying
|
||||
in a loop, or we copy as much as possible with 'movem'
|
||||
and then the last block (<44 bytes) is copied here.
|
||||
This will work since 'movem' will have updated src,dst,n. */
|
||||
/* An ad-hoc unroll, used for 4*12-1..16 bytes. */
|
||||
while (n >= 16)
|
||||
{
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
n -= 16;
|
||||
}
|
||||
|
||||
while ( n >= 16 )
|
||||
{
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
n -= 16;
|
||||
}
|
||||
|
||||
/* A switch() is definitely the fastest although it takes a LOT of code.
|
||||
* Particularly if you inline code this.
|
||||
*/
|
||||
switch (n)
|
||||
{
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
*(char*)dst = (char) lc;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
*(short*)dst = (short) lc;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 9:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 10:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 11:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 12:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 13:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 14:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 15:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return return_dst; /* destination pointer. */
|
||||
} /* memset() */
|
||||
return return_dst;
|
||||
}
|
||||
|
|
|
@ -1,253 +1,259 @@
|
|||
/*#************************************************************************#*/
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/*# */
|
||||
/*# FUNCTION NAME: memset() */
|
||||
/*# */
|
||||
/*# PARAMETERS: void* dst; Destination address. */
|
||||
/*# int c; Value of byte to write. */
|
||||
/*# int len; Number of bytes to write. */
|
||||
/*# */
|
||||
/*# RETURNS: dst. */
|
||||
/*# */
|
||||
/*# DESCRIPTION: Sets the memory dst of length len bytes to c, as standard. */
|
||||
/*# Framework taken from memcpy. This routine is */
|
||||
/*# very sensitive to compiler changes in register allocation. */
|
||||
/*# Should really be rewritten to avoid this problem. */
|
||||
/*# */
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/*# */
|
||||
/*# HISTORY */
|
||||
/*# */
|
||||
/*# DATE NAME CHANGES */
|
||||
/*# ---- ---- ------- */
|
||||
/*# 990713 HP Tired of watching this function (or */
|
||||
/*# really, the nonoptimized generic */
|
||||
/*# implementation) take up 90% of simulator */
|
||||
/*# output. Measurements needed. */
|
||||
/*# */
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/* A memset for CRIS.
|
||||
Copyright (C) 1999-2005 Axis Communications.
|
||||
All rights reserved.
|
||||
|
||||
#include <linux/types.h>
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
/* No, there's no macro saying 12*4, since it is "hard" to get it into
|
||||
the asm in a good way. Thus better to expose the problem everywhere.
|
||||
*/
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
/* Assuming 1 cycle per dword written or read (ok, not really true), and
|
||||
one per instruction, then 43+3*(n/48-1) <= 24+24*(n/48-1)
|
||||
so n >= 45.7; n >= 0.9; we win on the first full 48-byte block to set. */
|
||||
2. Neither the name of Axis Communications nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
#define ZERO_BLOCK_SIZE (1*12*4)
|
||||
THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||
COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE. */
|
||||
|
||||
void *memset(void *pdst,
|
||||
int c,
|
||||
size_t plen)
|
||||
/* FIXME: This file should really only be used for reference, as the
|
||||
result is somewhat depending on gcc generating what we expect rather
|
||||
than what we describe. An assembly file should be used instead. */
|
||||
|
||||
/* Note the multiple occurrence of the expression "12*4", including the
|
||||
asm. It is hard to get it into the asm in a good way. Thus better to
|
||||
expose the problem everywhere: no macro. */
|
||||
|
||||
/* Assuming one cycle per dword written or read (ok, not really true; the
|
||||
world is not ideal), and one cycle per instruction, then 43+3*(n/48-1)
|
||||
<= 24+24*(n/48-1) so n >= 45.7; n >= 0.9; we win on the first full
|
||||
48-byte block to set. */
|
||||
|
||||
#define MEMSET_BY_BLOCK_THRESHOLD (1 * 48)
|
||||
|
||||
/* No name ambiguities in this file. */
|
||||
__asm__ (".syntax no_register_prefix");
|
||||
|
||||
void *memset(void *pdst, int c, unsigned int plen)
|
||||
{
|
||||
/* Ok. Now we want the parameters put in special registers.
|
||||
Make sure the compiler is able to make something useful of this. */
|
||||
/* Now we want the parameters in special registers. Make sure the
|
||||
compiler does something usable with this. */
|
||||
|
||||
register char *return_dst __asm__ ("r10") = pdst;
|
||||
register int n __asm__ ("r12") = plen;
|
||||
register int lc __asm__ ("r11") = c;
|
||||
|
||||
/* Most apps use memset sanely. Only those memsetting about 3..4
|
||||
bytes or less get penalized compared to the generic implementation
|
||||
- and that's not really sane use. */
|
||||
/* Most apps use memset sanely. Memsetting about 3..4 bytes or less get
|
||||
penalized here compared to the generic implementation. */
|
||||
|
||||
/* Ugh. This is fragile at best. Check with newer GCC releases, if
|
||||
they compile cascaded "x |= x << 8" sanely! */
|
||||
__asm__("movu.b %0,$r13 \n\
|
||||
lslq 8,$r13 \n\
|
||||
move.b %0,$r13 \n\
|
||||
move.d $r13,%0 \n\
|
||||
lslq 16,$r13 \n\
|
||||
or.d $r13,%0"
|
||||
: "=r" (lc) : "0" (lc) : "r13");
|
||||
/* This is fragile performancewise at best. Check with newer GCC
|
||||
releases, if they compile cascaded "x |= x << 8" to sane code. */
|
||||
__asm__("movu.b %0,r13 \n\
|
||||
lslq 8,r13 \n\
|
||||
move.b %0,r13 \n\
|
||||
move.d r13,%0 \n\
|
||||
lslq 16,r13 \n\
|
||||
or.d r13,%0"
|
||||
: "=r" (lc) /* Inputs. */
|
||||
: "0" (lc) /* Outputs. */
|
||||
: "r13"); /* Trash. */
|
||||
|
||||
{
|
||||
register char *dst __asm__ ("r13") = pdst;
|
||||
|
||||
/* This is NONPORTABLE, but since this whole routine is */
|
||||
/* grossly nonportable that doesn't matter. */
|
||||
if (((unsigned long) pdst & 3) != 0
|
||||
/* Oops! n = 0 must be a valid call, regardless of alignment. */
|
||||
&& n >= 3)
|
||||
{
|
||||
if ((unsigned long) dst & 1)
|
||||
{
|
||||
*dst = (char) lc;
|
||||
n--;
|
||||
dst++;
|
||||
}
|
||||
|
||||
if (((unsigned long) pdst & 3) != 0
|
||||
/* Oops! n=0 must be a legal call, regardless of alignment. */
|
||||
&& n >= 3)
|
||||
{
|
||||
if ((unsigned long)dst & 1)
|
||||
{
|
||||
*dst = (char) lc;
|
||||
n--;
|
||||
dst++;
|
||||
}
|
||||
if ((unsigned long) dst & 2)
|
||||
{
|
||||
*(short *) dst = lc;
|
||||
n -= 2;
|
||||
dst += 2;
|
||||
}
|
||||
}
|
||||
|
||||
if ((unsigned long)dst & 2)
|
||||
{
|
||||
*(short *)dst = lc;
|
||||
n -= 2;
|
||||
dst += 2;
|
||||
}
|
||||
}
|
||||
|
||||
/* Now the fun part. For the threshold value of this, check the equation
|
||||
above. */
|
||||
/* Decide which copying method to use. */
|
||||
if (n >= ZERO_BLOCK_SIZE)
|
||||
{
|
||||
/* For large copies we use 'movem' */
|
||||
|
||||
/* It is not optimal to tell the compiler about clobbering any
|
||||
registers; that will move the saving/restoring of those registers
|
||||
to the function prologue/epilogue, and make non-movem sizes
|
||||
suboptimal.
|
||||
|
||||
This method is not foolproof; it assumes that the "asm reg"
|
||||
declarations at the beginning of the function really are used
|
||||
here (beware: they may be moved to temporary registers).
|
||||
This way, we do not have to save/move the registers around into
|
||||
temporaries; we can safely use them straight away.
|
||||
|
||||
If you want to check that the allocation was right; then
|
||||
check the equalities in the first comment. It should say
|
||||
"r13=r13, r12=r12, r11=r11" */
|
||||
__asm__ volatile (" \n\
|
||||
;; Check that the register asm declaration got right. \n\
|
||||
;; The GCC manual says it will work, but there *has* been bugs. \n\
|
||||
.ifnc %0-%1-%4,$r13-$r12-$r11 \n\
|
||||
.err \n\
|
||||
.endif \n\
|
||||
/* Decide which setting method to use. */
|
||||
if (n >= MEMSET_BY_BLOCK_THRESHOLD)
|
||||
{
|
||||
/* It is not optimal to tell the compiler about clobbering any
|
||||
registers; that will move the saving/restoring of those registers
|
||||
to the function prologue/epilogue, and make non-block sizes
|
||||
suboptimal. */
|
||||
__asm__ volatile
|
||||
("\
|
||||
;; GCC does promise correct register allocations, but let's \n\
|
||||
;; make sure it keeps its promises. \n\
|
||||
.ifnc %0-%1-%4,$r13-$r12-$r11 \n\
|
||||
.error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\" \n\
|
||||
.endif \n\
|
||||
\n\
|
||||
;; Save the registers we'll clobber in the movem process \n\
|
||||
;; on the stack. Don't mention them to gcc, it will only be \n\
|
||||
;; upset. \n\
|
||||
subq 11*4,$sp \n\
|
||||
movem $r10,[$sp] \n\
|
||||
;; Save the registers we'll clobber in the movem process \n\
|
||||
;; on the stack. Don't mention them to gcc, it will only be \n\
|
||||
;; upset. \n\
|
||||
subq 11*4,sp \n\
|
||||
movem r10,[sp] \n\
|
||||
\n\
|
||||
move.d $r11,$r0 \n\
|
||||
move.d $r11,$r1 \n\
|
||||
move.d $r11,$r2 \n\
|
||||
move.d $r11,$r3 \n\
|
||||
move.d $r11,$r4 \n\
|
||||
move.d $r11,$r5 \n\
|
||||
move.d $r11,$r6 \n\
|
||||
move.d $r11,$r7 \n\
|
||||
move.d $r11,$r8 \n\
|
||||
move.d $r11,$r9 \n\
|
||||
move.d $r11,$r10 \n\
|
||||
move.d r11,r0 \n\
|
||||
move.d r11,r1 \n\
|
||||
move.d r11,r2 \n\
|
||||
move.d r11,r3 \n\
|
||||
move.d r11,r4 \n\
|
||||
move.d r11,r5 \n\
|
||||
move.d r11,r6 \n\
|
||||
move.d r11,r7 \n\
|
||||
move.d r11,r8 \n\
|
||||
move.d r11,r9 \n\
|
||||
move.d r11,r10 \n\
|
||||
\n\
|
||||
;; Now we've got this: \n\
|
||||
;; r13 - dst \n\
|
||||
;; r12 - n \n\
|
||||
;; Now we've got this: \n\
|
||||
;; r13 - dst \n\
|
||||
;; r12 - n \n\
|
||||
\n\
|
||||
;; Update n for the first loop \n\
|
||||
subq 12*4,$r12 \n\
|
||||
;; Update n for the first loop \n\
|
||||
subq 12*4,r12 \n\
|
||||
0: \n\
|
||||
subq 12*4,$r12 \n\
|
||||
bge 0b \n\
|
||||
movem $r11,[$r13+] \n\
|
||||
"
|
||||
#ifdef __arch_common_v10_v32
|
||||
/* Cater to branch offset difference between v32 and v10. We
|
||||
assume the branch below has an 8-bit offset. */
|
||||
" setf\n"
|
||||
#endif
|
||||
" subq 12*4,r12 \n\
|
||||
bge 0b \n\
|
||||
movem r11,[r13+] \n\
|
||||
\n\
|
||||
addq 12*4,$r12 ;; compensate for last loop underflowing n \n\
|
||||
;; Compensate for last loop underflowing n. \n\
|
||||
addq 12*4,r12 \n\
|
||||
\n\
|
||||
;; Restore registers from stack \n\
|
||||
movem [$sp+],$r10"
|
||||
;; Restore registers from stack. \n\
|
||||
movem [sp+],r10"
|
||||
|
||||
/* Outputs */ : "=r" (dst), "=r" (n)
|
||||
/* Inputs */ : "0" (dst), "1" (n), "r" (lc));
|
||||
}
|
||||
/* Outputs. */
|
||||
: "=r" (dst), "=r" (n)
|
||||
|
||||
/* Either we directly starts copying, using dword copying
|
||||
in a loop, or we copy as much as possible with 'movem'
|
||||
and then the last block (<44 bytes) is copied here.
|
||||
This will work since 'movem' will have updated src,dst,n. */
|
||||
/* Inputs. */
|
||||
: "0" (dst), "1" (n), "r" (lc));
|
||||
}
|
||||
|
||||
while ( n >= 16 )
|
||||
{
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
n -= 16;
|
||||
}
|
||||
/* An ad-hoc unroll, used for 4*12-1..16 bytes. */
|
||||
while (n >= 16)
|
||||
{
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
n -= 16;
|
||||
}
|
||||
|
||||
/* A switch() is definitely the fastest although it takes a LOT of code.
|
||||
* Particularly if you inline code this.
|
||||
*/
|
||||
switch (n)
|
||||
{
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
*(char*)dst = (char) lc;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
*(short*)dst = (short) lc;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 9:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 10:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 11:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 12:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 13:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 14:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 15:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return return_dst; /* destination pointer. */
|
||||
} /* memset() */
|
||||
return return_dst;
|
||||
}
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y += config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
#obj-y := config.o usb-mcf532x.o spi-mcf532x.o
|
||||
obj-y := config.o
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-$(CONFIG_COLDFIRE) += dma.o entry.o vectors.o
|
||||
obj-$(CONFIG_M5206) += timers.o
|
||||
|
|
|
@ -197,14 +197,13 @@ ENTRY(fasthandler)
|
|||
RESTORE_LOCAL
|
||||
|
||||
ENTRY(ret_from_interrupt)
|
||||
jeq 2f
|
||||
1:
|
||||
RESTORE_ALL
|
||||
2:
|
||||
moveb %sp@(PT_SR),%d0
|
||||
andl #0x7,%d0
|
||||
jhi 1b
|
||||
jeq 1f
|
||||
|
||||
RESTORE_ALL
|
||||
|
||||
1:
|
||||
/* check if we need to do software interrupts */
|
||||
movel irq_stat+CPUSTAT_SOFTIRQ_PENDING,%d0
|
||||
jeq ret_from_exception
|
||||
|
|
|
@ -148,25 +148,32 @@ irqreturn_t coldfire_profile_tick(int irq, void *dummy)
|
|||
/* Reset ColdFire timer2 */
|
||||
__raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, PA(MCFTIMER_TER));
|
||||
if (current->pid)
|
||||
profile_tick(CPU_PROFILING, regs);
|
||||
profile_tick(CPU_PROFILING);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
static struct irqaction coldfire_profile_irq = {
|
||||
.name = "profile timer",
|
||||
.flags = IRQF_DISABLED | IRQF_TIMER,
|
||||
.handler = coldfire_profile_tick,
|
||||
};
|
||||
|
||||
void coldfire_profile_init(void)
|
||||
{
|
||||
printk(KERN_INFO "PROFILE: lodging TIMER2 @ %dHz as profile timer\n", PROFILEHZ);
|
||||
printk(KERN_INFO "PROFILE: lodging TIMER2 @ %dHz as profile timer\n",
|
||||
PROFILEHZ);
|
||||
|
||||
setup_irq(mcf_profilevector, &coldfire_profile_irq);
|
||||
|
||||
/* Set up TIMER 2 as high speed profile clock */
|
||||
__raw_writew(MCFTIMER_TMR_DISABLE, PA(MCFTIMER_TMR));
|
||||
|
||||
__raw_writetrr(((MCF_CLK / 16) / PROFILEHZ), PA(MCFTIMER_TRR));
|
||||
__raw_writetrr(((MCF_BUSCLK / 16) / PROFILEHZ), PA(MCFTIMER_TRR));
|
||||
__raw_writew(MCFTIMER_TMR_ENORI | MCFTIMER_TMR_CLK16 |
|
||||
MCFTIMER_TMR_RESTART | MCFTIMER_TMR_ENABLE, PA(MCFTIMER_TMR));
|
||||
|
||||
request_irq(mcf_profilevector, coldfire_profile_tick,
|
||||
(IRQF_DISABLED | IRQ_FLG_FAST), "profile timer", NULL);
|
||||
mcf_settimericr(2, 7);
|
||||
}
|
||||
|
||||
|
|
|
@ -694,7 +694,7 @@ asmlinkage int irix_statfs(const char __user *path,
|
|||
if (error)
|
||||
goto out;
|
||||
|
||||
error = vfs_statfs(nd.dentry, &kbuf);
|
||||
error = vfs_statfs(nd.path.dentry, &kbuf);
|
||||
if (error)
|
||||
goto dput_and_out;
|
||||
|
||||
|
@ -711,7 +711,7 @@ asmlinkage int irix_statfs(const char __user *path,
|
|||
}
|
||||
|
||||
dput_and_out:
|
||||
path_release(&nd);
|
||||
path_put(&nd.path);
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
|
@ -1360,7 +1360,7 @@ asmlinkage int irix_statvfs(char __user *fname, struct irix_statvfs __user *buf)
|
|||
error = user_path_walk(fname, &nd);
|
||||
if (error)
|
||||
goto out;
|
||||
error = vfs_statfs(nd.dentry, &kbuf);
|
||||
error = vfs_statfs(nd.path.dentry, &kbuf);
|
||||
if (error)
|
||||
goto dput_and_out;
|
||||
|
||||
|
@ -1385,7 +1385,7 @@ asmlinkage int irix_statvfs(char __user *fname, struct irix_statvfs __user *buf)
|
|||
error |= __put_user(0, &buf->f_fstr[i]);
|
||||
|
||||
dput_and_out:
|
||||
path_release(&nd);
|
||||
path_put(&nd.path);
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
|
@ -1611,7 +1611,7 @@ asmlinkage int irix_statvfs64(char __user *fname, struct irix_statvfs64 __user *
|
|||
error = user_path_walk(fname, &nd);
|
||||
if (error)
|
||||
goto out;
|
||||
error = vfs_statfs(nd.dentry, &kbuf);
|
||||
error = vfs_statfs(nd.path.dentry, &kbuf);
|
||||
if (error)
|
||||
goto dput_and_out;
|
||||
|
||||
|
@ -1636,7 +1636,7 @@ asmlinkage int irix_statvfs64(char __user *fname, struct irix_statvfs64 __user *
|
|||
error |= __put_user(0, &buf->f_fstr[i]);
|
||||
|
||||
dput_and_out:
|
||||
path_release(&nd);
|
||||
path_put(&nd.path);
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -219,10 +219,10 @@ asmlinkage long hpux_statfs(const char __user *path,
|
|||
error = user_path_walk(path, &nd);
|
||||
if (!error) {
|
||||
struct hpux_statfs tmp;
|
||||
error = vfs_statfs_hpux(nd.dentry, &tmp);
|
||||
error = vfs_statfs_hpux(nd.path.dentry, &tmp);
|
||||
if (!error && copy_to_user(buf, &tmp, sizeof(tmp)))
|
||||
error = -EFAULT;
|
||||
path_release(&nd);
|
||||
path_put(&nd.path);
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -442,10 +442,6 @@ config SECCOMP
|
|||
|
||||
If unsure, say Y. Only embedded should say N here.
|
||||
|
||||
config WANT_DEVICE_TREE
|
||||
bool
|
||||
default n
|
||||
|
||||
endmenu
|
||||
|
||||
config ISA_DMA_API
|
||||
|
|
|
@ -147,6 +147,8 @@ HOSTCFLAGS += -I$(src)/dtc-src/ -I$(src)/libfdt/
|
|||
targets += dtc-src/dtc-parser.tab.c
|
||||
targets += dtc-src/dtc-lexer.lex.c
|
||||
|
||||
clean-files += dtc-src/dtc-parser.tab.h
|
||||
|
||||
ifdef DTC_GENPARSER
|
||||
BISON = bison
|
||||
FLEX = flex
|
||||
|
|
|
@ -145,7 +145,7 @@
|
|||
.macro STORE_REGS_5_2
|
||||
lwz r11, 16(r1)
|
||||
std r4, 0(r11)
|
||||
lwz r11, 24(r1)
|
||||
lwz r11, 20(r1)
|
||||
std r5, 0(r11)
|
||||
.endm
|
||||
|
||||
|
|
|
@ -104,3 +104,5 @@ quiet_cmd_systbl_chk = CALL $<
|
|||
PHONY += systbl_chk
|
||||
systbl_chk: $(src)/systbl_chk.sh $(obj)/systbl_chk.i
|
||||
$(call cmd,systbl_chk)
|
||||
|
||||
clean-files := vmlinux.lds
|
||||
|
|
|
@ -462,7 +462,7 @@ void show_regs(struct pt_regs * regs)
|
|||
current, task_pid_nr(current), current->comm, task_thread_info(current));
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
printk(" CPU: %d", smp_processor_id());
|
||||
printk(" CPU: %d", raw_smp_processor_id());
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
for (i = 0; i < 32; i++) {
|
||||
|
|
|
@ -336,9 +336,9 @@ static unsigned long __init find_function32(struct lib32_elfinfo *lib,
|
|||
return sym->st_value - VDSO32_LBASE;
|
||||
}
|
||||
|
||||
static int vdso_do_func_patch32(struct lib32_elfinfo *v32,
|
||||
struct lib64_elfinfo *v64,
|
||||
const char *orig, const char *fix)
|
||||
static int __init vdso_do_func_patch32(struct lib32_elfinfo *v32,
|
||||
struct lib64_elfinfo *v64,
|
||||
const char *orig, const char *fix)
|
||||
{
|
||||
Elf32_Sym *sym32_gen, *sym32_fix;
|
||||
|
||||
|
@ -433,9 +433,9 @@ static unsigned long __init find_function64(struct lib64_elfinfo *lib,
|
|||
#endif
|
||||
}
|
||||
|
||||
static int vdso_do_func_patch64(struct lib32_elfinfo *v32,
|
||||
struct lib64_elfinfo *v64,
|
||||
const char *orig, const char *fix)
|
||||
static int __init vdso_do_func_patch64(struct lib32_elfinfo *v32,
|
||||
struct lib64_elfinfo *v64,
|
||||
const char *orig, const char *fix)
|
||||
{
|
||||
Elf64_Sym *sym64_gen, *sym64_fix;
|
||||
|
||||
|
|
|
@ -198,14 +198,13 @@ out:
|
|||
* dcookie user still being registered (namely, the reader
|
||||
* of the event buffer).
|
||||
*/
|
||||
static inline unsigned long fast_get_dcookie(struct dentry *dentry,
|
||||
struct vfsmount *vfsmnt)
|
||||
static inline unsigned long fast_get_dcookie(struct path *path)
|
||||
{
|
||||
unsigned long cookie;
|
||||
|
||||
if (dentry->d_cookie)
|
||||
return (unsigned long)dentry;
|
||||
get_dcookie(dentry, vfsmnt, &cookie);
|
||||
if (path->dentry->d_cookie)
|
||||
return (unsigned long)path->dentry;
|
||||
get_dcookie(path, &cookie);
|
||||
return cookie;
|
||||
}
|
||||
|
||||
|
@ -240,8 +239,7 @@ get_exec_dcookie_and_offset(struct spu *spu, unsigned int *offsetp,
|
|||
continue;
|
||||
if (!(vma->vm_flags & VM_EXECUTABLE))
|
||||
continue;
|
||||
app_cookie = fast_get_dcookie(vma->vm_file->f_dentry,
|
||||
vma->vm_file->f_vfsmnt);
|
||||
app_cookie = fast_get_dcookie(&vma->vm_file->f_path);
|
||||
pr_debug("got dcookie for %s\n",
|
||||
vma->vm_file->f_dentry->d_name.name);
|
||||
app = vma->vm_file;
|
||||
|
@ -262,8 +260,7 @@ get_exec_dcookie_and_offset(struct spu *spu, unsigned int *offsetp,
|
|||
break;
|
||||
}
|
||||
|
||||
*spu_bin_dcookie = fast_get_dcookie(vma->vm_file->f_dentry,
|
||||
vma->vm_file->f_vfsmnt);
|
||||
*spu_bin_dcookie = fast_get_dcookie(&vma->vm_file->f_path);
|
||||
pr_debug("got dcookie for %s\n", vma->vm_file->f_dentry->d_name.name);
|
||||
|
||||
up_read(&mm->mmap_sem);
|
||||
|
|
|
@ -13,7 +13,6 @@ config MPC5121_ADS
|
|||
bool "Freescale MPC5121E ADS"
|
||||
depends on PPC_MULTIPLATFORM && PPC32
|
||||
select DEFAULT_UIMAGE
|
||||
select WANT_DEVICE_TREE
|
||||
select PPC_MPC5121
|
||||
help
|
||||
This option enables support for the MPC5121E ADS board.
|
||||
|
|
|
@ -8,7 +8,6 @@ config PPC_MPC5200_SIMPLE
|
|||
bool "Generic support for simple MPC5200 based boards"
|
||||
depends on PPC_MPC52xx
|
||||
select DEFAULT_UIMAGE
|
||||
select WANT_DEVICE_TREE
|
||||
help
|
||||
This option enables support for a simple MPC52xx based boards which
|
||||
do not need a custom platform specific setup. Such boards are
|
||||
|
@ -35,7 +34,6 @@ config PPC_LITE5200
|
|||
bool "Freescale Lite5200 Eval Board"
|
||||
depends on PPC_MPC52xx
|
||||
select DEFAULT_UIMAGE
|
||||
select WANT_DEVICE_TREE
|
||||
|
||||
config PPC_MPC5200_BUGFIX
|
||||
bool "MPC5200 (L25R) bugfix support"
|
||||
|
|
|
@ -15,7 +15,6 @@ config PPC_MULTIPLATFORM
|
|||
config PPC_82xx
|
||||
bool "Freescale 82xx"
|
||||
depends on 6xx
|
||||
select WANT_DEVICE_TREE
|
||||
|
||||
config PPC_83xx
|
||||
bool "Freescale 83xx"
|
||||
|
@ -23,7 +22,6 @@ config PPC_83xx
|
|||
select FSL_SOC
|
||||
select MPC83xx
|
||||
select IPIC
|
||||
select WANT_DEVICE_TREE
|
||||
select FSL_EMB_PERFMON
|
||||
|
||||
config PPC_86xx
|
||||
|
|
|
@ -29,26 +29,22 @@ config PPC_85xx
|
|||
bool "Freescale 85xx"
|
||||
select E500
|
||||
select FSL_SOC
|
||||
select WANT_DEVICE_TREE
|
||||
select MPC85xx
|
||||
|
||||
config PPC_8xx
|
||||
bool "Freescale 8xx"
|
||||
select FSL_SOC
|
||||
select 8xx
|
||||
select WANT_DEVICE_TREE
|
||||
select PPC_LIB_RHEAP
|
||||
|
||||
config 40x
|
||||
bool "AMCC 40x"
|
||||
select PPC_DCR_NATIVE
|
||||
select WANT_DEVICE_TREE
|
||||
select PPC_UDBG_16550
|
||||
|
||||
config 44x
|
||||
bool "AMCC 44x"
|
||||
select PPC_DCR_NATIVE
|
||||
select WANT_DEVICE_TREE
|
||||
select PPC_UDBG_16550
|
||||
|
||||
config E200
|
||||
|
|
|
@ -1,4 +1,13 @@
|
|||
#define DEBUG
|
||||
/*
|
||||
* Copyright 2006-2008, IBM Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#undef DEBUG
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
/*
|
||||
* SPU file system
|
||||
*
|
||||
|
@ -592,7 +593,7 @@ long spufs_create(struct nameidata *nd, unsigned int flags, mode_t mode,
|
|||
|
||||
ret = -EINVAL;
|
||||
/* check if we are on spufs */
|
||||
if (nd->dentry->d_sb->s_type != &spufs_type)
|
||||
if (nd->path.dentry->d_sb->s_type != &spufs_type)
|
||||
goto out;
|
||||
|
||||
/* don't accept undefined flags */
|
||||
|
@ -600,9 +601,9 @@ long spufs_create(struct nameidata *nd, unsigned int flags, mode_t mode,
|
|||
goto out;
|
||||
|
||||
/* only threads can be underneath a gang */
|
||||
if (nd->dentry != nd->dentry->d_sb->s_root) {
|
||||
if (nd->path.dentry != nd->path.dentry->d_sb->s_root) {
|
||||
if ((flags & SPU_CREATE_GANG) ||
|
||||
!SPUFS_I(nd->dentry->d_inode)->i_gang)
|
||||
!SPUFS_I(nd->path.dentry->d_inode)->i_gang)
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -618,16 +619,17 @@ long spufs_create(struct nameidata *nd, unsigned int flags, mode_t mode,
|
|||
mode &= ~current->fs->umask;
|
||||
|
||||
if (flags & SPU_CREATE_GANG)
|
||||
return spufs_create_gang(nd->dentry->d_inode,
|
||||
dentry, nd->mnt, mode);
|
||||
return spufs_create_gang(nd->path.dentry->d_inode,
|
||||
dentry, nd->path.mnt, mode);
|
||||
else
|
||||
return spufs_create_context(nd->dentry->d_inode,
|
||||
dentry, nd->mnt, flags, mode, filp);
|
||||
return spufs_create_context(nd->path.dentry->d_inode,
|
||||
dentry, nd->path.mnt, flags, mode,
|
||||
filp);
|
||||
|
||||
out_dput:
|
||||
dput(dentry);
|
||||
out_dir:
|
||||
mutex_unlock(&nd->dentry->d_inode->i_mutex);
|
||||
mutex_unlock(&nd->path.dentry->d_inode->i_mutex);
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ static long do_spu_create(const char __user *pathname, unsigned int flags,
|
|||
LOOKUP_OPEN|LOOKUP_CREATE, &nd);
|
||||
if (!ret) {
|
||||
ret = spufs_create(&nd, flags, mode, neighbor);
|
||||
path_release(&nd);
|
||||
path_put(&nd.path);
|
||||
}
|
||||
putname(tmp);
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@ config STORCENTER
|
|||
select MPIC
|
||||
select FSL_SOC
|
||||
select PPC_UDBG_16550 if SERIAL_8250
|
||||
select WANT_DEVICE_TREE
|
||||
select MPC10X_OPENPIC
|
||||
select MPC10X_BRIDGE
|
||||
help
|
||||
|
@ -37,7 +36,6 @@ config MPC7448HPC2
|
|||
select TSI108_BRIDGE
|
||||
select DEFAULT_UIMAGE
|
||||
select PPC_UDBG_16550
|
||||
select WANT_DEVICE_TREE
|
||||
select TSI108_BRIDGE
|
||||
help
|
||||
Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga)
|
||||
|
@ -48,7 +46,6 @@ config PPC_HOLLY
|
|||
depends on EMBEDDED6xx
|
||||
select TSI108_BRIDGE
|
||||
select PPC_UDBG_16550
|
||||
select WANT_DEVICE_TREE
|
||||
select TSI108_BRIDGE
|
||||
help
|
||||
Select PPC_HOLLY if configuring for an IBM 750GX/CL Eval
|
||||
|
@ -59,7 +56,6 @@ config PPC_PRPMC2800
|
|||
depends on EMBEDDED6xx
|
||||
select MV64X60
|
||||
select NOT_COHERENT_CACHE
|
||||
select WANT_DEVICE_TREE
|
||||
help
|
||||
This option enables support for the Motorola PrPMC2800 board
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ static struct property *new_property(const char *name, int length,
|
|||
return np;
|
||||
}
|
||||
|
||||
static void __init free_property(struct property *np)
|
||||
static void free_property(struct property *np)
|
||||
{
|
||||
kfree(np);
|
||||
}
|
||||
|
|
|
@ -93,6 +93,9 @@ config ARCH_NO_VIRT_TO_BUS
|
|||
config ARCH_SUPPORTS_AOUT
|
||||
def_bool y
|
||||
|
||||
config IO_TRAPPED
|
||||
bool
|
||||
|
||||
source "init/Kconfig"
|
||||
|
||||
menu "System type"
|
||||
|
@ -312,6 +315,13 @@ config CPU_SUBTYPE_SH7722
|
|||
select ARCH_SPARSEMEM_ENABLE
|
||||
select SYS_SUPPORTS_NUMA
|
||||
|
||||
config CPU_SUBTYPE_SH7366
|
||||
bool "Support SH7366 processor"
|
||||
select CPU_SH4AL_DSP
|
||||
select CPU_SHX2
|
||||
select ARCH_SPARSEMEM_ENABLE
|
||||
select SYS_SUPPORTS_NUMA
|
||||
|
||||
# SH-5 Processor Support
|
||||
|
||||
config CPU_SUBTYPE_SH5_101
|
||||
|
@ -456,6 +466,7 @@ config SH_RTS7751R2D
|
|||
bool "RTS7751R2D"
|
||||
depends on CPU_SUBTYPE_SH7751R
|
||||
select SYS_SUPPORTS_PCI
|
||||
select IO_TRAPPED
|
||||
help
|
||||
Select RTS7751R2D if configuring for a Renesas Technology
|
||||
Sales SH-Graphics board.
|
||||
|
@ -472,6 +483,14 @@ config SH_HIGHLANDER
|
|||
bool "Highlander"
|
||||
depends on CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785
|
||||
select SYS_SUPPORTS_PCI
|
||||
select IO_TRAPPED
|
||||
|
||||
config SH_MIGOR
|
||||
bool "Migo-R"
|
||||
depends on CPU_SUBTYPE_SH7722
|
||||
help
|
||||
Select Migo-R if configuring for the SH7722 Migo-R platform
|
||||
by Renesas System Solutions Asia Pte. Ltd.
|
||||
|
||||
config SH_EDOSK7705
|
||||
bool "EDOSK7705"
|
||||
|
|
|
@ -12,6 +12,7 @@ config CPU_LITTLE_ENDIAN
|
|||
|
||||
config CPU_BIG_ENDIAN
|
||||
bool "Big Endian"
|
||||
depends on !CPU_SH5
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -87,9 +88,6 @@ config SH64_ID2815_WORKAROUND
|
|||
config CPU_HAS_INTEVT
|
||||
bool
|
||||
|
||||
config CPU_HAS_MASKREG_IRQ
|
||||
bool
|
||||
|
||||
config CPU_HAS_IPR_IRQ
|
||||
bool
|
||||
|
||||
|
|
|
@ -29,7 +29,8 @@ config EARLY_SCIF_CONSOLE
|
|||
config EARLY_SCIF_CONSOLE_PORT
|
||||
hex
|
||||
depends on EARLY_SCIF_CONSOLE
|
||||
default "0xffe00000" if CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7763
|
||||
default "0xffe00000" if CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7763
|
||||
default "0xffe00000" if CPU_SUBTYPE_SH7722 || CPU_SUBTYPE_SH7366
|
||||
default "0xffea0000" if CPU_SUBTYPE_SH7785
|
||||
default "0xfffe8000" if CPU_SUBTYPE_SH7203
|
||||
default "0xfffe9800" if CPU_SUBTYPE_SH7206 || CPU_SUBTYPE_SH7263
|
||||
|
|
|
@ -116,6 +116,7 @@ machdir-$(CONFIG_SH_RTS7751R2D) += renesas/rts7751r2d
|
|||
machdir-$(CONFIG_SH_7751_SYSTEMH) += renesas/systemh
|
||||
machdir-$(CONFIG_SH_EDOSK7705) += renesas/edosk7705
|
||||
machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp
|
||||
machdir-$(CONFIG_SH_MIGOR) += renesas/migor
|
||||
machdir-$(CONFIG_SH_SDK7780) += renesas/sdk7780
|
||||
machdir-$(CONFIG_SH_7710VOIPGW) += renesas/sh7710voipgw
|
||||
machdir-$(CONFIG_SH_X3PROTO) += renesas/x3proto
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
obj-y := setup.o
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Renesas System Solutions Asia Pte. Ltd - Migo-R
|
||||
*
|
||||
* Copyright (C) 2008 Magnus Damm
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <asm/machvec.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
/* Address IRQ Size Bus Description
|
||||
* 0x00000000 64MB 16 NOR Flash (SP29PL256N)
|
||||
* 0x0c000000 64MB 64 SDRAM (2xK4M563233G)
|
||||
* 0x10000000 IRQ0 16 Ethernet (SMC91C111)
|
||||
* 0x14000000 IRQ4 16 USB 2.0 Host Controller (M66596)
|
||||
* 0x18000000 8GB 8 NAND Flash (K9K8G08U0A)
|
||||
*/
|
||||
|
||||
static struct resource smc91x_eth_resources[] = {
|
||||
[0] = {
|
||||
.name = "smc91x-regs" ,
|
||||
.start = P2SEGADDR(0x10000300),
|
||||
.end = P2SEGADDR(0x1000030f),
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = 32, /* IRQ0 */
|
||||
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device smc91x_eth_device = {
|
||||
.name = "smc91x",
|
||||
.num_resources = ARRAY_SIZE(smc91x_eth_resources),
|
||||
.resource = smc91x_eth_resources,
|
||||
};
|
||||
|
||||
static struct platform_device *migor_devices[] __initdata = {
|
||||
&smc91x_eth_device,
|
||||
};
|
||||
|
||||
static int __init migor_devices_setup(void)
|
||||
{
|
||||
return platform_add_devices(migor_devices, ARRAY_SIZE(migor_devices));
|
||||
}
|
||||
__initcall(migor_devices_setup);
|
||||
|
||||
static void __init migor_setup(char **cmdline_p)
|
||||
{
|
||||
ctrl_outw(0x1000, 0xa4050110); /* Enable IRQ0 in PJCR */
|
||||
}
|
||||
|
||||
static struct sh_machine_vector mv_migor __initmv = {
|
||||
.mv_name = "Migo-R",
|
||||
.mv_setup = migor_setup,
|
||||
};
|
|
@ -23,6 +23,7 @@
|
|||
#include <asm/clock.h>
|
||||
#include <asm/heartbeat.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/io_trapped.h>
|
||||
|
||||
static struct resource r8a66597_usb_host_resources[] = {
|
||||
[0] = {
|
||||
|
@ -181,13 +182,27 @@ static struct platform_device *r7780rp_devices[] __initdata = {
|
|||
&m66592_usb_peripheral_device,
|
||||
&heartbeat_device,
|
||||
#ifndef CONFIG_SH_R7780RP
|
||||
&cf_ide_device,
|
||||
&ax88796_device,
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
* The CF is connected using a 16-bit bus where 8-bit operations are
|
||||
* unsupported. The linux ata driver is however using 8-bit operations, so
|
||||
* insert a trapped io filter to convert 8-bit operations into 16-bit.
|
||||
*/
|
||||
static struct trapped_io cf_trapped_io = {
|
||||
.resource = cf_ide_resources,
|
||||
.num_resources = 2,
|
||||
.minimum_bus_width = 16,
|
||||
};
|
||||
|
||||
static int __init r7780rp_devices_setup(void)
|
||||
{
|
||||
#ifndef CONFIG_SH_R7780RP
|
||||
if (register_trapped_io(&cf_trapped_io) == 0)
|
||||
platform_device_register(&cf_ide_device);
|
||||
#endif
|
||||
return platform_add_devices(r7780rp_devices,
|
||||
ARRAY_SIZE(r7780rp_devices));
|
||||
}
|
||||
|
@ -226,34 +241,6 @@ static void r7780rp_power_off(void)
|
|||
ctrl_outw(0x0001, PA_POFF);
|
||||
}
|
||||
|
||||
static inline unsigned char is_ide_ioaddr(unsigned long addr)
|
||||
{
|
||||
return ((cf_ide_resources[0].start <= addr &&
|
||||
addr <= cf_ide_resources[0].end) ||
|
||||
(cf_ide_resources[1].start <= addr &&
|
||||
addr <= cf_ide_resources[1].end));
|
||||
}
|
||||
|
||||
void highlander_writeb(u8 b, void __iomem *addr)
|
||||
{
|
||||
unsigned long tmp = (unsigned long __force)addr;
|
||||
|
||||
if (is_ide_ioaddr(tmp))
|
||||
ctrl_outw((u16)b, tmp);
|
||||
else
|
||||
ctrl_outb(b, tmp);
|
||||
}
|
||||
|
||||
u8 highlander_readb(void __iomem *addr)
|
||||
{
|
||||
unsigned long tmp = (unsigned long __force)addr;
|
||||
|
||||
if (is_ide_ioaddr(tmp))
|
||||
return ctrl_inw(tmp) & 0xff;
|
||||
else
|
||||
return ctrl_inb(tmp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the board
|
||||
*/
|
||||
|
@ -338,6 +325,4 @@ static struct sh_machine_vector mv_highlander __initmv = {
|
|||
.mv_setup = highlander_setup,
|
||||
.mv_init_irq = highlander_init_irq,
|
||||
.mv_irq_demux = highlander_irq_demux,
|
||||
.mv_readb = highlander_readb,
|
||||
.mv_writeb = highlander_writeb,
|
||||
};
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include <asm/machvec.h>
|
||||
#include <asm/rts7751r2d.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/io_trapped.h>
|
||||
#include <asm/spi.h>
|
||||
|
||||
static struct resource cf_ide_resources[] = {
|
||||
|
@ -214,13 +215,25 @@ static struct platform_device *rts7751r2d_devices[] __initdata = {
|
|||
&uart_device,
|
||||
&sm501_device,
|
||||
#endif
|
||||
&cf_ide_device,
|
||||
&heartbeat_device,
|
||||
&spi_sh_sci_device,
|
||||
};
|
||||
|
||||
/*
|
||||
* The CF is connected with a 16-bit bus where 8-bit operations are
|
||||
* unsupported. The linux ata driver is however using 8-bit operations, so
|
||||
* insert a trapped io filter to convert 8-bit operations into 16-bit.
|
||||
*/
|
||||
static struct trapped_io cf_trapped_io = {
|
||||
.resource = cf_ide_resources,
|
||||
.num_resources = 2,
|
||||
.minimum_bus_width = 16,
|
||||
};
|
||||
|
||||
static int __init rts7751r2d_devices_setup(void)
|
||||
{
|
||||
if (register_trapped_io(&cf_trapped_io) == 0)
|
||||
platform_device_register(&cf_ide_device);
|
||||
spi_register_board_info(spi_bus, ARRAY_SIZE(spi_bus));
|
||||
return platform_add_devices(rts7751r2d_devices,
|
||||
ARRAY_SIZE(rts7751r2d_devices));
|
||||
|
@ -232,34 +245,6 @@ static void rts7751r2d_power_off(void)
|
|||
ctrl_outw(0x0001, PA_POWOFF);
|
||||
}
|
||||
|
||||
static inline unsigned char is_ide_ioaddr(unsigned long addr)
|
||||
{
|
||||
return ((cf_ide_resources[0].start <= addr &&
|
||||
addr <= cf_ide_resources[0].end) ||
|
||||
(cf_ide_resources[1].start <= addr &&
|
||||
addr <= cf_ide_resources[1].end));
|
||||
}
|
||||
|
||||
void rts7751r2d_writeb(u8 b, void __iomem *addr)
|
||||
{
|
||||
unsigned long tmp = (unsigned long __force)addr;
|
||||
|
||||
if (is_ide_ioaddr(tmp))
|
||||
ctrl_outw((u16)b, tmp);
|
||||
else
|
||||
ctrl_outb(b, tmp);
|
||||
}
|
||||
|
||||
u8 rts7751r2d_readb(void __iomem *addr)
|
||||
{
|
||||
unsigned long tmp = (unsigned long __force)addr;
|
||||
|
||||
if (is_ide_ioaddr(tmp))
|
||||
return ctrl_inw(tmp) & 0xff;
|
||||
else
|
||||
return ctrl_inb(tmp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the board
|
||||
*/
|
||||
|
@ -310,6 +295,4 @@ static struct sh_machine_vector mv_rts7751r2d __initmv = {
|
|||
.mv_setup = rts7751r2d_setup,
|
||||
.mv_init_irq = init_rts7751r2d_IRQ,
|
||||
.mv_irq_demux = rts7751r2d_irq_demux,
|
||||
.mv_writeb = rts7751r2d_writeb,
|
||||
.mv_readb = rts7751r2d_readb,
|
||||
};
|
||||
|
|
|
@ -4,13 +4,6 @@ choice
|
|||
prompt "SDK7780 options"
|
||||
default SH_SDK7780_BASE
|
||||
|
||||
config SH_SDK7780_STANDALONE
|
||||
bool "SDK7780 board support"
|
||||
depends on CPU_SUBTYPE_SH7780
|
||||
help
|
||||
Selecting this option will enable support for the
|
||||
standalone version of the SDK7780. If in doubt, say Y.
|
||||
|
||||
config SH_SDK7780_BASE
|
||||
bool "SDK7780 with base-board support"
|
||||
depends on CPU_SUBTYPE_SH7780
|
||||
|
|
|
@ -17,10 +17,8 @@
|
|||
#include <linux/interrupt.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <asm/hd64465/hd64465.h>
|
||||
|
||||
static void disable_hd64465_irq(unsigned int irq)
|
||||
|
@ -28,51 +26,45 @@ static void disable_hd64465_irq(unsigned int irq)
|
|||
unsigned short nimr;
|
||||
unsigned short mask = 1 << (irq - HD64465_IRQ_BASE);
|
||||
|
||||
pr_debug("disable_hd64465_irq(%d): mask=%x\n", irq, mask);
|
||||
pr_debug("disable_hd64465_irq(%d): mask=%x\n", irq, mask);
|
||||
nimr = inw(HD64465_REG_NIMR);
|
||||
nimr |= mask;
|
||||
outw(nimr, HD64465_REG_NIMR);
|
||||
}
|
||||
|
||||
|
||||
static void enable_hd64465_irq(unsigned int irq)
|
||||
{
|
||||
unsigned short nimr;
|
||||
unsigned short mask = 1 << (irq - HD64465_IRQ_BASE);
|
||||
|
||||
pr_debug("enable_hd64465_irq(%d): mask=%x\n", irq, mask);
|
||||
pr_debug("enable_hd64465_irq(%d): mask=%x\n", irq, mask);
|
||||
nimr = inw(HD64465_REG_NIMR);
|
||||
nimr &= ~mask;
|
||||
outw(nimr, HD64465_REG_NIMR);
|
||||
}
|
||||
|
||||
|
||||
static void mask_and_ack_hd64465(unsigned int irq)
|
||||
{
|
||||
disable_hd64465_irq(irq);
|
||||
}
|
||||
|
||||
|
||||
static void end_hd64465_irq(unsigned int irq)
|
||||
{
|
||||
if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
|
||||
enable_hd64465_irq(irq);
|
||||
}
|
||||
|
||||
|
||||
static unsigned int startup_hd64465_irq(unsigned int irq)
|
||||
{
|
||||
{
|
||||
enable_hd64465_irq(irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void shutdown_hd64465_irq(unsigned int irq)
|
||||
{
|
||||
disable_hd64465_irq(irq);
|
||||
}
|
||||
|
||||
|
||||
static struct hw_interrupt_type hd64465_irq_type = {
|
||||
.typename = "HD64465-IRQ",
|
||||
.startup = startup_hd64465_irq,
|
||||
|
@ -83,7 +75,6 @@ static struct hw_interrupt_type hd64465_irq_type = {
|
|||
.end = end_hd64465_irq,
|
||||
};
|
||||
|
||||
|
||||
static irqreturn_t hd64465_interrupt(int irq, void *dev_id)
|
||||
{
|
||||
printk(KERN_INFO
|
||||
|
@ -93,9 +84,6 @@ static irqreturn_t hd64465_interrupt(int irq, void *dev_id)
|
|||
return IRQ_NONE;
|
||||
}
|
||||
|
||||
|
||||
/*====================================================*/
|
||||
|
||||
/*
|
||||
* Support for a secondary IRQ demux step. This is necessary
|
||||
* because the HD64465 presents a very thin interface to the
|
||||
|
@ -103,8 +91,7 @@ static irqreturn_t hd64465_interrupt(int irq, void *dev_id)
|
|||
* normally done in hardware by other PCMCIA host bridges is
|
||||
* instead done in software.
|
||||
*/
|
||||
static struct
|
||||
{
|
||||
static struct {
|
||||
int (*func)(int, void *);
|
||||
void *dev;
|
||||
} hd64465_demux[HD64465_IRQ_NUM];
|
||||
|
@ -112,19 +99,17 @@ static struct
|
|||
void hd64465_register_irq_demux(int irq,
|
||||
int (*demux)(int irq, void *dev), void *dev)
|
||||
{
|
||||
hd64465_demux[irq - HD64465_IRQ_BASE].func = demux;
|
||||
hd64465_demux[irq - HD64465_IRQ_BASE].dev = dev;
|
||||
hd64465_demux[irq - HD64465_IRQ_BASE].func = demux;
|
||||
hd64465_demux[irq - HD64465_IRQ_BASE].dev = dev;
|
||||
}
|
||||
EXPORT_SYMBOL(hd64465_register_irq_demux);
|
||||
|
||||
void hd64465_unregister_irq_demux(int irq)
|
||||
{
|
||||
hd64465_demux[irq - HD64465_IRQ_BASE].func = 0;
|
||||
hd64465_demux[irq - HD64465_IRQ_BASE].func = 0;
|
||||
}
|
||||
EXPORT_SYMBOL(hd64465_unregister_irq_demux);
|
||||
|
||||
|
||||
|
||||
int hd64465_irq_demux(int irq)
|
||||
{
|
||||
if (irq == CONFIG_HD64465_IRQ) {
|
||||
|
@ -132,16 +117,16 @@ int hd64465_irq_demux(int irq)
|
|||
unsigned short nirr = inw(HD64465_REG_NIRR);
|
||||
unsigned short nimr = inw(HD64465_REG_NIMR);
|
||||
|
||||
pr_debug("hd64465_irq_demux, nirr=%04x, nimr=%04x\n", nirr, nimr);
|
||||
pr_debug("hd64465_irq_demux, nirr=%04x, nimr=%04x\n", nirr, nimr);
|
||||
nirr &= ~nimr;
|
||||
for (bit = 1, i = 0 ; i < HD64465_IRQ_NUM ; bit <<= 1, i++)
|
||||
if (nirr & bit)
|
||||
break;
|
||||
break;
|
||||
|
||||
if (i < HD64465_IRQ_NUM) {
|
||||
if (i < HD64465_IRQ_NUM) {
|
||||
irq = HD64465_IRQ_BASE + i;
|
||||
if (hd64465_demux[i].func != 0)
|
||||
irq = hd64465_demux[i].func(irq, hd64465_demux[i].dev);
|
||||
if (hd64465_demux[i].func != 0)
|
||||
irq = hd64465_demux[i].func(irq, hd64465_demux[i].dev);
|
||||
}
|
||||
}
|
||||
return irq;
|
||||
|
@ -154,7 +139,6 @@ static struct irqaction irq0 = {
|
|||
.name = "HD64465",
|
||||
};
|
||||
|
||||
|
||||
static int __init setup_hd64465(void)
|
||||
{
|
||||
int i;
|
||||
|
@ -176,8 +160,8 @@ static int __init setup_hd64465(void)
|
|||
|
||||
rev = inw(HD64465_REG_SRR);
|
||||
printk(KERN_INFO "HD64465 hardware revision %d.%d\n", (rev >> 8) & 0xff, rev & 0xff);
|
||||
|
||||
outw(0xffff, HD64465_REG_NIMR); /* mask all interrupts */
|
||||
|
||||
outw(0xffff, HD64465_REG_NIMR); /* mask all interrupts */
|
||||
|
||||
for (i = 0; i < HD64465_IRQ_NUM ; i++) {
|
||||
irq_desc[HD64465_IRQ_BASE + i].chip = &hd64465_irq_type;
|
||||
|
@ -185,16 +169,13 @@ static int __init setup_hd64465(void)
|
|||
|
||||
setup_irq(CONFIG_HD64465_IRQ, &irq0);
|
||||
|
||||
#ifdef CONFIG_SERIAL
|
||||
/* wake up the UART from STANDBY at this point */
|
||||
smscr = inw(HD64465_REG_SMSCR);
|
||||
outw(smscr & (~HD64465_SMSCR_UARTST), HD64465_REG_SMSCR);
|
||||
|
||||
/* remap IO ports for first ISA serial port to HD64465 UART */
|
||||
hd64465_port_map(0x3f8, 8, CONFIG_HD64465_IOBASE + 0x8000, 1);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
module_init(setup_hd64465);
|
||||
|
|
|
@ -0,0 +1,824 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.24
|
||||
# Wed Feb 6 21:52:20 2008
|
||||
#
|
||||
CONFIG_SUPERH=y
|
||||
CONFIG_SUPERH32=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_SYS_SUPPORTS_NUMA=y
|
||||
CONFIG_STACKTRACE_SUPPORT=y
|
||||
CONFIG_LOCKDEP_SUPPORT=y
|
||||
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
CONFIG_ARCH_NO_VIRT_TO_BUS=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
CONFIG_FAIR_USER_SCHED=y
|
||||
# CONFIG_FAIR_CGROUP_SCHED is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
CONFIG_PROFILING=y
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_OPROFILE=y
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_HAVE_KPROBES is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_MODULE_UNLOAD is not set
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
# CONFIG_KMOD is not set
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
|
||||
#
|
||||
# System type
|
||||
#
|
||||
CONFIG_CPU_SH4=y
|
||||
CONFIG_CPU_SH4A=y
|
||||
CONFIG_CPU_SH4AL_DSP=y
|
||||
CONFIG_CPU_SHX2=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7619 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7203 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7206 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7263 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7705 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7706 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7707 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7708 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7709 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7710 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7712 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7720 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7721 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7091 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750S is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7751 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7751R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7760 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH4_202 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7763 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7770 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7780 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7785 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SHX3 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7343 is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7722=y
|
||||
# CONFIG_CPU_SUBTYPE_SH5_101 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH5_103 is not set
|
||||
|
||||
#
|
||||
# Memory management options
|
||||
#
|
||||
CONFIG_QUICKLIST=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_PAGE_OFFSET=0x80000000
|
||||
CONFIG_MEMORY_START=0x0c000000
|
||||
CONFIG_MEMORY_SIZE=0x04000000
|
||||
CONFIG_29BIT=y
|
||||
# CONFIG_X2TLB is not set
|
||||
CONFIG_VSYSCALL=y
|
||||
CONFIG_NUMA=y
|
||||
CONFIG_NODES_SHIFT=1
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
|
||||
CONFIG_MAX_ACTIVE_REGIONS=2
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
||||
CONFIG_PAGE_SIZE_4KB=y
|
||||
# CONFIG_PAGE_SIZE_8KB is not set
|
||||
# CONFIG_PAGE_SIZE_64KB is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
# CONFIG_FLATMEM_MANUAL is not set
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
CONFIG_SPARSEMEM_MANUAL=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_NEED_MULTIPLE_NODES=y
|
||||
CONFIG_HAVE_MEMORY_PRESENT=y
|
||||
CONFIG_SPARSEMEM_STATIC=y
|
||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
|
||||
# CONFIG_MEMORY_HOTPLUG is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_MIGRATION is not set
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=0
|
||||
CONFIG_NR_QUICK=2
|
||||
|
||||
#
|
||||
# Cache configuration
|
||||
#
|
||||
# CONFIG_SH_DIRECT_MAPPED is not set
|
||||
CONFIG_CACHE_WRITEBACK=y
|
||||
# CONFIG_CACHE_WRITETHROUGH is not set
|
||||
# CONFIG_CACHE_OFF is not set
|
||||
|
||||
#
|
||||
# Processor features
|
||||
#
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
# CONFIG_CPU_BIG_ENDIAN is not set
|
||||
# CONFIG_SH_FPU_EMU is not set
|
||||
CONFIG_SH_DSP=y
|
||||
# CONFIG_SH_STORE_QUEUES is not set
|
||||
CONFIG_CPU_HAS_INTEVT=y
|
||||
CONFIG_CPU_HAS_SR_RB=y
|
||||
CONFIG_CPU_HAS_PTEA=y
|
||||
CONFIG_CPU_HAS_DSP=y
|
||||
|
||||
#
|
||||
# Board support
|
||||
#
|
||||
# CONFIG_SH_7722_SOLUTION_ENGINE is not set
|
||||
CONFIG_SH_MIGOR=y
|
||||
|
||||
#
|
||||
# Timer and clock configuration
|
||||
#
|
||||
CONFIG_SH_TMU=y
|
||||
CONFIG_SH_TIMER_IRQ=16
|
||||
CONFIG_SH_PCLK_FREQ=33333333
|
||||
# CONFIG_TICK_ONESHOT is not set
|
||||
# CONFIG_NO_HZ is not set
|
||||
# CONFIG_HIGH_RES_TIMERS is not set
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
#
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
|
||||
#
|
||||
# DMA support
|
||||
#
|
||||
# CONFIG_SH_DMA is not set
|
||||
|
||||
#
|
||||
# Companion Chips
|
||||
#
|
||||
|
||||
#
|
||||
# Additional SuperH Device Drivers
|
||||
#
|
||||
# CONFIG_HEARTBEAT is not set
|
||||
# CONFIG_PUSH_SWITCH is not set
|
||||
|
||||
#
|
||||
# Kernel features
|
||||
#
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_250=y
|
||||
# CONFIG_HZ_300 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
# CONFIG_SCHED_HRTICK is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_RCU_TRACE=y
|
||||
CONFIG_GUSA=y
|
||||
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
CONFIG_ZERO_PAGE_OFFSET=0x00001000
|
||||
CONFIG_BOOT_LINK_OFFSET=0x00800000
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttySC0,115200 earlyprintk=serial ip=on"
|
||||
|
||||
#
|
||||
# Bus options
|
||||
#
|
||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_XFRM_STATISTICS is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
# CONFIG_IP_PNP_BOOTP is not set
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
# CONFIG_SYN_COOKIES is not set
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_BEET=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_CUBIC=y
|
||||
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_TCP_MD5SIG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
# CONFIG_NETWORK_SECMARK is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
# CONFIG_IP_DCCP is not set
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_TIPC is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
||||
#
|
||||
# Wireless
|
||||
#
|
||||
# CONFIG_CFG80211 is not set
|
||||
CONFIG_WIRELESS_EXT=y
|
||||
# CONFIG_MAC80211 is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=m
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
# CONFIG_CONNECTOR is not set
|
||||
# CONFIG_MTD is not set
|
||||
# CONFIG_PARPORT is not set
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_DMA=y
|
||||
# CONFIG_SCSI_TGT is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
# CONFIG_BLK_DEV_SR is not set
|
||||
# CONFIG_CHR_DEV_SG is not set
|
||||
# CONFIG_CHR_DEV_SCH is not set
|
||||
|
||||
#
|
||||
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
||||
#
|
||||
# CONFIG_SCSI_MULTI_LUN is not set
|
||||
# CONFIG_SCSI_CONSTANTS is not set
|
||||
# CONFIG_SCSI_LOGGING is not set
|
||||
# CONFIG_SCSI_SCAN_ASYNC is not set
|
||||
CONFIG_SCSI_WAIT_SCAN=m
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_ATA is not set
|
||||
# CONFIG_MD is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NETDEVICES_MULTIQUEUE is not set
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_MACVLAN is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
# CONFIG_VETH is not set
|
||||
# CONFIG_PHYLIB is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_AX88796 is not set
|
||||
# CONFIG_STNIC is not set
|
||||
CONFIG_SMC91X=y
|
||||
# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_TAH is not set
|
||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
# CONFIG_B44 is not set
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
#
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_ISDN is not set
|
||||
# CONFIG_PHONE is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||
# CONFIG_INPUT_POLLDEV is not set
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TABLET is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_SH_SCI=y
|
||||
CONFIG_SERIAL_SH_SCI_NR_UARTS=3
|
||||
CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
# CONFIG_W1 is not set
|
||||
# CONFIG_POWER_SUPPLY is not set
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_WATCHDOG is not set
|
||||
|
||||
#
|
||||
# Sonics Silicon Backplane
|
||||
#
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
# CONFIG_DVB_CORE is not set
|
||||
# CONFIG_DAB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_VGASTATE is not set
|
||||
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
|
||||
# CONFIG_FB is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Display device support
|
||||
#
|
||||
# CONFIG_DISPLAY_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
#
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
CONFIG_HID_SUPPORT=y
|
||||
CONFIG_HID=y
|
||||
# CONFIG_HID_DEBUG is not set
|
||||
# CONFIG_HIDRAW is not set
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
# CONFIG_USB_ARCH_HAS_EHCI is not set
|
||||
# CONFIG_USB is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
CONFIG_USB_GADGET=y
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
# CONFIG_USB_GADGET_DEBUG_FS is not set
|
||||
CONFIG_USB_GADGET_SELECTED=y
|
||||
# CONFIG_USB_GADGET_AMD5536UDC is not set
|
||||
# CONFIG_USB_GADGET_ATMEL_USBA is not set
|
||||
# CONFIG_USB_GADGET_FSL_USB2 is not set
|
||||
# CONFIG_USB_GADGET_NET2280 is not set
|
||||
# CONFIG_USB_GADGET_PXA2XX is not set
|
||||
CONFIG_USB_GADGET_M66592=y
|
||||
CONFIG_USB_M66592=y
|
||||
CONFIG_SUPERH_BUILT_IN_M66592=y
|
||||
# CONFIG_USB_GADGET_GOKU is not set
|
||||
# CONFIG_USB_GADGET_LH7A40X is not set
|
||||
# CONFIG_USB_GADGET_OMAP is not set
|
||||
# CONFIG_USB_GADGET_S3C2410 is not set
|
||||
# CONFIG_USB_GADGET_AT91 is not set
|
||||
# CONFIG_USB_GADGET_DUMMY_HCD is not set
|
||||
CONFIG_USB_GADGET_DUALSPEED=y
|
||||
# CONFIG_USB_ZERO is not set
|
||||
# CONFIG_USB_ETH is not set
|
||||
# CONFIG_USB_GADGETFS is not set
|
||||
# CONFIG_USB_FILE_STORAGE is not set
|
||||
CONFIG_USB_G_SERIAL=y
|
||||
# CONFIG_USB_MIDI_GADGET is not set
|
||||
# CONFIG_USB_G_PRINTER is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
CONFIG_RTC_LIB=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_HCTOSYS=y
|
||||
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
|
||||
# CONFIG_RTC_DEBUG is not set
|
||||
|
||||
#
|
||||
# RTC interfaces
|
||||
#
|
||||
CONFIG_RTC_INTF_SYSFS=y
|
||||
CONFIG_RTC_INTF_PROC=y
|
||||
CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
|
||||
# CONFIG_RTC_DRV_TEST is not set
|
||||
|
||||
#
|
||||
# SPI RTC drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Platform RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_DS1553 is not set
|
||||
# CONFIG_RTC_DRV_STK17TA8 is not set
|
||||
# CONFIG_RTC_DRV_DS1742 is not set
|
||||
# CONFIG_RTC_DRV_M48T86 is not set
|
||||
# CONFIG_RTC_DRV_M48T59 is not set
|
||||
# CONFIG_RTC_DRV_V3020 is not set
|
||||
|
||||
#
|
||||
# on-CPU RTC drivers
|
||||
#
|
||||
CONFIG_RTC_DRV_SH=y
|
||||
|
||||
#
|
||||
# Userspace I/O
|
||||
#
|
||||
# CONFIG_UIO is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_INOTIFY is not set
|
||||
# CONFIG_QUOTA is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
# CONFIG_ISO9660_FS is not set
|
||||
# CONFIG_UDF_FS is not set
|
||||
|
||||
#
|
||||
# DOS/FAT/NT Filesystems
|
||||
#
|
||||
# CONFIG_MSDOS_FS is not set
|
||||
# CONFIG_VFAT_FS is not set
|
||||
# CONFIG_NTFS_FS is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
# CONFIG_HFSPLUS_FS is not set
|
||||
# CONFIG_BEFS_FS is not set
|
||||
# CONFIG_BFS_FS is not set
|
||||
# CONFIG_EFS_FS is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
# CONFIG_NETWORK_FILESYSTEMS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
# CONFIG_NLS is not set
|
||||
# CONFIG_DLM is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
# CONFIG_SH_STANDARD_BIOS is not set
|
||||
CONFIG_EARLY_SCIF_CONSOLE=y
|
||||
CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
# CONFIG_SH_KGDB is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
CONFIG_CRYPTO=y
|
||||
# CONFIG_CRYPTO_SEQIV is not set
|
||||
# CONFIG_CRYPTO_MANAGER is not set
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
# CONFIG_CRYPTO_MD5 is not set
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_ECB is not set
|
||||
# CONFIG_CRYPTO_CBC is not set
|
||||
# CONFIG_CRYPTO_PCBC is not set
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
# CONFIG_CRYPTO_CTR is not set
|
||||
# CONFIG_CRYPTO_GCM is not set
|
||||
# CONFIG_CRYPTO_CCM is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
# CONFIG_CRYPTO_DES is not set
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_LZO is not set
|
||||
CONFIG_CRYPTO_HW=y
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_ITU_T is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_CRC7 is not set
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_PLIST=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HAS_DMA=y
|
|
@ -1,9 +1,10 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.23-rc2
|
||||
# Tue Aug 14 18:04:44 2007
|
||||
# Linux kernel version: 2.6.24
|
||||
# Thu Feb 7 16:25:55 2008
|
||||
#
|
||||
CONFIG_SUPERH=y
|
||||
CONFIG_SUPERH32=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
|
@ -36,9 +37,14 @@ CONFIG_SYSVIPC_SYSCTL=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
CONFIG_FAIR_USER_SCHED=y
|
||||
# CONFIG_FAIR_CGROUP_SCHED is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
# CONFIG_RELAY is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
|
@ -53,6 +59,7 @@ CONFIG_HOTPLUG=y
|
|||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
|
@ -65,6 +72,13 @@ CONFIG_VM_EVENT_COUNTERS=y
|
|||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
CONFIG_PROFILING=y
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_OPROFILE=y
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_HAVE_KPROBES is not set
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
@ -91,13 +105,17 @@ CONFIG_DEFAULT_AS=y
|
|||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
|
||||
#
|
||||
# System type
|
||||
#
|
||||
CONFIG_CPU_SH4=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7619 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7203 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7206 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7263 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7705 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7706 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7707 is not set
|
||||
|
@ -105,6 +123,8 @@ CONFIG_CPU_SH4=y
|
|||
# CONFIG_CPU_SUBTYPE_SH7709 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7710 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7712 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7720 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7721 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7091 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750R is not set
|
||||
|
@ -113,14 +133,15 @@ CONFIG_CPU_SH4=y
|
|||
CONFIG_CPU_SUBTYPE_SH7751R=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7760 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH4_202 is not set
|
||||
# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
|
||||
# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7763 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7770 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7780 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7785 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SHX3 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7343 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7722 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH5_101 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH5_103 is not set
|
||||
|
||||
#
|
||||
# Memory management options
|
||||
|
@ -130,6 +151,7 @@ CONFIG_MMU=y
|
|||
CONFIG_PAGE_OFFSET=0x80000000
|
||||
CONFIG_MEMORY_START=0x0c000000
|
||||
CONFIG_MEMORY_SIZE=0x04000000
|
||||
CONFIG_29BIT=y
|
||||
CONFIG_VSYSCALL=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
|
@ -147,6 +169,7 @@ CONFIG_FLATMEM_MANUAL=y
|
|||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
CONFIG_SPARSEMEM_STATIC=y
|
||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=0
|
||||
|
@ -168,23 +191,22 @@ CONFIG_CPU_LITTLE_ENDIAN=y
|
|||
CONFIG_SH_FPU=y
|
||||
# CONFIG_SH_STORE_QUEUES is not set
|
||||
CONFIG_CPU_HAS_INTEVT=y
|
||||
CONFIG_CPU_HAS_INTC_IRQ=y
|
||||
CONFIG_CPU_HAS_SR_RB=y
|
||||
CONFIG_CPU_HAS_PTEA=y
|
||||
CONFIG_CPU_HAS_FPU=y
|
||||
|
||||
#
|
||||
# Board support
|
||||
#
|
||||
# CONFIG_SH_7751_SYSTEMH is not set
|
||||
# CONFIG_SH_SECUREEDGE5410 is not set
|
||||
# CONFIG_SH_HS7751RVOIP is not set
|
||||
CONFIG_SH_RTS7751R2D=y
|
||||
# CONFIG_SH_LANDISK is not set
|
||||
# CONFIG_SH_TITAN is not set
|
||||
# CONFIG_SH_LBOX_RE2 is not set
|
||||
|
||||
#
|
||||
# RTS7751R2D options
|
||||
# RTS7751R2D Board Revision
|
||||
#
|
||||
# CONFIG_RTS7751R2D_PLUS is not set
|
||||
CONFIG_RTS7751R2D_1=y
|
||||
|
@ -198,6 +220,7 @@ CONFIG_SH_PCLK_FREQ=60000000
|
|||
# CONFIG_TICK_ONESHOT is not set
|
||||
# CONFIG_NO_HZ is not set
|
||||
# CONFIG_HIGH_RES_TIMERS is not set
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
|
@ -227,11 +250,15 @@ CONFIG_HZ_250=y
|
|||
# CONFIG_HZ_300 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
# CONFIG_SCHED_HRTICK is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_RCU_TRACE=y
|
||||
CONFIG_GUSA=y
|
||||
# CONFIG_GUSA_RB is not set
|
||||
|
||||
#
|
||||
# Boot options
|
||||
|
@ -250,10 +277,7 @@ CONFIG_SH_PCIDMA_NONCOHERENT=y
|
|||
CONFIG_PCI_AUTO=y
|
||||
CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
|
||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
CONFIG_PCI_LEGACY=y
|
||||
# CONFIG_PCCARD is not set
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
# CONFIG_HOTPLUG_PCI_FAKE is not set
|
||||
|
@ -281,6 +305,7 @@ CONFIG_XFRM=y
|
|||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_XFRM_STATISTICS is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
|
@ -299,6 +324,7 @@ CONFIG_IP_FIB_HASH=y
|
|||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_BEET=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
|
@ -324,10 +350,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_LAPB is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
|
||||
#
|
||||
|
@ -335,6 +357,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
@ -356,6 +379,7 @@ CONFIG_WIRELESS_EXT=y
|
|||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=m
|
||||
|
@ -371,6 +395,7 @@ CONFIG_BLK_DEV=y
|
|||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
# CONFIG_BLK_DEV_SX8 is not set
|
||||
# CONFIG_BLK_DEV_UB is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
|
@ -420,6 +445,7 @@ CONFIG_SCSI_WAIT_SCAN=m
|
|||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
|
||||
|
@ -493,7 +519,9 @@ CONFIG_ATA=y
|
|||
# CONFIG_PATA_MPIIX is not set
|
||||
# CONFIG_PATA_OLDPIIX is not set
|
||||
# CONFIG_PATA_NETCELL is not set
|
||||
# CONFIG_PATA_NINJA32 is not set
|
||||
# CONFIG_PATA_NS87410 is not set
|
||||
# CONFIG_PATA_NS87415 is not set
|
||||
# CONFIG_PATA_OPTI is not set
|
||||
# CONFIG_PATA_OPTIDMA is not set
|
||||
# CONFIG_PATA_PDC_OLD is not set
|
||||
|
@ -508,14 +536,7 @@ CONFIG_ATA=y
|
|||
# CONFIG_PATA_WINBOND is not set
|
||||
CONFIG_PATA_PLATFORM=y
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
# CONFIG_FUSION is not set
|
||||
# CONFIG_FUSION_SPI is not set
|
||||
# CONFIG_FUSION_FC is not set
|
||||
# CONFIG_FUSION_SAS is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
|
@ -530,25 +551,31 @@ CONFIG_NETDEVICES=y
|
|||
# CONFIG_MACVLAN is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
# CONFIG_VETH is not set
|
||||
# CONFIG_ARCNET is not set
|
||||
# CONFIG_PHYLIB is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_AX88796 is not set
|
||||
# CONFIG_STNIC is not set
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_SMC91X is not set
|
||||
# CONFIG_ENC28J60 is not set
|
||||
# CONFIG_NET_TULIP is not set
|
||||
# CONFIG_HP100 is not set
|
||||
# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_TAH is not set
|
||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
CONFIG_NET_PCI=y
|
||||
# CONFIG_PCNET32 is not set
|
||||
# CONFIG_AMD8111_ETH is not set
|
||||
# CONFIG_ADAPTEC_STARFIRE is not set
|
||||
# CONFIG_B44 is not set
|
||||
# CONFIG_FORCEDETH is not set
|
||||
# CONFIG_DGRS is not set
|
||||
# CONFIG_EEPRO100 is not set
|
||||
# CONFIG_E100 is not set
|
||||
# CONFIG_FEALNX is not set
|
||||
|
@ -560,6 +587,7 @@ CONFIG_8139TOO=y
|
|||
# CONFIG_8139TOO_TUNE_TWISTER is not set
|
||||
# CONFIG_8139TOO_8129 is not set
|
||||
# CONFIG_8139_OLD_RX_RESET is not set
|
||||
# CONFIG_R6040 is not set
|
||||
# CONFIG_SIS900 is not set
|
||||
# CONFIG_EPIC100 is not set
|
||||
# CONFIG_SUNDANCE is not set
|
||||
|
@ -570,6 +598,10 @@ CONFIG_NETDEV_1000=y
|
|||
# CONFIG_ACENIC is not set
|
||||
# CONFIG_DL2K is not set
|
||||
# CONFIG_E1000 is not set
|
||||
# CONFIG_E1000E is not set
|
||||
# CONFIG_E1000E_ENABLED is not set
|
||||
# CONFIG_IP1000 is not set
|
||||
# CONFIG_IGB is not set
|
||||
# CONFIG_NS83820 is not set
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
|
@ -577,6 +609,7 @@ CONFIG_NETDEV_1000=y
|
|||
# CONFIG_SIS190 is not set
|
||||
# CONFIG_SKGE is not set
|
||||
# CONFIG_SKY2 is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
# CONFIG_TIGON3 is not set
|
||||
# CONFIG_BNX2 is not set
|
||||
|
@ -585,11 +618,15 @@ CONFIG_NETDEV_1000=y
|
|||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_CHELSIO_T3 is not set
|
||||
# CONFIG_IXGBE is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
# CONFIG_MYRI10GE is not set
|
||||
# CONFIG_NETXEN_NIC is not set
|
||||
# CONFIG_NIU is not set
|
||||
# CONFIG_MLX4_CORE is not set
|
||||
# CONFIG_TEHUTI is not set
|
||||
# CONFIG_BNX2X is not set
|
||||
# CONFIG_TR is not set
|
||||
|
||||
#
|
||||
|
@ -597,13 +634,21 @@ CONFIG_NETDEV_10000=y
|
|||
#
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
#
|
||||
# CONFIG_USB_CATC is not set
|
||||
# CONFIG_USB_KAWETH is not set
|
||||
# CONFIG_USB_PEGASUS is not set
|
||||
# CONFIG_USB_RTL8150 is not set
|
||||
# CONFIG_USB_USBNET is not set
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_FDDI is not set
|
||||
# CONFIG_HIPPI is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_NET_FC is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
@ -622,7 +667,6 @@ CONFIG_INPUT=y
|
|||
#
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_TSDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
|
@ -650,6 +694,7 @@ CONFIG_VT_CONSOLE=y
|
|||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
# CONFIG_NOZOMI is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
|
@ -674,11 +719,9 @@ CONFIG_UNIX98_PTYS=y
|
|||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_WATCHDOG is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
# CONFIG_DRM is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
CONFIG_DEVPORT=y
|
||||
|
@ -687,16 +730,30 @@ CONFIG_DEVPORT=y
|
|||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
|
||||
#
|
||||
# SPI Master Controller Drivers
|
||||
#
|
||||
CONFIG_SPI_BITBANG=y
|
||||
CONFIG_SPI_SH_SCI=y
|
||||
|
||||
#
|
||||
# SPI Protocol Masters
|
||||
#
|
||||
# CONFIG_SPI_AT25 is not set
|
||||
# CONFIG_SPI_SPIDEV is not set
|
||||
# CONFIG_SPI_TLE62X0 is not set
|
||||
# CONFIG_W1 is not set
|
||||
# CONFIG_POWER_SUPPLY is not set
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_SENSORS_ABITUGURU is not set
|
||||
# CONFIG_SENSORS_ABITUGURU3 is not set
|
||||
# CONFIG_SENSORS_I5K_AMB is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
# CONFIG_SENSORS_F71882FG is not set
|
||||
# CONFIG_SENSORS_IT87 is not set
|
||||
# CONFIG_SENSORS_LM70 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_PC87427 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
|
@ -708,6 +765,13 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
# CONFIG_WATCHDOG is not set
|
||||
|
||||
#
|
||||
# Sonics Silicon Backplane
|
||||
#
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
|
@ -720,16 +784,12 @@ CONFIG_MFD_SM501=y
|
|||
# CONFIG_VIDEO_DEV is not set
|
||||
# CONFIG_DVB_CORE is not set
|
||||
CONFIG_DAB=y
|
||||
# CONFIG_USB_DABUSB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Display device support
|
||||
#
|
||||
# CONFIG_DISPLAY_SUPPORT is not set
|
||||
# CONFIG_DRM is not set
|
||||
# CONFIG_VGASTATE is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
|
@ -738,6 +798,7 @@ CONFIG_FB=y
|
|||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
|
||||
# CONFIG_FB_SYS_FILLRECT is not set
|
||||
# CONFIG_FB_SYS_COPYAREA is not set
|
||||
# CONFIG_FB_SYS_IMAGEBLIT is not set
|
||||
|
@ -777,6 +838,12 @@ CONFIG_FB_DEFERRED_IO=y
|
|||
# CONFIG_FB_PM3 is not set
|
||||
CONFIG_FB_SM501=y
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Display device support
|
||||
#
|
||||
# CONFIG_DISPLAY_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
|
@ -844,6 +911,7 @@ CONFIG_SND_AC97_CODEC=m
|
|||
# CONFIG_SND_BT87X is not set
|
||||
# CONFIG_SND_CA0106 is not set
|
||||
# CONFIG_SND_CMIPCI is not set
|
||||
# CONFIG_SND_OXYGEN is not set
|
||||
# CONFIG_SND_CS4281 is not set
|
||||
# CONFIG_SND_CS46XX is not set
|
||||
# CONFIG_SND_DARLA20 is not set
|
||||
|
@ -868,6 +936,7 @@ CONFIG_SND_AC97_CODEC=m
|
|||
# CONFIG_SND_HDA_INTEL is not set
|
||||
# CONFIG_SND_HDSP is not set
|
||||
# CONFIG_SND_HDSPM is not set
|
||||
# CONFIG_SND_HIFIER is not set
|
||||
# CONFIG_SND_ICE1712 is not set
|
||||
# CONFIG_SND_ICE1724 is not set
|
||||
# CONFIG_SND_INTEL8X0 is not set
|
||||
|
@ -885,15 +954,26 @@ CONFIG_SND_AC97_CODEC=m
|
|||
# CONFIG_SND_TRIDENT is not set
|
||||
# CONFIG_SND_VIA82XX is not set
|
||||
# CONFIG_SND_VIA82XX_MODEM is not set
|
||||
# CONFIG_SND_VIRTUOSO is not set
|
||||
# CONFIG_SND_VX222 is not set
|
||||
CONFIG_SND_YMFPCI=m
|
||||
CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y
|
||||
# CONFIG_SND_AC97_POWER_SAVE is not set
|
||||
|
||||
#
|
||||
# SPI devices
|
||||
#
|
||||
|
||||
#
|
||||
# SUPERH devices
|
||||
#
|
||||
|
||||
#
|
||||
# USB devices
|
||||
#
|
||||
# CONFIG_SND_USB_AUDIO is not set
|
||||
# CONFIG_SND_USB_CAIAQ is not set
|
||||
|
||||
#
|
||||
# System on Chip audio support
|
||||
#
|
||||
|
@ -903,6 +983,10 @@ CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y
|
|||
# SoC Audio support for SuperH
|
||||
#
|
||||
|
||||
#
|
||||
# ALSA SoC audio for Freescale SOCs
|
||||
#
|
||||
|
||||
#
|
||||
# Open Sound System
|
||||
#
|
||||
|
@ -914,19 +998,104 @@ CONFIG_AC97_BUS=m
|
|||
CONFIG_HID_SUPPORT=y
|
||||
CONFIG_HID=y
|
||||
# CONFIG_HID_DEBUG is not set
|
||||
# CONFIG_HIDRAW is not set
|
||||
|
||||
#
|
||||
# USB Input Devices
|
||||
#
|
||||
CONFIG_USB_HID=y
|
||||
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
|
||||
# CONFIG_HID_FF is not set
|
||||
# CONFIG_USB_HIDDEV is not set
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB_ARCH_HAS_EHCI=y
|
||||
# CONFIG_USB is not set
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_DEBUG is not set
|
||||
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
||||
|
||||
#
|
||||
# Miscellaneous USB options
|
||||
#
|
||||
# CONFIG_USB_DEVICEFS is not set
|
||||
CONFIG_USB_DEVICE_CLASS=y
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_OTG is not set
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
#
|
||||
# CONFIG_USB_EHCI_HCD is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
|
||||
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
# CONFIG_USB_UHCI_HCD is not set
|
||||
# CONFIG_USB_SL811_HCD is not set
|
||||
# CONFIG_USB_R8A66597_HCD is not set
|
||||
|
||||
#
|
||||
# USB Device Class drivers
|
||||
#
|
||||
# CONFIG_USB_ACM is not set
|
||||
# CONFIG_USB_PRINTER is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_DATAFAB is not set
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
# CONFIG_USB_STORAGE_ISD200 is not set
|
||||
# CONFIG_USB_STORAGE_DPCM is not set
|
||||
# CONFIG_USB_STORAGE_USBAT is not set
|
||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||
# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
||||
# CONFIG_USB_STORAGE_ALAUDA is not set
|
||||
# CONFIG_USB_STORAGE_KARMA is not set
|
||||
CONFIG_USB_LIBUSUAL=y
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
# CONFIG_USB_MON is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
#
|
||||
# CONFIG_USB_SERIAL is not set
|
||||
|
||||
#
|
||||
# USB Miscellaneous drivers
|
||||
#
|
||||
# CONFIG_USB_EMI62 is not set
|
||||
# CONFIG_USB_EMI26 is not set
|
||||
# CONFIG_USB_ADUTUX is not set
|
||||
# CONFIG_USB_AUERSWALD is not set
|
||||
# CONFIG_USB_RIO500 is not set
|
||||
# CONFIG_USB_LEGOTOWER is not set
|
||||
# CONFIG_USB_LCD is not set
|
||||
# CONFIG_USB_BERRY_CHARGE is not set
|
||||
# CONFIG_USB_LED is not set
|
||||
# CONFIG_USB_CYPRESS_CY7C63 is not set
|
||||
# CONFIG_USB_CYTHERM is not set
|
||||
# CONFIG_USB_PHIDGET is not set
|
||||
# CONFIG_USB_IDMOUSE is not set
|
||||
# CONFIG_USB_FTDI_ELAN is not set
|
||||
# CONFIG_USB_APPLEDISPLAY is not set
|
||||
# CONFIG_USB_LD is not set
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
# CONFIG_USB_IOWARRIOR is not set
|
||||
# CONFIG_USB_GADGET is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
@ -949,13 +1118,17 @@ CONFIG_RTC_INTF_DEV=y
|
|||
#
|
||||
# SPI RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_MAX6902 is not set
|
||||
CONFIG_RTC_DRV_R9701=y
|
||||
# CONFIG_RTC_DRV_RS5C348 is not set
|
||||
|
||||
#
|
||||
# Platform RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_DS1511 is not set
|
||||
# CONFIG_RTC_DRV_DS1553 is not set
|
||||
# CONFIG_RTC_DRV_STK17TA8 is not set
|
||||
# CONFIG_RTC_DRV_DS1742 is not set
|
||||
# CONFIG_RTC_DRV_STK17TA8 is not set
|
||||
# CONFIG_RTC_DRV_M48T86 is not set
|
||||
# CONFIG_RTC_DRV_M48T59 is not set
|
||||
# CONFIG_RTC_DRV_V3020 is not set
|
||||
|
@ -963,20 +1136,7 @@ CONFIG_RTC_INTF_DEV=y
|
|||
#
|
||||
# on-CPU RTC drivers
|
||||
#
|
||||
CONFIG_RTC_DRV_SH=y
|
||||
|
||||
#
|
||||
# DMA Engine support
|
||||
#
|
||||
# CONFIG_DMA_ENGINE is not set
|
||||
|
||||
#
|
||||
# DMA Clients
|
||||
#
|
||||
|
||||
#
|
||||
# DMA Devices
|
||||
#
|
||||
# CONFIG_RTC_DRV_SH is not set
|
||||
|
||||
#
|
||||
# Userspace I/O
|
||||
|
@ -1034,7 +1194,6 @@ CONFIG_TMPFS=y
|
|||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
|
@ -1053,10 +1212,7 @@ CONFIG_RAMFS=y
|
|||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
|
||||
#
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
# CONFIG_NFS_FS is not set
|
||||
# CONFIG_NFSD is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
|
@ -1070,10 +1226,6 @@ CONFIG_RAMFS=y
|
|||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NLS_DEFAULT="iso8859-1"
|
||||
# CONFIG_NLS_CODEPAGE_437 is not set
|
||||
|
@ -1114,30 +1266,22 @@ CONFIG_NLS_CODEPAGE_932=y
|
|||
# CONFIG_NLS_KOI8_R is not set
|
||||
# CONFIG_NLS_KOI8_U is not set
|
||||
# CONFIG_NLS_UTF8 is not set
|
||||
|
||||
#
|
||||
# Distributed Lock Manager
|
||||
#
|
||||
# CONFIG_DLM is not set
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
#
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_OPROFILE=y
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
# CONFIG_SH_STANDARD_BIOS is not set
|
||||
CONFIG_EARLY_SCIF_CONSOLE=y
|
||||
CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
|
||||
|
@ -1149,7 +1293,53 @@ CONFIG_EARLY_PRINTK=y
|
|||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_CRYPTO is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
CONFIG_CRYPTO=y
|
||||
# CONFIG_CRYPTO_SEQIV is not set
|
||||
# CONFIG_CRYPTO_MANAGER is not set
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
# CONFIG_CRYPTO_MD5 is not set
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_ECB is not set
|
||||
# CONFIG_CRYPTO_CBC is not set
|
||||
# CONFIG_CRYPTO_PCBC is not set
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
# CONFIG_CRYPTO_CTR is not set
|
||||
# CONFIG_CRYPTO_GCM is not set
|
||||
# CONFIG_CRYPTO_CCM is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
# CONFIG_CRYPTO_DES is not set
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_LZO is not set
|
||||
CONFIG_CRYPTO_HW=y
|
||||
# CONFIG_CRYPTO_DEV_HIFN_795X is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.23-rc2
|
||||
# Tue Aug 14 16:33:08 2007
|
||||
# Linux kernel version: 2.6.24
|
||||
# Thu Feb 7 16:17:47 2008
|
||||
#
|
||||
CONFIG_SUPERH=y
|
||||
CONFIG_SUPERH32=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
|
@ -36,9 +37,14 @@ CONFIG_SYSVIPC_SYSCTL=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
CONFIG_FAIR_USER_SCHED=y
|
||||
# CONFIG_FAIR_CGROUP_SCHED is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
# CONFIG_RELAY is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
|
@ -53,6 +59,7 @@ CONFIG_HOTPLUG=y
|
|||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
|
@ -65,6 +72,13 @@ CONFIG_VM_EVENT_COUNTERS=y
|
|||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
CONFIG_PROFILING=y
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_OPROFILE=y
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_HAVE_KPROBES is not set
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
@ -91,13 +105,17 @@ CONFIG_DEFAULT_AS=y
|
|||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
|
||||
#
|
||||
# System type
|
||||
#
|
||||
CONFIG_CPU_SH4=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7619 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7203 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7206 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7263 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7705 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7706 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7707 is not set
|
||||
|
@ -105,6 +123,8 @@ CONFIG_CPU_SH4=y
|
|||
# CONFIG_CPU_SUBTYPE_SH7709 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7710 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7712 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7720 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7721 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7091 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750R is not set
|
||||
|
@ -113,14 +133,15 @@ CONFIG_CPU_SH4=y
|
|||
CONFIG_CPU_SUBTYPE_SH7751R=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7760 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH4_202 is not set
|
||||
# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
|
||||
# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7763 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7770 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7780 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7785 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SHX3 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7343 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7722 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH5_101 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH5_103 is not set
|
||||
|
||||
#
|
||||
# Memory management options
|
||||
|
@ -130,6 +151,7 @@ CONFIG_MMU=y
|
|||
CONFIG_PAGE_OFFSET=0x80000000
|
||||
CONFIG_MEMORY_START=0x0c000000
|
||||
CONFIG_MEMORY_SIZE=0x04000000
|
||||
CONFIG_29BIT=y
|
||||
CONFIG_VSYSCALL=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
|
@ -147,6 +169,7 @@ CONFIG_FLATMEM_MANUAL=y
|
|||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
CONFIG_SPARSEMEM_STATIC=y
|
||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=0
|
||||
|
@ -168,23 +191,22 @@ CONFIG_CPU_LITTLE_ENDIAN=y
|
|||
CONFIG_SH_FPU=y
|
||||
# CONFIG_SH_STORE_QUEUES is not set
|
||||
CONFIG_CPU_HAS_INTEVT=y
|
||||
CONFIG_CPU_HAS_INTC_IRQ=y
|
||||
CONFIG_CPU_HAS_SR_RB=y
|
||||
CONFIG_CPU_HAS_PTEA=y
|
||||
CONFIG_CPU_HAS_FPU=y
|
||||
|
||||
#
|
||||
# Board support
|
||||
#
|
||||
# CONFIG_SH_7751_SYSTEMH is not set
|
||||
# CONFIG_SH_SECUREEDGE5410 is not set
|
||||
# CONFIG_SH_HS7751RVOIP is not set
|
||||
CONFIG_SH_RTS7751R2D=y
|
||||
# CONFIG_SH_LANDISK is not set
|
||||
# CONFIG_SH_TITAN is not set
|
||||
# CONFIG_SH_LBOX_RE2 is not set
|
||||
|
||||
#
|
||||
# RTS7751R2D options
|
||||
# RTS7751R2D Board Revision
|
||||
#
|
||||
CONFIG_RTS7751R2D_PLUS=y
|
||||
# CONFIG_RTS7751R2D_1 is not set
|
||||
|
@ -198,6 +220,7 @@ CONFIG_SH_PCLK_FREQ=60000000
|
|||
# CONFIG_TICK_ONESHOT is not set
|
||||
# CONFIG_NO_HZ is not set
|
||||
# CONFIG_HIGH_RES_TIMERS is not set
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
|
@ -227,11 +250,15 @@ CONFIG_HZ_250=y
|
|||
# CONFIG_HZ_300 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
# CONFIG_SCHED_HRTICK is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_RCU_TRACE=y
|
||||
CONFIG_GUSA=y
|
||||
# CONFIG_GUSA_RB is not set
|
||||
|
||||
#
|
||||
# Boot options
|
||||
|
@ -250,10 +277,7 @@ CONFIG_SH_PCIDMA_NONCOHERENT=y
|
|||
CONFIG_PCI_AUTO=y
|
||||
CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
|
||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
CONFIG_PCI_LEGACY=y
|
||||
# CONFIG_PCCARD is not set
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
# CONFIG_HOTPLUG_PCI_FAKE is not set
|
||||
|
@ -281,6 +305,7 @@ CONFIG_XFRM=y
|
|||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_XFRM_STATISTICS is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
|
@ -299,6 +324,7 @@ CONFIG_IP_FIB_HASH=y
|
|||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_BEET=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
|
@ -324,10 +350,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_LAPB is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
|
||||
#
|
||||
|
@ -335,6 +357,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
@ -356,6 +379,7 @@ CONFIG_WIRELESS_EXT=y
|
|||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=m
|
||||
|
@ -371,6 +395,7 @@ CONFIG_BLK_DEV=y
|
|||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
# CONFIG_BLK_DEV_SX8 is not set
|
||||
# CONFIG_BLK_DEV_UB is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
|
@ -420,6 +445,7 @@ CONFIG_SCSI_WAIT_SCAN=m
|
|||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
|
||||
|
@ -493,7 +519,9 @@ CONFIG_ATA=y
|
|||
# CONFIG_PATA_MPIIX is not set
|
||||
# CONFIG_PATA_OLDPIIX is not set
|
||||
# CONFIG_PATA_NETCELL is not set
|
||||
# CONFIG_PATA_NINJA32 is not set
|
||||
# CONFIG_PATA_NS87410 is not set
|
||||
# CONFIG_PATA_NS87415 is not set
|
||||
# CONFIG_PATA_OPTI is not set
|
||||
# CONFIG_PATA_OPTIDMA is not set
|
||||
# CONFIG_PATA_PDC_OLD is not set
|
||||
|
@ -508,14 +536,7 @@ CONFIG_ATA=y
|
|||
# CONFIG_PATA_WINBOND is not set
|
||||
CONFIG_PATA_PLATFORM=y
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
# CONFIG_FUSION is not set
|
||||
# CONFIG_FUSION_SPI is not set
|
||||
# CONFIG_FUSION_FC is not set
|
||||
# CONFIG_FUSION_SAS is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
|
@ -530,25 +551,31 @@ CONFIG_NETDEVICES=y
|
|||
# CONFIG_MACVLAN is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
# CONFIG_VETH is not set
|
||||
# CONFIG_ARCNET is not set
|
||||
# CONFIG_PHYLIB is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_AX88796 is not set
|
||||
# CONFIG_STNIC is not set
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_SMC91X is not set
|
||||
# CONFIG_ENC28J60 is not set
|
||||
# CONFIG_NET_TULIP is not set
|
||||
# CONFIG_HP100 is not set
|
||||
# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_TAH is not set
|
||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
CONFIG_NET_PCI=y
|
||||
# CONFIG_PCNET32 is not set
|
||||
# CONFIG_AMD8111_ETH is not set
|
||||
# CONFIG_ADAPTEC_STARFIRE is not set
|
||||
# CONFIG_B44 is not set
|
||||
# CONFIG_FORCEDETH is not set
|
||||
# CONFIG_DGRS is not set
|
||||
# CONFIG_EEPRO100 is not set
|
||||
# CONFIG_E100 is not set
|
||||
# CONFIG_FEALNX is not set
|
||||
|
@ -560,6 +587,7 @@ CONFIG_8139TOO=y
|
|||
# CONFIG_8139TOO_TUNE_TWISTER is not set
|
||||
# CONFIG_8139TOO_8129 is not set
|
||||
# CONFIG_8139_OLD_RX_RESET is not set
|
||||
# CONFIG_R6040 is not set
|
||||
# CONFIG_SIS900 is not set
|
||||
# CONFIG_EPIC100 is not set
|
||||
# CONFIG_SUNDANCE is not set
|
||||
|
@ -570,6 +598,10 @@ CONFIG_NETDEV_1000=y
|
|||
# CONFIG_ACENIC is not set
|
||||
# CONFIG_DL2K is not set
|
||||
# CONFIG_E1000 is not set
|
||||
# CONFIG_E1000E is not set
|
||||
# CONFIG_E1000E_ENABLED is not set
|
||||
# CONFIG_IP1000 is not set
|
||||
# CONFIG_IGB is not set
|
||||
# CONFIG_NS83820 is not set
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
|
@ -577,6 +609,7 @@ CONFIG_NETDEV_1000=y
|
|||
# CONFIG_SIS190 is not set
|
||||
# CONFIG_SKGE is not set
|
||||
# CONFIG_SKY2 is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
# CONFIG_TIGON3 is not set
|
||||
# CONFIG_BNX2 is not set
|
||||
|
@ -585,11 +618,15 @@ CONFIG_NETDEV_1000=y
|
|||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_CHELSIO_T3 is not set
|
||||
# CONFIG_IXGBE is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
# CONFIG_MYRI10GE is not set
|
||||
# CONFIG_NETXEN_NIC is not set
|
||||
# CONFIG_NIU is not set
|
||||
# CONFIG_MLX4_CORE is not set
|
||||
# CONFIG_TEHUTI is not set
|
||||
# CONFIG_BNX2X is not set
|
||||
# CONFIG_TR is not set
|
||||
|
||||
#
|
||||
|
@ -597,13 +634,21 @@ CONFIG_NETDEV_10000=y
|
|||
#
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
#
|
||||
# CONFIG_USB_CATC is not set
|
||||
# CONFIG_USB_KAWETH is not set
|
||||
# CONFIG_USB_PEGASUS is not set
|
||||
# CONFIG_USB_RTL8150 is not set
|
||||
# CONFIG_USB_USBNET is not set
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_FDDI is not set
|
||||
# CONFIG_HIPPI is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_NET_FC is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
@ -622,7 +667,6 @@ CONFIG_INPUT=y
|
|||
#
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_TSDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
|
@ -650,6 +694,7 @@ CONFIG_VT_CONSOLE=y
|
|||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
# CONFIG_NOZOMI is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
|
@ -674,11 +719,9 @@ CONFIG_UNIX98_PTYS=y
|
|||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_WATCHDOG is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
# CONFIG_DRM is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
CONFIG_DEVPORT=y
|
||||
|
@ -687,16 +730,30 @@ CONFIG_DEVPORT=y
|
|||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
|
||||
#
|
||||
# SPI Master Controller Drivers
|
||||
#
|
||||
CONFIG_SPI_BITBANG=y
|
||||
CONFIG_SPI_SH_SCI=y
|
||||
|
||||
#
|
||||
# SPI Protocol Masters
|
||||
#
|
||||
# CONFIG_SPI_AT25 is not set
|
||||
# CONFIG_SPI_SPIDEV is not set
|
||||
# CONFIG_SPI_TLE62X0 is not set
|
||||
# CONFIG_W1 is not set
|
||||
# CONFIG_POWER_SUPPLY is not set
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_SENSORS_ABITUGURU is not set
|
||||
# CONFIG_SENSORS_ABITUGURU3 is not set
|
||||
# CONFIG_SENSORS_I5K_AMB is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
# CONFIG_SENSORS_F71882FG is not set
|
||||
# CONFIG_SENSORS_IT87 is not set
|
||||
# CONFIG_SENSORS_LM70 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_PC87427 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
|
@ -708,6 +765,13 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
# CONFIG_WATCHDOG is not set
|
||||
|
||||
#
|
||||
# Sonics Silicon Backplane
|
||||
#
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
|
@ -720,16 +784,12 @@ CONFIG_MFD_SM501=y
|
|||
# CONFIG_VIDEO_DEV is not set
|
||||
# CONFIG_DVB_CORE is not set
|
||||
CONFIG_DAB=y
|
||||
# CONFIG_USB_DABUSB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Display device support
|
||||
#
|
||||
# CONFIG_DISPLAY_SUPPORT is not set
|
||||
# CONFIG_DRM is not set
|
||||
# CONFIG_VGASTATE is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
|
@ -738,6 +798,7 @@ CONFIG_FB=y
|
|||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
|
||||
# CONFIG_FB_SYS_FILLRECT is not set
|
||||
# CONFIG_FB_SYS_COPYAREA is not set
|
||||
# CONFIG_FB_SYS_IMAGEBLIT is not set
|
||||
|
@ -777,6 +838,12 @@ CONFIG_FB_DEFERRED_IO=y
|
|||
# CONFIG_FB_PM3 is not set
|
||||
CONFIG_FB_SM501=y
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Display device support
|
||||
#
|
||||
# CONFIG_DISPLAY_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
|
@ -844,6 +911,7 @@ CONFIG_SND_AC97_CODEC=m
|
|||
# CONFIG_SND_BT87X is not set
|
||||
# CONFIG_SND_CA0106 is not set
|
||||
# CONFIG_SND_CMIPCI is not set
|
||||
# CONFIG_SND_OXYGEN is not set
|
||||
# CONFIG_SND_CS4281 is not set
|
||||
# CONFIG_SND_CS46XX is not set
|
||||
# CONFIG_SND_DARLA20 is not set
|
||||
|
@ -868,6 +936,7 @@ CONFIG_SND_AC97_CODEC=m
|
|||
# CONFIG_SND_HDA_INTEL is not set
|
||||
# CONFIG_SND_HDSP is not set
|
||||
# CONFIG_SND_HDSPM is not set
|
||||
# CONFIG_SND_HIFIER is not set
|
||||
# CONFIG_SND_ICE1712 is not set
|
||||
# CONFIG_SND_ICE1724 is not set
|
||||
# CONFIG_SND_INTEL8X0 is not set
|
||||
|
@ -885,15 +954,26 @@ CONFIG_SND_AC97_CODEC=m
|
|||
# CONFIG_SND_TRIDENT is not set
|
||||
# CONFIG_SND_VIA82XX is not set
|
||||
# CONFIG_SND_VIA82XX_MODEM is not set
|
||||
# CONFIG_SND_VIRTUOSO is not set
|
||||
# CONFIG_SND_VX222 is not set
|
||||
CONFIG_SND_YMFPCI=m
|
||||
CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y
|
||||
# CONFIG_SND_AC97_POWER_SAVE is not set
|
||||
|
||||
#
|
||||
# SPI devices
|
||||
#
|
||||
|
||||
#
|
||||
# SUPERH devices
|
||||
#
|
||||
|
||||
#
|
||||
# USB devices
|
||||
#
|
||||
# CONFIG_SND_USB_AUDIO is not set
|
||||
# CONFIG_SND_USB_CAIAQ is not set
|
||||
|
||||
#
|
||||
# System on Chip audio support
|
||||
#
|
||||
|
@ -903,6 +983,10 @@ CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y
|
|||
# SoC Audio support for SuperH
|
||||
#
|
||||
|
||||
#
|
||||
# ALSA SoC audio for Freescale SOCs
|
||||
#
|
||||
|
||||
#
|
||||
# Open Sound System
|
||||
#
|
||||
|
@ -914,19 +998,104 @@ CONFIG_AC97_BUS=m
|
|||
CONFIG_HID_SUPPORT=y
|
||||
CONFIG_HID=y
|
||||
# CONFIG_HID_DEBUG is not set
|
||||
# CONFIG_HIDRAW is not set
|
||||
|
||||
#
|
||||
# USB Input Devices
|
||||
#
|
||||
CONFIG_USB_HID=y
|
||||
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
|
||||
# CONFIG_HID_FF is not set
|
||||
# CONFIG_USB_HIDDEV is not set
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB_ARCH_HAS_EHCI=y
|
||||
# CONFIG_USB is not set
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_DEBUG is not set
|
||||
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
||||
|
||||
#
|
||||
# Miscellaneous USB options
|
||||
#
|
||||
# CONFIG_USB_DEVICEFS is not set
|
||||
CONFIG_USB_DEVICE_CLASS=y
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_OTG is not set
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
#
|
||||
# CONFIG_USB_EHCI_HCD is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
|
||||
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
# CONFIG_USB_UHCI_HCD is not set
|
||||
# CONFIG_USB_SL811_HCD is not set
|
||||
# CONFIG_USB_R8A66597_HCD is not set
|
||||
|
||||
#
|
||||
# USB Device Class drivers
|
||||
#
|
||||
# CONFIG_USB_ACM is not set
|
||||
# CONFIG_USB_PRINTER is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_DATAFAB is not set
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
# CONFIG_USB_STORAGE_ISD200 is not set
|
||||
# CONFIG_USB_STORAGE_DPCM is not set
|
||||
# CONFIG_USB_STORAGE_USBAT is not set
|
||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||
# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
||||
# CONFIG_USB_STORAGE_ALAUDA is not set
|
||||
# CONFIG_USB_STORAGE_KARMA is not set
|
||||
CONFIG_USB_LIBUSUAL=y
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
# CONFIG_USB_MON is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
#
|
||||
# CONFIG_USB_SERIAL is not set
|
||||
|
||||
#
|
||||
# USB Miscellaneous drivers
|
||||
#
|
||||
# CONFIG_USB_EMI62 is not set
|
||||
# CONFIG_USB_EMI26 is not set
|
||||
# CONFIG_USB_ADUTUX is not set
|
||||
# CONFIG_USB_AUERSWALD is not set
|
||||
# CONFIG_USB_RIO500 is not set
|
||||
# CONFIG_USB_LEGOTOWER is not set
|
||||
# CONFIG_USB_LCD is not set
|
||||
# CONFIG_USB_BERRY_CHARGE is not set
|
||||
# CONFIG_USB_LED is not set
|
||||
# CONFIG_USB_CYPRESS_CY7C63 is not set
|
||||
# CONFIG_USB_CYTHERM is not set
|
||||
# CONFIG_USB_PHIDGET is not set
|
||||
# CONFIG_USB_IDMOUSE is not set
|
||||
# CONFIG_USB_FTDI_ELAN is not set
|
||||
# CONFIG_USB_APPLEDISPLAY is not set
|
||||
# CONFIG_USB_LD is not set
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
# CONFIG_USB_IOWARRIOR is not set
|
||||
# CONFIG_USB_GADGET is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
@ -949,13 +1118,17 @@ CONFIG_RTC_INTF_DEV=y
|
|||
#
|
||||
# SPI RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_MAX6902 is not set
|
||||
CONFIG_RTC_DRV_R9701=y
|
||||
# CONFIG_RTC_DRV_RS5C348 is not set
|
||||
|
||||
#
|
||||
# Platform RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_DS1511 is not set
|
||||
# CONFIG_RTC_DRV_DS1553 is not set
|
||||
# CONFIG_RTC_DRV_STK17TA8 is not set
|
||||
# CONFIG_RTC_DRV_DS1742 is not set
|
||||
# CONFIG_RTC_DRV_STK17TA8 is not set
|
||||
# CONFIG_RTC_DRV_M48T86 is not set
|
||||
# CONFIG_RTC_DRV_M48T59 is not set
|
||||
# CONFIG_RTC_DRV_V3020 is not set
|
||||
|
@ -963,20 +1136,7 @@ CONFIG_RTC_INTF_DEV=y
|
|||
#
|
||||
# on-CPU RTC drivers
|
||||
#
|
||||
CONFIG_RTC_DRV_SH=y
|
||||
|
||||
#
|
||||
# DMA Engine support
|
||||
#
|
||||
# CONFIG_DMA_ENGINE is not set
|
||||
|
||||
#
|
||||
# DMA Clients
|
||||
#
|
||||
|
||||
#
|
||||
# DMA Devices
|
||||
#
|
||||
# CONFIG_RTC_DRV_SH is not set
|
||||
|
||||
#
|
||||
# Userspace I/O
|
||||
|
@ -1034,7 +1194,6 @@ CONFIG_TMPFS=y
|
|||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
|
@ -1053,10 +1212,7 @@ CONFIG_RAMFS=y
|
|||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
|
||||
#
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
# CONFIG_NFS_FS is not set
|
||||
# CONFIG_NFSD is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
|
@ -1070,10 +1226,6 @@ CONFIG_RAMFS=y
|
|||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NLS_DEFAULT="iso8859-1"
|
||||
# CONFIG_NLS_CODEPAGE_437 is not set
|
||||
|
@ -1114,30 +1266,22 @@ CONFIG_NLS_CODEPAGE_932=y
|
|||
# CONFIG_NLS_KOI8_R is not set
|
||||
# CONFIG_NLS_KOI8_U is not set
|
||||
# CONFIG_NLS_UTF8 is not set
|
||||
|
||||
#
|
||||
# Distributed Lock Manager
|
||||
#
|
||||
# CONFIG_DLM is not set
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
#
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_OPROFILE=y
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
# CONFIG_SH_STANDARD_BIOS is not set
|
||||
CONFIG_EARLY_SCIF_CONSOLE=y
|
||||
CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
|
||||
|
@ -1149,7 +1293,53 @@ CONFIG_EARLY_PRINTK=y
|
|||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_CRYPTO is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
CONFIG_CRYPTO=y
|
||||
# CONFIG_CRYPTO_SEQIV is not set
|
||||
# CONFIG_CRYPTO_MANAGER is not set
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
# CONFIG_CRYPTO_MD5 is not set
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_ECB is not set
|
||||
# CONFIG_CRYPTO_CBC is not set
|
||||
# CONFIG_CRYPTO_PCBC is not set
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
# CONFIG_CRYPTO_CTR is not set
|
||||
# CONFIG_CRYPTO_GCM is not set
|
||||
# CONFIG_CRYPTO_CCM is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
# CONFIG_CRYPTO_DES is not set
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_LZO is not set
|
||||
CONFIG_CRYPTO_HW=y
|
||||
# CONFIG_CRYPTO_DEV_HIFN_795X is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
|
|
|
@ -231,7 +231,6 @@ CONFIG_CPU_LITTLE_ENDIAN=y
|
|||
# CONFIG_SH_DSP is not set
|
||||
# CONFIG_SH_ADC is not set
|
||||
CONFIG_CPU_HAS_INTEVT=y
|
||||
CONFIG_CPU_HAS_PINT_IRQ=y
|
||||
CONFIG_CPU_HAS_IPR_IRQ=y
|
||||
CONFIG_CPU_HAS_SR_RB=y
|
||||
|
||||
|
|
|
@ -350,7 +350,7 @@ int register_dmac(struct dma_info *info)
|
|||
|
||||
BUG_ON((info->flags & DMAC_CHANNELS_CONFIGURED) && !info->channels);
|
||||
|
||||
info->pdev = platform_device_register_simple((char *)info->name, -1,
|
||||
info->pdev = platform_device_register_simple(info->name, -1,
|
||||
NULL, 0);
|
||||
if (IS_ERR(info->pdev))
|
||||
return PTR_ERR(info->pdev);
|
||||
|
|
|
@ -18,7 +18,7 @@ int pci_fixup_pcic(void)
|
|||
{
|
||||
unsigned long bcr1, mcr;
|
||||
|
||||
bcr1 = inl(SH7751_BCR1);
|
||||
bcr1 = ctrl_inl(SH7751_BCR1);
|
||||
bcr1 |= 0x40080000; /* Enable Bit 19 BREQEN, set PCIC to slave */
|
||||
pci_write_reg(bcr1, SH4_PCIBCR1);
|
||||
|
||||
|
@ -28,7 +28,7 @@ int pci_fixup_pcic(void)
|
|||
pci_write_reg(0xfb900047, SH7751_PCICONF1);
|
||||
pci_write_reg(0xab000001, SH7751_PCICONF4);
|
||||
|
||||
mcr = inl(SH7751_MCR);
|
||||
mcr = ctrl_inl(SH7751_MCR);
|
||||
mcr = (mcr & PCIMCR_MRSET_OFF) & PCIMCR_RFSH_OFF;
|
||||
pci_write_reg(mcr, SH4_PCIMCR);
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ int pci_fixup_pcic(void)
|
|||
{
|
||||
unsigned long bcr1, mcr;
|
||||
|
||||
bcr1 = inl(SH7751_BCR1);
|
||||
bcr1 = ctrl_inl(SH7751_BCR1);
|
||||
bcr1 |= 0x40080000; /* Enable Bit 19 BREQEN, set PCIC to slave */
|
||||
pci_write_reg(bcr1, SH4_PCIBCR1);
|
||||
|
||||
|
@ -30,7 +30,7 @@ int pci_fixup_pcic(void)
|
|||
pci_write_reg(0xfb900047, SH7751_PCICONF1);
|
||||
pci_write_reg(0xab000001, SH7751_PCICONF4);
|
||||
|
||||
mcr = inl(SH7751_MCR);
|
||||
mcr = ctrl_inl(SH7751_MCR);
|
||||
mcr = (mcr & PCIMCR_MRSET_OFF) & PCIMCR_RFSH_OFF;
|
||||
pci_write_reg(mcr, SH4_PCIMCR);
|
||||
|
||||
|
|
|
@ -83,9 +83,9 @@ static int gapspci_read(struct pci_bus *bus, unsigned int devfn, int where, int
|
|||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
switch (size) {
|
||||
case 1: *val = inb(GAPSPCI_BBA_CONFIG+where); break;
|
||||
case 2: *val = inw(GAPSPCI_BBA_CONFIG+where); break;
|
||||
case 4: *val = inl(GAPSPCI_BBA_CONFIG+where); break;
|
||||
case 1: *val = ctrl_inb(GAPSPCI_BBA_CONFIG+where); break;
|
||||
case 2: *val = ctrl_inw(GAPSPCI_BBA_CONFIG+where); break;
|
||||
case 4: *val = ctrl_inl(GAPSPCI_BBA_CONFIG+where); break;
|
||||
}
|
||||
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
|
@ -97,9 +97,9 @@ static int gapspci_write(struct pci_bus *bus, unsigned int devfn, int where, int
|
|||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
|
||||
switch (size) {
|
||||
case 1: outb(( u8)val, GAPSPCI_BBA_CONFIG+where); break;
|
||||
case 2: outw((u16)val, GAPSPCI_BBA_CONFIG+where); break;
|
||||
case 4: outl((u32)val, GAPSPCI_BBA_CONFIG+where); break;
|
||||
case 1: ctrl_outb(( u8)val, GAPSPCI_BBA_CONFIG+where); break;
|
||||
case 2: ctrl_outw((u16)val, GAPSPCI_BBA_CONFIG+where); break;
|
||||
case 4: ctrl_outl((u32)val, GAPSPCI_BBA_CONFIG+where); break;
|
||||
}
|
||||
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
|
@ -127,36 +127,36 @@ int __init gapspci_init(void)
|
|||
*/
|
||||
|
||||
for (i=0; i<16; i++)
|
||||
idbuf[i] = inb(GAPSPCI_REGS+i);
|
||||
idbuf[i] = ctrl_inb(GAPSPCI_REGS+i);
|
||||
|
||||
if (strncmp(idbuf, "GAPSPCI_BRIDGE_2", 16))
|
||||
return -ENODEV;
|
||||
|
||||
outl(0x5a14a501, GAPSPCI_REGS+0x18);
|
||||
ctrl_outl(0x5a14a501, GAPSPCI_REGS+0x18);
|
||||
|
||||
for (i=0; i<1000000; i++)
|
||||
;
|
||||
|
||||
if (inl(GAPSPCI_REGS+0x18) != 1)
|
||||
if (ctrl_inl(GAPSPCI_REGS+0x18) != 1)
|
||||
return -EINVAL;
|
||||
|
||||
outl(0x01000000, GAPSPCI_REGS+0x20);
|
||||
outl(0x01000000, GAPSPCI_REGS+0x24);
|
||||
ctrl_outl(0x01000000, GAPSPCI_REGS+0x20);
|
||||
ctrl_outl(0x01000000, GAPSPCI_REGS+0x24);
|
||||
|
||||
outl(GAPSPCI_DMA_BASE, GAPSPCI_REGS+0x28);
|
||||
outl(GAPSPCI_DMA_BASE+GAPSPCI_DMA_SIZE, GAPSPCI_REGS+0x2c);
|
||||
ctrl_outl(GAPSPCI_DMA_BASE, GAPSPCI_REGS+0x28);
|
||||
ctrl_outl(GAPSPCI_DMA_BASE+GAPSPCI_DMA_SIZE, GAPSPCI_REGS+0x2c);
|
||||
|
||||
outl(1, GAPSPCI_REGS+0x14);
|
||||
outl(1, GAPSPCI_REGS+0x34);
|
||||
ctrl_outl(1, GAPSPCI_REGS+0x14);
|
||||
ctrl_outl(1, GAPSPCI_REGS+0x34);
|
||||
|
||||
/* Setting Broadband Adapter */
|
||||
outw(0xf900, GAPSPCI_BBA_CONFIG+0x06);
|
||||
outl(0x00000000, GAPSPCI_BBA_CONFIG+0x30);
|
||||
outb(0x00, GAPSPCI_BBA_CONFIG+0x3c);
|
||||
outb(0xf0, GAPSPCI_BBA_CONFIG+0x0d);
|
||||
outw(0x0006, GAPSPCI_BBA_CONFIG+0x04);
|
||||
outl(0x00002001, GAPSPCI_BBA_CONFIG+0x10);
|
||||
outl(0x01000000, GAPSPCI_BBA_CONFIG+0x14);
|
||||
ctrl_outw(0xf900, GAPSPCI_BBA_CONFIG+0x06);
|
||||
ctrl_outl(0x00000000, GAPSPCI_BBA_CONFIG+0x30);
|
||||
ctrl_outb(0x00, GAPSPCI_BBA_CONFIG+0x3c);
|
||||
ctrl_outb(0xf0, GAPSPCI_BBA_CONFIG+0x0d);
|
||||
ctrl_outw(0x0006, GAPSPCI_BBA_CONFIG+0x04);
|
||||
ctrl_outl(0x00002001, GAPSPCI_BBA_CONFIG+0x10);
|
||||
ctrl_outl(0x01000000, GAPSPCI_BBA_CONFIG+0x14);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin)
|
|||
static struct resource sh7751_io_resource = {
|
||||
.name = "SH7751_IO",
|
||||
.start = 0x4000,
|
||||
.end = 0x4000 + SH7751_PCI_IO_SIZE - 1,
|
||||
.end = SH7751_PCI_IO_SIZE - 1,
|
||||
.flags = IORESOURCE_IO
|
||||
};
|
||||
|
||||
|
@ -68,6 +68,7 @@ static struct sh4_pci_address_map sh7751_pci_map = {
|
|||
|
||||
int __init pcibios_init_platform(void)
|
||||
{
|
||||
__set_io_port_base(SH7751_PCI_IO_BASE);
|
||||
return sh7751_pcic_init(&sh7751_pci_map);
|
||||
}
|
||||
|
||||
|
|
|
@ -172,11 +172,11 @@ struct sh4_pci_address_map {
|
|||
|
||||
static inline void pci_write_reg(unsigned long val, unsigned long reg)
|
||||
{
|
||||
outl(val, PCI_REG(reg));
|
||||
ctrl_outl(val, PCI_REG(reg));
|
||||
}
|
||||
|
||||
static inline unsigned long pci_read_reg(unsigned long reg)
|
||||
{
|
||||
return inl(PCI_REG(reg));
|
||||
return ctrl_inl(PCI_REG(reg));
|
||||
}
|
||||
#endif /* __PCI_SH4_H */
|
||||
|
|
|
@ -58,7 +58,7 @@ static int __init __area_sdram_check(unsigned int area)
|
|||
{
|
||||
u32 word;
|
||||
|
||||
word = inl(SH7751_BCR1);
|
||||
word = ctrl_inl(SH7751_BCR1);
|
||||
/* check BCR for SDRAM in area */
|
||||
if (((word >> area) & 1) == 0) {
|
||||
printk("PCI: Area %d is not configured for SDRAM. BCR1=0x%x\n",
|
||||
|
@ -67,7 +67,7 @@ static int __init __area_sdram_check(unsigned int area)
|
|||
}
|
||||
pci_write_reg(word, SH4_PCIBCR1);
|
||||
|
||||
word = (u16)inw(SH7751_BCR2);
|
||||
word = (u16)ctrl_inw(SH7751_BCR2);
|
||||
/* check BCR2 for 32bit SDRAM interface*/
|
||||
if (((word >> (area << 1)) & 0x3) != 0x3) {
|
||||
printk("PCI: Area %d is not 32 bit SDRAM. BCR2=0x%x\n",
|
||||
|
@ -85,9 +85,9 @@ int __init sh7751_pcic_init(struct sh4_pci_address_map *map)
|
|||
u32 word;
|
||||
|
||||
/* Set the BCR's to enable PCI access */
|
||||
reg = inl(SH7751_BCR1);
|
||||
reg = ctrl_inl(SH7751_BCR1);
|
||||
reg |= 0x80000;
|
||||
outl(reg, SH7751_BCR1);
|
||||
ctrl_outl(reg, SH7751_BCR1);
|
||||
|
||||
/* Turn the clocks back on (not done in reset)*/
|
||||
pci_write_reg(0, SH4_PCICLKR);
|
||||
|
@ -179,13 +179,13 @@ int __init sh7751_pcic_init(struct sh4_pci_address_map *map)
|
|||
return 0;
|
||||
|
||||
/* configure the wait control registers */
|
||||
word = inl(SH7751_WCR1);
|
||||
word = ctrl_inl(SH7751_WCR1);
|
||||
pci_write_reg(word, SH4_PCIWCR1);
|
||||
word = inl(SH7751_WCR2);
|
||||
word = ctrl_inl(SH7751_WCR2);
|
||||
pci_write_reg(word, SH4_PCIWCR2);
|
||||
word = inl(SH7751_WCR3);
|
||||
word = ctrl_inl(SH7751_WCR3);
|
||||
pci_write_reg(word, SH4_PCIWCR3);
|
||||
word = inl(SH7751_MCR);
|
||||
word = ctrl_inl(SH7751_MCR);
|
||||
pci_write_reg(word, SH4_PCIMCR);
|
||||
|
||||
/* NOTE: I'm ignoring the PCI error IRQs for now..
|
||||
|
|
|
@ -52,7 +52,7 @@ static int __init sh7780_pci_init(void)
|
|||
|
||||
pr_debug("PCI: Starting intialization.\n");
|
||||
|
||||
outl(0x00000001, SH7780_PCI_VCR2); /* Enable PCIC */
|
||||
ctrl_outl(0x00000001, SH7780_PCI_VCR2); /* Enable PCIC */
|
||||
|
||||
/* check for SH7780/SH7780R hardware */
|
||||
id = pci_read_reg(SH7780_PCIVID);
|
||||
|
|
|
@ -22,5 +22,6 @@ obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
|||
obj-$(CONFIG_PM) += pm.o
|
||||
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
||||
obj-$(CONFIG_BINFMT_ELF) += dump_task.o
|
||||
obj-$(CONFIG_IO_TRAPPED) += io_trapped.o
|
||||
|
||||
EXTRA_CFLAGS += -Werror
|
||||
|
|
|
@ -18,5 +18,6 @@ obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
|||
obj-$(CONFIG_PM) += pm.o
|
||||
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
||||
obj-$(CONFIG_BINFMT_ELF) += dump_task.o
|
||||
obj-$(CONFIG_IO_TRAPPED) += io_trapped.o
|
||||
|
||||
EXTRA_CFLAGS += -Werror
|
||||
|
|
|
@ -6,4 +6,3 @@ obj-y += intc.o
|
|||
obj-$(CONFIG_SUPERH32) += imask.o
|
||||
obj-$(CONFIG_CPU_SH5) += intc-sh5.o
|
||||
obj-$(CONFIG_CPU_HAS_IPR_IRQ) += ipr.o
|
||||
obj-$(CONFIG_CPU_HAS_MASKREG_IRQ) += maskreg.o
|
||||
|
|
|
@ -75,21 +75,6 @@ int intc_evt_to_irq[(0xE20/0x20)+1] = {
|
|||
-1, -1 /* 0xE00 - 0xE20 */
|
||||
};
|
||||
|
||||
/*
|
||||
* Opposite mapper.
|
||||
*/
|
||||
static int IRQ_to_vectorN[NR_INTC_IRQS] = {
|
||||
0x12, 0x15, 0x18, 0x1B, 0x40, 0x41, 0x42, 0x43, /* 0- 7 */
|
||||
-1, -1, -1, -1, 0x50, 0x51, 0x52, 0x53, /* 8-15 */
|
||||
0x54, 0x55, 0x32, 0x33, 0x34, 0x35, 0x36, -1, /* 16-23 */
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, /* 24-31 */
|
||||
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x38, /* 32-39 */
|
||||
0x39, 0x3A, 0x3B, -1, -1, -1, -1, -1, /* 40-47 */
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, /* 48-55 */
|
||||
-1, -1, -1, -1, -1, -1, -1, 0x2B, /* 56-63 */
|
||||
|
||||
};
|
||||
|
||||
static unsigned long intc_virt;
|
||||
|
||||
static unsigned int startup_intc_irq(unsigned int irq);
|
||||
|
@ -176,6 +161,18 @@ void make_intc_irq(unsigned int irq)
|
|||
}
|
||||
|
||||
#if defined(CONFIG_PROC_FS) && defined(CONFIG_SYSCTL)
|
||||
static int IRQ_to_vectorN[NR_INTC_IRQS] = {
|
||||
0x12, 0x15, 0x18, 0x1B, 0x40, 0x41, 0x42, 0x43, /* 0- 7 */
|
||||
-1, -1, -1, -1, 0x50, 0x51, 0x52, 0x53, /* 8-15 */
|
||||
0x54, 0x55, 0x32, 0x33, 0x34, 0x35, 0x36, -1, /* 16-23 */
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, /* 24-31 */
|
||||
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x38, /* 32-39 */
|
||||
0x39, 0x3A, 0x3B, -1, -1, -1, -1, -1, /* 40-47 */
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, /* 48-55 */
|
||||
-1, -1, -1, -1, -1, -1, -1, 0x2B, /* 56-63 */
|
||||
|
||||
};
|
||||
|
||||
int intc_irq_describe(char* p, int irq)
|
||||
{
|
||||
if (irq < NR_INTC_IRQS)
|
||||
|
|
|
@ -1,93 +0,0 @@
|
|||
/*
|
||||
* Interrupt handling for Simple external interrupt mask register
|
||||
*
|
||||
* Copyright (C) 2001 A&D Co., Ltd. <http://www.aandd.co.jp>
|
||||
*
|
||||
* This is for the machine which have single 16 bit register
|
||||
* for masking external IRQ individually.
|
||||
* Each bit of the register is for masking each interrupt.
|
||||
*
|
||||
* This file may be copied or modified under the terms of the GNU
|
||||
* General Public License. See linux/COPYING for more information.
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
/* address of external interrupt mask register */
|
||||
unsigned long irq_mask_register;
|
||||
|
||||
/* forward declaration */
|
||||
static unsigned int startup_maskreg_irq(unsigned int irq);
|
||||
static void shutdown_maskreg_irq(unsigned int irq);
|
||||
static void enable_maskreg_irq(unsigned int irq);
|
||||
static void disable_maskreg_irq(unsigned int irq);
|
||||
static void mask_and_ack_maskreg(unsigned int);
|
||||
static void end_maskreg_irq(unsigned int irq);
|
||||
|
||||
/* hw_interrupt_type */
|
||||
static struct hw_interrupt_type maskreg_irq_type = {
|
||||
.typename = "Mask Register",
|
||||
.startup = startup_maskreg_irq,
|
||||
.shutdown = shutdown_maskreg_irq,
|
||||
.enable = enable_maskreg_irq,
|
||||
.disable = disable_maskreg_irq,
|
||||
.ack = mask_and_ack_maskreg,
|
||||
.end = end_maskreg_irq
|
||||
};
|
||||
|
||||
/* actual implementation */
|
||||
static unsigned int startup_maskreg_irq(unsigned int irq)
|
||||
{
|
||||
enable_maskreg_irq(irq);
|
||||
return 0; /* never anything pending */
|
||||
}
|
||||
|
||||
static void shutdown_maskreg_irq(unsigned int irq)
|
||||
{
|
||||
disable_maskreg_irq(irq);
|
||||
}
|
||||
|
||||
static void disable_maskreg_irq(unsigned int irq)
|
||||
{
|
||||
unsigned short val, mask = 0x01 << irq;
|
||||
|
||||
BUG_ON(!irq_mask_register);
|
||||
|
||||
/* Set "irq"th bit */
|
||||
val = ctrl_inw(irq_mask_register);
|
||||
val |= mask;
|
||||
ctrl_outw(val, irq_mask_register);
|
||||
}
|
||||
|
||||
static void enable_maskreg_irq(unsigned int irq)
|
||||
{
|
||||
unsigned short val, mask = ~(0x01 << irq);
|
||||
|
||||
BUG_ON(!irq_mask_register);
|
||||
|
||||
/* Clear "irq"th bit */
|
||||
val = ctrl_inw(irq_mask_register);
|
||||
val &= mask;
|
||||
ctrl_outw(val, irq_mask_register);
|
||||
}
|
||||
|
||||
static void mask_and_ack_maskreg(unsigned int irq)
|
||||
{
|
||||
disable_maskreg_irq(irq);
|
||||
}
|
||||
|
||||
static void end_maskreg_irq(unsigned int irq)
|
||||
{
|
||||
if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
|
||||
enable_maskreg_irq(irq);
|
||||
}
|
||||
|
||||
void make_maskreg_irq(unsigned int irq)
|
||||
{
|
||||
disable_irq_nosync(irq);
|
||||
irq_desc[irq].handler = &maskreg_irq_type;
|
||||
disable_maskreg_irq(irq);
|
||||
}
|
|
@ -126,12 +126,18 @@ int __init detect_cpu_and_cache_system(void)
|
|||
CPU_HAS_LLSC;
|
||||
break;
|
||||
case 0x3008:
|
||||
if (prr == 0xa0) {
|
||||
if (prr == 0xa0 || prr == 0xa1) {
|
||||
boot_cpu_data.type = CPU_SH7722;
|
||||
boot_cpu_data.icache.ways = 4;
|
||||
boot_cpu_data.dcache.ways = 4;
|
||||
boot_cpu_data.flags |= CPU_HAS_LLSC;
|
||||
}
|
||||
else if (prr == 0x70) {
|
||||
boot_cpu_data.type = CPU_SH7366;
|
||||
boot_cpu_data.icache.ways = 4;
|
||||
boot_cpu_data.dcache.ways = 4;
|
||||
boot_cpu_data.flags |= CPU_HAS_LLSC;
|
||||
}
|
||||
break;
|
||||
case 0x4000: /* 1st cut */
|
||||
case 0x4001: /* 2nd cut */
|
||||
|
|
|
@ -9,6 +9,7 @@ obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o
|
|||
obj-$(CONFIG_CPU_SUBTYPE_SH7785) += setup-sh7785.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7366) += setup-sh7366.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SHX3) += setup-shx3.o
|
||||
|
||||
# SMP setup
|
||||
|
@ -21,6 +22,7 @@ clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o
|
|||
clock-$(CONFIG_CPU_SUBTYPE_SH7785) := clock-sh7785.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7722.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH7366) := clock-sh7722.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SHX3) := clock-shx3.o
|
||||
|
||||
obj-y += $(clock-y)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* arch/sh/kernel/cpu/sh4a/clock-sh7722.c
|
||||
*
|
||||
* SH7722 support for the clock framework
|
||||
* SH7722 & SH7366 support for the clock framework
|
||||
*
|
||||
* Copyright (c) 2006-2007 Nomad Global Solutions Inc
|
||||
* Based on code for sh7343 by Paul Mundt
|
||||
|
@ -417,15 +417,19 @@ static int sh7722_siu_which(struct clk *clk)
|
|||
return 0;
|
||||
if (!strcmp(clk->name, "siu_b_clk"))
|
||||
return 1;
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7722)
|
||||
if (!strcmp(clk->name, "irda_clk"))
|
||||
return 2;
|
||||
#endif
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static unsigned long sh7722_siu_regs[] = {
|
||||
[0] = SCLKACR,
|
||||
[1] = SCLKBCR,
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7722)
|
||||
[2] = IrDACLKCR,
|
||||
#endif
|
||||
};
|
||||
|
||||
static int sh7722_siu_start_stop(struct clk *clk, int enable)
|
||||
|
@ -571,10 +575,12 @@ static struct clk sh7722_siu_b_clock = {
|
|||
.ops = &sh7722_siu_clk_ops,
|
||||
};
|
||||
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7722)
|
||||
static struct clk sh7722_irda_clock = {
|
||||
.name = "irda_clk",
|
||||
.ops = &sh7722_siu_clk_ops,
|
||||
};
|
||||
#endif
|
||||
|
||||
static struct clk sh7722_video_clock = {
|
||||
.name = "video_clk",
|
||||
|
@ -588,7 +594,9 @@ static struct clk *sh7722_clocks[] = {
|
|||
&sh7722_sdram_clock,
|
||||
&sh7722_siu_a_clock,
|
||||
&sh7722_siu_b_clock,
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7722)
|
||||
&sh7722_irda_clock,
|
||||
#endif
|
||||
&sh7722_video_clock,
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,177 @@
|
|||
/*
|
||||
* SH7366 Setup
|
||||
*
|
||||
* Copyright (C) 2008 Renesas Solutions
|
||||
*
|
||||
* Based on linux/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/serial.h>
|
||||
#include <asm/sci.h>
|
||||
|
||||
static struct plat_sci_port sci_platform_data[] = {
|
||||
{
|
||||
.mapbase = 0xffe00000,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.type = PORT_SCIF,
|
||||
.irqs = { 80, 80, 80, 80 },
|
||||
}, {
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device sci_device = {
|
||||
.name = "sh-sci",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = sci_platform_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *sh7366_devices[] __initdata = {
|
||||
&sci_device,
|
||||
};
|
||||
|
||||
static int __init sh7366_devices_setup(void)
|
||||
{
|
||||
return platform_add_devices(sh7366_devices,
|
||||
ARRAY_SIZE(sh7366_devices));
|
||||
}
|
||||
__initcall(sh7366_devices_setup);
|
||||
|
||||
enum {
|
||||
UNUSED=0,
|
||||
|
||||
/* interrupt sources */
|
||||
IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7,
|
||||
ICB,
|
||||
DMAC0, DMAC1, DMAC2, DMAC3,
|
||||
VIO_CEUI, VIO_BEUI, VIO_VEUI, VOU,
|
||||
MFI, VPU, USB,
|
||||
MMC_MMC1I, MMC_MMC2I, MMC_MMC3I,
|
||||
DMAC4, DMAC5, DMAC_DADERR,
|
||||
SCIF, SCIFA1, SCIFA2,
|
||||
DENC, MSIOF,
|
||||
FLCTL_FLSTEI, FLCTL_FLENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I,
|
||||
I2C_ALI, I2C_TACKI, I2C_WAITI, I2C_DTEI,
|
||||
SDHI0, SDHI1, SDHI2, SDHI3,
|
||||
CMT, TSIF, SIU,
|
||||
TMU0, TMU1, TMU2,
|
||||
VEU2, LCDC,
|
||||
|
||||
/* interrupt groups */
|
||||
|
||||
DMAC0123, VIOVOU, MMC, DMAC45, FLCTL, I2C, SDHI,
|
||||
};
|
||||
|
||||
static struct intc_vect vectors[] __initdata = {
|
||||
INTC_VECT(IRQ0, 0x600), INTC_VECT(IRQ1, 0x620),
|
||||
INTC_VECT(IRQ2, 0x640), INTC_VECT(IRQ3, 0x660),
|
||||
INTC_VECT(IRQ4, 0x680), INTC_VECT(IRQ5, 0x6a0),
|
||||
INTC_VECT(IRQ6, 0x6c0), INTC_VECT(IRQ7, 0x6e0),
|
||||
INTC_VECT(ICB, 0x700),
|
||||
INTC_VECT(DMAC0, 0x800), INTC_VECT(DMAC1, 0x820),
|
||||
INTC_VECT(DMAC2, 0x840), INTC_VECT(DMAC3, 0x860),
|
||||
INTC_VECT(VIO_CEUI, 0x880), INTC_VECT(VIO_BEUI, 0x8a0),
|
||||
INTC_VECT(VIO_VEUI, 0x8c0), INTC_VECT(VOU, 0x8e0),
|
||||
INTC_VECT(MFI, 0x900), INTC_VECT(VPU, 0x980), INTC_VECT(USB, 0xa20),
|
||||
INTC_VECT(MMC_MMC1I, 0xb00), INTC_VECT(MMC_MMC2I, 0xb20),
|
||||
INTC_VECT(MMC_MMC3I, 0xb40),
|
||||
INTC_VECT(DMAC4, 0xb80), INTC_VECT(DMAC5, 0xba0),
|
||||
INTC_VECT(DMAC_DADERR, 0xbc0),
|
||||
INTC_VECT(SCIF, 0xc00), INTC_VECT(SCIFA1, 0xc20),
|
||||
INTC_VECT(SCIFA2, 0xc40),
|
||||
INTC_VECT(DENC, 0xc60), INTC_VECT(MSIOF, 0xc80),
|
||||
INTC_VECT(FLCTL_FLSTEI, 0xd80), INTC_VECT(FLCTL_FLENDI, 0xda0),
|
||||
INTC_VECT(FLCTL_FLTREQ0I, 0xdc0), INTC_VECT(FLCTL_FLTREQ1I, 0xde0),
|
||||
INTC_VECT(I2C_ALI, 0xe00), INTC_VECT(I2C_TACKI, 0xe20),
|
||||
INTC_VECT(I2C_WAITI, 0xe40), INTC_VECT(I2C_DTEI, 0xe60),
|
||||
INTC_VECT(SDHI0, 0xe80), INTC_VECT(SDHI1, 0xea0),
|
||||
INTC_VECT(SDHI2, 0xec0), INTC_VECT(SDHI3, 0xee0),
|
||||
INTC_VECT(CMT, 0xf00), INTC_VECT(TSIF, 0xf20),
|
||||
INTC_VECT(SIU, 0xf80),
|
||||
INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420),
|
||||
INTC_VECT(TMU2, 0x440),
|
||||
INTC_VECT(VEU2, 0x580), INTC_VECT(LCDC, 0x580),
|
||||
};
|
||||
|
||||
static struct intc_group groups[] __initdata = {
|
||||
INTC_GROUP(DMAC0123, DMAC0, DMAC1, DMAC2, DMAC3),
|
||||
INTC_GROUP(VIOVOU, VIO_CEUI, VIO_BEUI, VIO_VEUI, VOU),
|
||||
INTC_GROUP(MMC, MMC_MMC1I, MMC_MMC2I, MMC_MMC3I),
|
||||
INTC_GROUP(DMAC45, DMAC4, DMAC5, DMAC_DADERR),
|
||||
INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLENDI,
|
||||
FLCTL_FLTREQ0I, FLCTL_FLTREQ1I),
|
||||
INTC_GROUP(I2C, I2C_ALI, I2C_TACKI, I2C_WAITI, I2C_DTEI),
|
||||
INTC_GROUP(SDHI, SDHI0, SDHI1, SDHI2, SDHI3),
|
||||
};
|
||||
|
||||
static struct intc_mask_reg mask_registers[] __initdata = {
|
||||
{ 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */
|
||||
{ } },
|
||||
{ 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */
|
||||
{ VOU, VIO_VEUI, VIO_BEUI, VIO_CEUI, DMAC3, DMAC2, DMAC1, DMAC0 } },
|
||||
{ 0xa4080088, 0xa40800c8, 8, /* IMR2 / IMCR2 */
|
||||
{ 0, 0, 0, VPU, 0, 0, 0, MFI } },
|
||||
{ 0xa408008c, 0xa40800cc, 8, /* IMR3 / IMCR3 */
|
||||
{ 0, 0, 0, ICB } },
|
||||
{ 0xa4080090, 0xa40800d0, 8, /* IMR4 / IMCR4 */
|
||||
{ 0, TMU2, TMU1, TMU0, VEU2, 0, 0, LCDC } },
|
||||
{ 0xa4080094, 0xa40800d4, 8, /* IMR5 / IMCR5 */
|
||||
{ 0, DMAC_DADERR, DMAC5, DMAC4, DENC, SCIFA2, SCIFA1, SCIF } },
|
||||
{ 0xa4080098, 0xa40800d8, 8, /* IMR6 / IMCR6 */
|
||||
{ 0, 0, 0, 0, 0, 0, 0, MSIOF } },
|
||||
{ 0xa408009c, 0xa40800dc, 8, /* IMR7 / IMCR7 */
|
||||
{ I2C_DTEI, I2C_WAITI, I2C_TACKI, I2C_ALI,
|
||||
FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLENDI, FLCTL_FLSTEI } },
|
||||
{ 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */
|
||||
{ SDHI3, SDHI2, SDHI1, SDHI0, 0, 0, 0, SIU } },
|
||||
{ 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */
|
||||
{ 0, 0, 0, CMT, 0, USB, } },
|
||||
{ 0xa40800a8, 0xa40800e8, 8, /* IMR10 / IMCR10 */
|
||||
{ 0, MMC_MMC3I, MMC_MMC2I, MMC_MMC1I } },
|
||||
{ 0xa40800ac, 0xa40800ec, 8, /* IMR11 / IMCR11 */
|
||||
{ 0, 0, 0, 0, 0, 0, 0, TSIF } },
|
||||
{ 0xa4140044, 0xa4140064, 8, /* INTMSK00 / INTMSKCLR00 */
|
||||
{ IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } },
|
||||
};
|
||||
|
||||
static struct intc_prio_reg prio_registers[] __initdata = {
|
||||
{ 0xa4080000, 0, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2 } },
|
||||
{ 0xa4080004, 0, 16, 4, /* IPRB */ { VEU2, LCDC, ICB } },
|
||||
{ 0xa4080008, 0, 16, 4, /* IPRC */ { } },
|
||||
{ 0xa408000c, 0, 16, 4, /* IPRD */ { } },
|
||||
{ 0xa4080010, 0, 16, 4, /* IPRE */ { DMAC0123, VIOVOU, MFI, VPU } },
|
||||
{ 0xa4080014, 0, 16, 4, /* IPRF */ { 0, DMAC45, USB, CMT } },
|
||||
{ 0xa4080018, 0, 16, 4, /* IPRG */ { SCIF, SCIFA1, SCIFA2, DENC } },
|
||||
{ 0xa408001c, 0, 16, 4, /* IPRH */ { MSIOF, 0, FLCTL, I2C } },
|
||||
{ 0xa4080020, 0, 16, 4, /* IPRI */ { 0, 0, TSIF, } },
|
||||
{ 0xa4080024, 0, 16, 4, /* IPRJ */ { 0, 0, SIU } },
|
||||
{ 0xa4080028, 0, 16, 4, /* IPRK */ { 0, MMC, 0, SDHI } },
|
||||
{ 0xa408002c, 0, 16, 4, /* IPRL */ { } },
|
||||
{ 0xa4140010, 0, 32, 4, /* INTPRI00 */
|
||||
{ IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } },
|
||||
};
|
||||
|
||||
static struct intc_sense_reg sense_registers[] __initdata = {
|
||||
{ 0xa414001c, 16, 2, /* ICR1 */
|
||||
{ IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } },
|
||||
};
|
||||
|
||||
static DECLARE_INTC_DESC(intc_desc, "sh7366", vectors, groups,
|
||||
mask_registers, prio_registers, sense_registers);
|
||||
|
||||
void __init plat_irq_setup(void)
|
||||
{
|
||||
register_intc_controller(&intc_desc);
|
||||
}
|
||||
|
||||
void __init plat_mem_setup(void)
|
||||
{
|
||||
/* TODO: Register Node 1 */
|
||||
}
|
|
@ -20,19 +20,18 @@ int __init detect_cpu_and_cache_system(void)
|
|||
{
|
||||
unsigned long long cir;
|
||||
|
||||
/* Do peeks in real mode to avoid having to set up a mapping for the
|
||||
WPC registers. On SH5-101 cut2, such a mapping would be exposed to
|
||||
an address translation erratum which would make it hard to set up
|
||||
correctly. */
|
||||
/*
|
||||
* Do peeks in real mode to avoid having to set up a mapping for
|
||||
* the WPC registers. On SH5-101 cut2, such a mapping would be
|
||||
* exposed to an address translation erratum which would make it
|
||||
* hard to set up correctly.
|
||||
*/
|
||||
cir = peek_real_address_q(0x0d000008);
|
||||
if ((cir & 0xffff) == 0x5103) {
|
||||
if ((cir & 0xffff) == 0x5103)
|
||||
boot_cpu_data.type = CPU_SH5_103;
|
||||
} else if (((cir >> 32) & 0xffff) == 0x51e2) {
|
||||
else if (((cir >> 32) & 0xffff) == 0x51e2)
|
||||
/* CPU.VCR aliased at CIR address on SH5-101 */
|
||||
boot_cpu_data.type = CPU_SH5_101;
|
||||
} else {
|
||||
boot_cpu_data.type = CPU_SH_NONE;
|
||||
}
|
||||
|
||||
/*
|
||||
* First, setup some sane values for the I-cache.
|
||||
|
@ -40,37 +39,33 @@ int __init detect_cpu_and_cache_system(void)
|
|||
boot_cpu_data.icache.ways = 4;
|
||||
boot_cpu_data.icache.sets = 256;
|
||||
boot_cpu_data.icache.linesz = L1_CACHE_BYTES;
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* FIXME: This can probably be cleaned up a bit as well.. for example,
|
||||
* do we really need the way shift _and_ the way_step_shift ?? Judging
|
||||
* by the existing code, I would guess no.. is there any valid reason
|
||||
* why we need to be tracking this around?
|
||||
*/
|
||||
boot_cpu_data.icache.way_shift = 13;
|
||||
boot_cpu_data.icache.way_incr = (1 << 13);
|
||||
boot_cpu_data.icache.entry_shift = 5;
|
||||
boot_cpu_data.icache.set_shift = 4;
|
||||
boot_cpu_data.icache.way_step_shift = 16;
|
||||
boot_cpu_data.icache.asid_shift = 2;
|
||||
|
||||
/*
|
||||
* way offset = cache size / associativity, so just don't factor in
|
||||
* associativity in the first place..
|
||||
*/
|
||||
boot_cpu_data.icache.way_ofs = boot_cpu_data.icache.sets *
|
||||
boot_cpu_data.icache.linesz;
|
||||
|
||||
boot_cpu_data.icache.asid_mask = 0x3fc;
|
||||
boot_cpu_data.icache.idx_mask = 0x1fe0;
|
||||
boot_cpu_data.icache.epn_mask = 0xffffe000;
|
||||
#endif
|
||||
|
||||
boot_cpu_data.icache.way_size = boot_cpu_data.icache.sets *
|
||||
boot_cpu_data.icache.linesz;
|
||||
boot_cpu_data.icache.entry_mask = 0x1fe0;
|
||||
boot_cpu_data.icache.flags = 0;
|
||||
|
||||
/* A trivial starting point.. */
|
||||
memcpy(&boot_cpu_data.dcache,
|
||||
&boot_cpu_data.icache, sizeof(struct cache_info));
|
||||
/*
|
||||
* Next, setup some sane values for the D-cache.
|
||||
*
|
||||
* On the SH5, these are pretty consistent with the I-cache settings,
|
||||
* so we just copy over the existing definitions.. these can be fixed
|
||||
* up later, especially if we add runtime CPU probing.
|
||||
*
|
||||
* Though in the meantime it saves us from having to duplicate all of
|
||||
* the above definitions..
|
||||
*/
|
||||
boot_cpu_data.dcache = boot_cpu_data.icache;
|
||||
|
||||
/*
|
||||
* Setup any cache-related flags here
|
||||
*/
|
||||
#if defined(CONFIG_CACHE_WRITETHROUGH)
|
||||
set_bit(SH_CACHE_MODE_WT, &(boot_cpu_data.dcache.flags));
|
||||
#elif defined(CONFIG_CACHE_WRITEBACK)
|
||||
set_bit(SH_CACHE_MODE_WB, &(boot_cpu_data.dcache.flags));
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -63,7 +63,13 @@ EXPORT_SYMBOL(memset_io);
|
|||
|
||||
void __iomem *ioport_map(unsigned long port, unsigned int nr)
|
||||
{
|
||||
return sh_mv.mv_ioport_map(port, nr);
|
||||
void __iomem *ret;
|
||||
|
||||
ret = __ioport_map_trapped(port, nr);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return __ioport_map(port, nr);
|
||||
}
|
||||
EXPORT_SYMBOL(ioport_map);
|
||||
|
||||
|
|
|
@ -33,17 +33,17 @@ static inline void delay(void)
|
|||
|
||||
u8 generic_inb(unsigned long port)
|
||||
{
|
||||
return ctrl_inb((unsigned long __force)ioport_map(port, 1));
|
||||
return ctrl_inb((unsigned long __force)__ioport_map(port, 1));
|
||||
}
|
||||
|
||||
u16 generic_inw(unsigned long port)
|
||||
{
|
||||
return ctrl_inw((unsigned long __force)ioport_map(port, 2));
|
||||
return ctrl_inw((unsigned long __force)__ioport_map(port, 2));
|
||||
}
|
||||
|
||||
u32 generic_inl(unsigned long port)
|
||||
{
|
||||
return ctrl_inl((unsigned long __force)ioport_map(port, 4));
|
||||
return ctrl_inl((unsigned long __force)__ioport_map(port, 4));
|
||||
}
|
||||
|
||||
u8 generic_inb_p(unsigned long port)
|
||||
|
@ -81,7 +81,7 @@ void generic_insb(unsigned long port, void *dst, unsigned long count)
|
|||
volatile u8 *port_addr;
|
||||
u8 *buf = dst;
|
||||
|
||||
port_addr = (volatile u8 *)ioport_map(port, 1);
|
||||
port_addr = (volatile u8 *)__ioport_map(port, 1);
|
||||
while (count--)
|
||||
*buf++ = *port_addr;
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ void generic_insw(unsigned long port, void *dst, unsigned long count)
|
|||
volatile u16 *port_addr;
|
||||
u16 *buf = dst;
|
||||
|
||||
port_addr = (volatile u16 *)ioport_map(port, 2);
|
||||
port_addr = (volatile u16 *)__ioport_map(port, 2);
|
||||
while (count--)
|
||||
*buf++ = *port_addr;
|
||||
|
||||
|
@ -103,7 +103,7 @@ void generic_insl(unsigned long port, void *dst, unsigned long count)
|
|||
volatile u32 *port_addr;
|
||||
u32 *buf = dst;
|
||||
|
||||
port_addr = (volatile u32 *)ioport_map(port, 4);
|
||||
port_addr = (volatile u32 *)__ioport_map(port, 4);
|
||||
while (count--)
|
||||
*buf++ = *port_addr;
|
||||
|
||||
|
@ -112,17 +112,17 @@ void generic_insl(unsigned long port, void *dst, unsigned long count)
|
|||
|
||||
void generic_outb(u8 b, unsigned long port)
|
||||
{
|
||||
ctrl_outb(b, (unsigned long __force)ioport_map(port, 1));
|
||||
ctrl_outb(b, (unsigned long __force)__ioport_map(port, 1));
|
||||
}
|
||||
|
||||
void generic_outw(u16 b, unsigned long port)
|
||||
{
|
||||
ctrl_outw(b, (unsigned long __force)ioport_map(port, 2));
|
||||
ctrl_outw(b, (unsigned long __force)__ioport_map(port, 2));
|
||||
}
|
||||
|
||||
void generic_outl(u32 b, unsigned long port)
|
||||
{
|
||||
ctrl_outl(b, (unsigned long __force)ioport_map(port, 4));
|
||||
ctrl_outl(b, (unsigned long __force)__ioport_map(port, 4));
|
||||
}
|
||||
|
||||
void generic_outb_p(u8 b, unsigned long port)
|
||||
|
@ -153,7 +153,7 @@ void generic_outsb(unsigned long port, const void *src, unsigned long count)
|
|||
volatile u8 *port_addr;
|
||||
const u8 *buf = src;
|
||||
|
||||
port_addr = (volatile u8 __force *)ioport_map(port, 1);
|
||||
port_addr = (volatile u8 __force *)__ioport_map(port, 1);
|
||||
|
||||
while (count--)
|
||||
*port_addr = *buf++;
|
||||
|
@ -164,7 +164,7 @@ void generic_outsw(unsigned long port, const void *src, unsigned long count)
|
|||
volatile u16 *port_addr;
|
||||
const u16 *buf = src;
|
||||
|
||||
port_addr = (volatile u16 __force *)ioport_map(port, 2);
|
||||
port_addr = (volatile u16 __force *)__ioport_map(port, 2);
|
||||
|
||||
while (count--)
|
||||
*port_addr = *buf++;
|
||||
|
@ -177,7 +177,7 @@ void generic_outsl(unsigned long port, const void *src, unsigned long count)
|
|||
volatile u32 *port_addr;
|
||||
const u32 *buf = src;
|
||||
|
||||
port_addr = (volatile u32 __force *)ioport_map(port, 4);
|
||||
port_addr = (volatile u32 __force *)__ioport_map(port, 4);
|
||||
while (count--)
|
||||
*port_addr = *buf++;
|
||||
|
||||
|
|
|
@ -0,0 +1,276 @@
|
|||
/*
|
||||
* Trapped io support
|
||||
*
|
||||
* Copyright (C) 2008 Magnus Damm
|
||||
*
|
||||
* Intercept io operations by trapping.
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/module.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/io_trapped.h>
|
||||
|
||||
#define TRAPPED_PAGES_MAX 16
|
||||
|
||||
#ifdef CONFIG_HAS_IOPORT
|
||||
LIST_HEAD(trapped_io);
|
||||
EXPORT_SYMBOL_GPL(trapped_io);
|
||||
#endif
|
||||
#ifdef CONFIG_HAS_IOMEM
|
||||
LIST_HEAD(trapped_mem);
|
||||
EXPORT_SYMBOL_GPL(trapped_mem);
|
||||
#endif
|
||||
static DEFINE_SPINLOCK(trapped_lock);
|
||||
|
||||
int __init register_trapped_io(struct trapped_io *tiop)
|
||||
{
|
||||
struct resource *res;
|
||||
unsigned long len = 0, flags = 0;
|
||||
struct page *pages[TRAPPED_PAGES_MAX];
|
||||
int k, n;
|
||||
|
||||
/* structure must be page aligned */
|
||||
if ((unsigned long)tiop & (PAGE_SIZE - 1))
|
||||
goto bad;
|
||||
|
||||
for (k = 0; k < tiop->num_resources; k++) {
|
||||
res = tiop->resource + k;
|
||||
len += roundup((res->end - res->start) + 1, PAGE_SIZE);
|
||||
flags |= res->flags;
|
||||
}
|
||||
|
||||
/* support IORESOURCE_IO _or_ MEM, not both */
|
||||
if (hweight_long(flags) != 1)
|
||||
goto bad;
|
||||
|
||||
n = len >> PAGE_SHIFT;
|
||||
|
||||
if (n >= TRAPPED_PAGES_MAX)
|
||||
goto bad;
|
||||
|
||||
for (k = 0; k < n; k++)
|
||||
pages[k] = virt_to_page(tiop);
|
||||
|
||||
tiop->virt_base = vmap(pages, n, VM_MAP, PAGE_NONE);
|
||||
if (!tiop->virt_base)
|
||||
goto bad;
|
||||
|
||||
len = 0;
|
||||
for (k = 0; k < tiop->num_resources; k++) {
|
||||
res = tiop->resource + k;
|
||||
pr_info("trapped io 0x%08lx overrides %s 0x%08lx\n",
|
||||
(unsigned long)(tiop->virt_base + len),
|
||||
res->flags & IORESOURCE_IO ? "io" : "mmio",
|
||||
(unsigned long)res->start);
|
||||
len += roundup((res->end - res->start) + 1, PAGE_SIZE);
|
||||
}
|
||||
|
||||
tiop->magic = IO_TRAPPED_MAGIC;
|
||||
INIT_LIST_HEAD(&tiop->list);
|
||||
spin_lock_irq(&trapped_lock);
|
||||
if (flags & IORESOURCE_IO)
|
||||
list_add(&tiop->list, &trapped_io);
|
||||
if (flags & IORESOURCE_MEM)
|
||||
list_add(&tiop->list, &trapped_mem);
|
||||
spin_unlock_irq(&trapped_lock);
|
||||
|
||||
return 0;
|
||||
bad:
|
||||
pr_warning("unable to install trapped io filter\n");
|
||||
return -1;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(register_trapped_io);
|
||||
|
||||
void __iomem *match_trapped_io_handler(struct list_head *list,
|
||||
unsigned long offset,
|
||||
unsigned long size)
|
||||
{
|
||||
unsigned long voffs;
|
||||
struct trapped_io *tiop;
|
||||
struct resource *res;
|
||||
int k, len;
|
||||
|
||||
spin_lock_irq(&trapped_lock);
|
||||
list_for_each_entry(tiop, list, list) {
|
||||
voffs = 0;
|
||||
for (k = 0; k < tiop->num_resources; k++) {
|
||||
res = tiop->resource + k;
|
||||
if (res->start == offset) {
|
||||
spin_unlock_irq(&trapped_lock);
|
||||
return tiop->virt_base + voffs;
|
||||
}
|
||||
|
||||
len = (res->end - res->start) + 1;
|
||||
voffs += roundup(len, PAGE_SIZE);
|
||||
}
|
||||
}
|
||||
spin_unlock_irq(&trapped_lock);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(match_trapped_io_handler);
|
||||
|
||||
static struct trapped_io *lookup_tiop(unsigned long address)
|
||||
{
|
||||
pgd_t *pgd_k;
|
||||
pud_t *pud_k;
|
||||
pmd_t *pmd_k;
|
||||
pte_t *pte_k;
|
||||
pte_t entry;
|
||||
|
||||
pgd_k = swapper_pg_dir + pgd_index(address);
|
||||
if (!pgd_present(*pgd_k))
|
||||
return NULL;
|
||||
|
||||
pud_k = pud_offset(pgd_k, address);
|
||||
if (!pud_present(*pud_k))
|
||||
return NULL;
|
||||
|
||||
pmd_k = pmd_offset(pud_k, address);
|
||||
if (!pmd_present(*pmd_k))
|
||||
return NULL;
|
||||
|
||||
pte_k = pte_offset_kernel(pmd_k, address);
|
||||
entry = *pte_k;
|
||||
|
||||
return pfn_to_kaddr(pte_pfn(entry));
|
||||
}
|
||||
|
||||
static unsigned long lookup_address(struct trapped_io *tiop,
|
||||
unsigned long address)
|
||||
{
|
||||
struct resource *res;
|
||||
unsigned long vaddr = (unsigned long)tiop->virt_base;
|
||||
unsigned long len;
|
||||
int k;
|
||||
|
||||
for (k = 0; k < tiop->num_resources; k++) {
|
||||
res = tiop->resource + k;
|
||||
len = roundup((res->end - res->start) + 1, PAGE_SIZE);
|
||||
if (address < (vaddr + len))
|
||||
return res->start + (address - vaddr);
|
||||
vaddr += len;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned long long copy_word(unsigned long src_addr, int src_len,
|
||||
unsigned long dst_addr, int dst_len)
|
||||
{
|
||||
unsigned long long tmp = 0;
|
||||
|
||||
switch (src_len) {
|
||||
case 1:
|
||||
tmp = ctrl_inb(src_addr);
|
||||
break;
|
||||
case 2:
|
||||
tmp = ctrl_inw(src_addr);
|
||||
break;
|
||||
case 4:
|
||||
tmp = ctrl_inl(src_addr);
|
||||
break;
|
||||
case 8:
|
||||
tmp = ctrl_inq(src_addr);
|
||||
break;
|
||||
}
|
||||
|
||||
switch (dst_len) {
|
||||
case 1:
|
||||
ctrl_outb(tmp, dst_addr);
|
||||
break;
|
||||
case 2:
|
||||
ctrl_outw(tmp, dst_addr);
|
||||
break;
|
||||
case 4:
|
||||
ctrl_outl(tmp, dst_addr);
|
||||
break;
|
||||
case 8:
|
||||
ctrl_outq(tmp, dst_addr);
|
||||
break;
|
||||
}
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
static unsigned long from_device(void *dst, const void *src, unsigned long cnt)
|
||||
{
|
||||
struct trapped_io *tiop;
|
||||
unsigned long src_addr = (unsigned long)src;
|
||||
unsigned long long tmp;
|
||||
|
||||
pr_debug("trapped io read 0x%08lx (%ld)\n", src_addr, cnt);
|
||||
tiop = lookup_tiop(src_addr);
|
||||
WARN_ON(!tiop || (tiop->magic != IO_TRAPPED_MAGIC));
|
||||
|
||||
src_addr = lookup_address(tiop, src_addr);
|
||||
if (!src_addr)
|
||||
return cnt;
|
||||
|
||||
tmp = copy_word(src_addr,
|
||||
max_t(unsigned long, cnt,
|
||||
(tiop->minimum_bus_width / 8)),
|
||||
(unsigned long)dst, cnt);
|
||||
|
||||
pr_debug("trapped io read 0x%08lx -> 0x%08llx\n", src_addr, tmp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned long to_device(void *dst, const void *src, unsigned long cnt)
|
||||
{
|
||||
struct trapped_io *tiop;
|
||||
unsigned long dst_addr = (unsigned long)dst;
|
||||
unsigned long long tmp;
|
||||
|
||||
pr_debug("trapped io write 0x%08lx (%ld)\n", dst_addr, cnt);
|
||||
tiop = lookup_tiop(dst_addr);
|
||||
WARN_ON(!tiop || (tiop->magic != IO_TRAPPED_MAGIC));
|
||||
|
||||
dst_addr = lookup_address(tiop, dst_addr);
|
||||
if (!dst_addr)
|
||||
return cnt;
|
||||
|
||||
tmp = copy_word((unsigned long)src, cnt,
|
||||
dst_addr, max_t(unsigned long, cnt,
|
||||
(tiop->minimum_bus_width / 8)));
|
||||
|
||||
pr_debug("trapped io write 0x%08lx -> 0x%08llx\n", dst_addr, tmp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct mem_access trapped_io_access = {
|
||||
from_device,
|
||||
to_device,
|
||||
};
|
||||
|
||||
int handle_trapped_io(struct pt_regs *regs, unsigned long address)
|
||||
{
|
||||
mm_segment_t oldfs;
|
||||
opcode_t instruction;
|
||||
int tmp;
|
||||
|
||||
if (!lookup_tiop(address))
|
||||
return 0;
|
||||
|
||||
WARN_ON(user_mode(regs));
|
||||
|
||||
oldfs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
if (copy_from_user(&instruction, (void *)(regs->pc),
|
||||
sizeof(instruction))) {
|
||||
set_fs(oldfs);
|
||||
return 0;
|
||||
}
|
||||
|
||||
tmp = handle_unaligned_access(instruction, regs, &trapped_io_access);
|
||||
set_fs(oldfs);
|
||||
return tmp == 0;
|
||||
}
|
|
@ -248,9 +248,6 @@ asmlinkage void do_softirq(void)
|
|||
|
||||
void __init init_IRQ(void)
|
||||
{
|
||||
#ifdef CONFIG_CPU_HAS_PINT_IRQ
|
||||
init_IRQ_pint();
|
||||
#endif
|
||||
plat_irq_setup();
|
||||
|
||||
/* Perform the machine specific initialisation */
|
||||
|
|
|
@ -623,6 +623,7 @@ extern void interruptible_sleep_on(wait_queue_head_t *q);
|
|||
|
||||
#define mid_sched ((unsigned long) interruptible_sleep_on)
|
||||
|
||||
#ifdef CONFIG_FRAME_POINTER
|
||||
static int in_sh64_switch_to(unsigned long pc)
|
||||
{
|
||||
extern char __sh64_switch_to_end;
|
||||
|
@ -631,12 +632,10 @@ static int in_sh64_switch_to(unsigned long pc)
|
|||
return (pc >= (unsigned long) sh64_switch_to) &&
|
||||
(pc < (unsigned long) &__sh64_switch_to_end);
|
||||
}
|
||||
#endif
|
||||
|
||||
unsigned long get_wchan(struct task_struct *p)
|
||||
{
|
||||
unsigned long schedule_fp;
|
||||
unsigned long sh64_switch_to_fp;
|
||||
unsigned long schedule_caller_pc;
|
||||
unsigned long pc;
|
||||
|
||||
if (!p || p == current || p->state == TASK_RUNNING)
|
||||
|
@ -649,6 +648,10 @@ unsigned long get_wchan(struct task_struct *p)
|
|||
|
||||
#ifdef CONFIG_FRAME_POINTER
|
||||
if (in_sh64_switch_to(pc)) {
|
||||
unsigned long schedule_fp;
|
||||
unsigned long sh64_switch_to_fp;
|
||||
unsigned long schedule_caller_pc;
|
||||
|
||||
sh64_switch_to_fp = (long) p->thread.sp;
|
||||
/* r14 is saved at offset 4 in the sh64_switch_to frame */
|
||||
schedule_fp = *(unsigned long *) (long)(sh64_switch_to_fp + 4);
|
||||
|
|
|
@ -220,7 +220,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
dp = ((unsigned long) child) + THREAD_SIZE -
|
||||
sizeof(struct pt_dspregs);
|
||||
if (*((int *) (dp - 4)) == SR_FD) {
|
||||
copy_to_user(addr, (void *) dp,
|
||||
copy_to_user((void *)addr, (void *) dp,
|
||||
sizeof(struct pt_dspregs));
|
||||
ret = 0;
|
||||
}
|
||||
|
@ -234,7 +234,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
dp = ((unsigned long) child) + THREAD_SIZE -
|
||||
sizeof(struct pt_dspregs);
|
||||
if (*((int *) (dp - 4)) == SR_FD) {
|
||||
copy_from_user((void *) dp, addr,
|
||||
copy_from_user((void *) dp, (void *)addr,
|
||||
sizeof(struct pt_dspregs));
|
||||
ret = 0;
|
||||
}
|
||||
|
|
|
@ -333,7 +333,7 @@ static const char *cpu_name[] = {
|
|||
[CPU_SH7343] = "SH7343", [CPU_SH7785] = "SH7785",
|
||||
[CPU_SH7722] = "SH7722", [CPU_SHX3] = "SH-X3",
|
||||
[CPU_SH5_101] = "SH5-101", [CPU_SH5_103] = "SH5-103",
|
||||
[CPU_SH_NONE] = "Unknown"
|
||||
[CPU_SH7366] = "SH7366", [CPU_SH_NONE] = "Unknown"
|
||||
};
|
||||
|
||||
const char *get_cpu_subtype(struct sh_cpuinfo *c)
|
||||
|
|
|
@ -338,6 +338,8 @@ ENTRY(sys_call_table)
|
|||
.long sys_epoll_pwait
|
||||
.long sys_utimensat /* 320 */
|
||||
.long sys_signalfd
|
||||
.long sys_ni_syscall
|
||||
.long sys_timerfd_create
|
||||
.long sys_eventfd
|
||||
.long sys_fallocate
|
||||
.long sys_timerfd_settime /* 325 */
|
||||
.long sys_timerfd_gettime
|
||||
|
|
|
@ -376,6 +376,8 @@ sys_call_table:
|
|||
.long sys_epoll_pwait
|
||||
.long sys_utimensat
|
||||
.long sys_signalfd
|
||||
.long sys_ni_syscall /* 350 */
|
||||
.long sys_timerfd_create /* 350 */
|
||||
.long sys_eventfd
|
||||
.long sys_fallocate
|
||||
.long sys_timerfd_settime
|
||||
.long sys_timerfd_gettime
|
||||
|
|
|
@ -120,10 +120,6 @@ static long last_rtc_update;
|
|||
*/
|
||||
void handle_timer_tick(void)
|
||||
{
|
||||
do_timer(1);
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
if (current->pid)
|
||||
profile_tick(CPU_PROFILING);
|
||||
|
||||
|
@ -132,6 +128,16 @@ void handle_timer_tick(void)
|
|||
sh_mv.mv_heartbeat();
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Here we are in the timer irq handler. We just have irqs locally
|
||||
* disabled but we don't know if the timer_bh is running on the other
|
||||
* CPU. We need to avoid to SMP race with it. NOTE: we don' t need
|
||||
* the irq version of write_lock because as just said we have irq
|
||||
* locally disabled. -arca
|
||||
*/
|
||||
write_seqlock(&xtime_lock);
|
||||
do_timer(1);
|
||||
|
||||
/*
|
||||
* If we have an externally synchronized Linux clock, then update
|
||||
* RTC clock accordingly every ~11 minutes. Set_rtc_mmss() has to be
|
||||
|
@ -147,6 +153,11 @@ void handle_timer_tick(void)
|
|||
/* do it again in 60s */
|
||||
last_rtc_update = xtime.tv_sec - 600;
|
||||
}
|
||||
write_sequnlock(&xtime_lock);
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
}
|
||||
#endif /* !CONFIG_GENERIC_CLOCKEVENTS */
|
||||
|
||||
|
|
|
@ -229,15 +229,22 @@ static long last_rtc_update;
|
|||
static inline void do_timer_interrupt(void)
|
||||
{
|
||||
unsigned long long current_ctc;
|
||||
|
||||
if (current->pid)
|
||||
profile_tick(CPU_PROFILING);
|
||||
|
||||
/*
|
||||
* Here we are in the timer irq handler. We just have irqs locally
|
||||
* disabled but we don't know if the timer_bh is running on the other
|
||||
* CPU. We need to avoid to SMP race with it. NOTE: we don' t need
|
||||
* the irq version of write_lock because as just said we have irq
|
||||
* locally disabled. -arca
|
||||
*/
|
||||
write_lock(&xtime_lock);
|
||||
asm ("getcon cr62, %0" : "=r" (current_ctc));
|
||||
ctc_last_interrupt = (unsigned long) current_ctc;
|
||||
|
||||
do_timer(1);
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
if (current->pid)
|
||||
profile_tick(CPU_PROFILING);
|
||||
|
||||
#ifdef CONFIG_HEARTBEAT
|
||||
if (sh_mv.mv_heartbeat != NULL)
|
||||
|
@ -259,6 +266,11 @@ static inline void do_timer_interrupt(void)
|
|||
/* do it again in 60 s */
|
||||
last_rtc_update = xtime.tv_sec - 600;
|
||||
}
|
||||
write_unlock(&xtime_lock);
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -275,16 +287,7 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)
|
|||
timer_status &= ~0x100;
|
||||
ctrl_outw(timer_status, TMU0_TCR);
|
||||
|
||||
/*
|
||||
* Here we are in the timer irq handler. We just have irqs locally
|
||||
* disabled but we don't know if the timer_bh is running on the other
|
||||
* CPU. We need to avoid to SMP race with it. NOTE: we don' t need
|
||||
* the irq version of write_lock because as just said we have irq
|
||||
* locally disabled. -arca
|
||||
*/
|
||||
write_lock(&xtime_lock);
|
||||
do_timer_interrupt();
|
||||
write_unlock(&xtime_lock);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
|
|
@ -154,7 +154,6 @@ static int mtu2_timer_stop(void)
|
|||
|
||||
static int mtu2_timer_init(void)
|
||||
{
|
||||
u8 tmp;
|
||||
unsigned long interval;
|
||||
|
||||
setup_irq(CONFIG_SH_TIMER_IRQ, &mtu2_irq);
|
||||
|
|
|
@ -147,6 +147,36 @@ static int die_if_no_fixup(const char * str, struct pt_regs * regs, long err)
|
|||
return -EFAULT;
|
||||
}
|
||||
|
||||
static inline void sign_extend(unsigned int count, unsigned char *dst)
|
||||
{
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
if ((count == 1) && dst[0] & 0x80) {
|
||||
dst[1] = 0xff;
|
||||
dst[2] = 0xff;
|
||||
dst[3] = 0xff;
|
||||
}
|
||||
if ((count == 2) && dst[1] & 0x80) {
|
||||
dst[2] = 0xff;
|
||||
dst[3] = 0xff;
|
||||
}
|
||||
#else
|
||||
if ((count == 1) && dst[3] & 0x80) {
|
||||
dst[2] = 0xff;
|
||||
dst[1] = 0xff;
|
||||
dst[0] = 0xff;
|
||||
}
|
||||
if ((count == 2) && dst[2] & 0x80) {
|
||||
dst[1] = 0xff;
|
||||
dst[0] = 0xff;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct mem_access user_mem_access = {
|
||||
copy_from_user,
|
||||
copy_to_user,
|
||||
};
|
||||
|
||||
/*
|
||||
* handle an instruction that does an unaligned memory access by emulating the
|
||||
* desired behaviour
|
||||
|
@ -154,7 +184,8 @@ static int die_if_no_fixup(const char * str, struct pt_regs * regs, long err)
|
|||
* (if that instruction is in a branch delay slot)
|
||||
* - return 0 if emulation okay, -EFAULT on existential error
|
||||
*/
|
||||
static int handle_unaligned_ins(u16 instruction, struct pt_regs *regs)
|
||||
static int handle_unaligned_ins(opcode_t instruction, struct pt_regs *regs,
|
||||
struct mem_access *ma)
|
||||
{
|
||||
int ret, index, count;
|
||||
unsigned long *rm, *rn;
|
||||
|
@ -178,25 +209,13 @@ static int handle_unaligned_ins(u16 instruction, struct pt_regs *regs)
|
|||
dst = (unsigned char*) rn;
|
||||
*(unsigned long*)dst = 0;
|
||||
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
if (copy_from_user(dst, src, count))
|
||||
goto fetch_fault;
|
||||
|
||||
if ((count == 2) && dst[1] & 0x80) {
|
||||
dst[2] = 0xff;
|
||||
dst[3] = 0xff;
|
||||
}
|
||||
#else
|
||||
#if !defined(__LITTLE_ENDIAN__)
|
||||
dst += 4-count;
|
||||
|
||||
if (__copy_user(dst, src, count))
|
||||
#endif
|
||||
if (ma->from(dst, src, count))
|
||||
goto fetch_fault;
|
||||
|
||||
if ((count == 2) && dst[2] & 0x80) {
|
||||
dst[0] = 0xff;
|
||||
dst[1] = 0xff;
|
||||
}
|
||||
#endif
|
||||
sign_extend(count, dst);
|
||||
} else {
|
||||
/* to memory */
|
||||
src = (unsigned char*) rm;
|
||||
|
@ -206,7 +225,7 @@ static int handle_unaligned_ins(u16 instruction, struct pt_regs *regs)
|
|||
dst = (unsigned char*) *rn;
|
||||
dst += regs->regs[0];
|
||||
|
||||
if (copy_to_user(dst, src, count))
|
||||
if (ma->to(dst, src, count))
|
||||
goto fetch_fault;
|
||||
}
|
||||
ret = 0;
|
||||
|
@ -217,7 +236,7 @@ static int handle_unaligned_ins(u16 instruction, struct pt_regs *regs)
|
|||
dst = (unsigned char*) *rn;
|
||||
dst += (instruction&0x000F)<<2;
|
||||
|
||||
if (copy_to_user(dst,src,4))
|
||||
if (ma->to(dst, src, 4))
|
||||
goto fetch_fault;
|
||||
ret = 0;
|
||||
break;
|
||||
|
@ -230,7 +249,7 @@ static int handle_unaligned_ins(u16 instruction, struct pt_regs *regs)
|
|||
#if !defined(__LITTLE_ENDIAN__)
|
||||
src += 4-count;
|
||||
#endif
|
||||
if (copy_to_user(dst, src, count))
|
||||
if (ma->to(dst, src, count))
|
||||
goto fetch_fault;
|
||||
ret = 0;
|
||||
break;
|
||||
|
@ -241,7 +260,7 @@ static int handle_unaligned_ins(u16 instruction, struct pt_regs *regs)
|
|||
dst = (unsigned char*) rn;
|
||||
*(unsigned long*)dst = 0;
|
||||
|
||||
if (copy_from_user(dst,src,4))
|
||||
if (ma->from(dst, src, 4))
|
||||
goto fetch_fault;
|
||||
ret = 0;
|
||||
break;
|
||||
|
@ -253,25 +272,12 @@ static int handle_unaligned_ins(u16 instruction, struct pt_regs *regs)
|
|||
dst = (unsigned char*) rn;
|
||||
*(unsigned long*)dst = 0;
|
||||
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
if (copy_from_user(dst, src, count))
|
||||
goto fetch_fault;
|
||||
|
||||
if ((count == 2) && dst[1] & 0x80) {
|
||||
dst[2] = 0xff;
|
||||
dst[3] = 0xff;
|
||||
}
|
||||
#else
|
||||
#if !defined(__LITTLE_ENDIAN__)
|
||||
dst += 4-count;
|
||||
|
||||
if (copy_from_user(dst, src, count))
|
||||
goto fetch_fault;
|
||||
|
||||
if ((count == 2) && dst[2] & 0x80) {
|
||||
dst[0] = 0xff;
|
||||
dst[1] = 0xff;
|
||||
}
|
||||
#endif
|
||||
if (ma->from(dst, src, count))
|
||||
goto fetch_fault;
|
||||
sign_extend(count, dst);
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
|
@ -285,7 +291,7 @@ static int handle_unaligned_ins(u16 instruction, struct pt_regs *regs)
|
|||
dst = (unsigned char*) *rm; /* called Rn in the spec */
|
||||
dst += (instruction&0x000F)<<1;
|
||||
|
||||
if (copy_to_user(dst, src, 2))
|
||||
if (ma->to(dst, src, 2))
|
||||
goto fetch_fault;
|
||||
ret = 0;
|
||||
break;
|
||||
|
@ -299,21 +305,9 @@ static int handle_unaligned_ins(u16 instruction, struct pt_regs *regs)
|
|||
#if !defined(__LITTLE_ENDIAN__)
|
||||
dst += 2;
|
||||
#endif
|
||||
|
||||
if (copy_from_user(dst, src, 2))
|
||||
if (ma->from(dst, src, 2))
|
||||
goto fetch_fault;
|
||||
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
if (dst[1] & 0x80) {
|
||||
dst[2] = 0xff;
|
||||
dst[3] = 0xff;
|
||||
}
|
||||
#else
|
||||
if (dst[2] & 0x80) {
|
||||
dst[0] = 0xff;
|
||||
dst[1] = 0xff;
|
||||
}
|
||||
#endif
|
||||
sign_extend(2, dst);
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
|
@ -332,11 +326,14 @@ static int handle_unaligned_ins(u16 instruction, struct pt_regs *regs)
|
|||
* emulate the instruction in the delay slot
|
||||
* - fetches the instruction from PC+2
|
||||
*/
|
||||
static inline int handle_unaligned_delayslot(struct pt_regs *regs)
|
||||
static inline int handle_delayslot(struct pt_regs *regs,
|
||||
opcode_t old_instruction,
|
||||
struct mem_access *ma)
|
||||
{
|
||||
u16 instruction;
|
||||
opcode_t instruction;
|
||||
void *addr = (void *)(regs->pc + instruction_size(old_instruction));
|
||||
|
||||
if (copy_from_user(&instruction, (u16 *)(regs->pc+2), 2)) {
|
||||
if (copy_from_user(&instruction, addr, sizeof(instruction))) {
|
||||
/* the instruction-fetch faulted */
|
||||
if (user_mode(regs))
|
||||
return -EFAULT;
|
||||
|
@ -346,7 +343,7 @@ static inline int handle_unaligned_delayslot(struct pt_regs *regs)
|
|||
regs, 0);
|
||||
}
|
||||
|
||||
return handle_unaligned_ins(instruction,regs);
|
||||
return handle_unaligned_ins(instruction, regs, ma);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -369,10 +366,11 @@ static inline int handle_unaligned_delayslot(struct pt_regs *regs)
|
|||
* XXX: SH-2A needs this too, but it needs an overhaul thanks to mixed 32-bit
|
||||
* opcodes..
|
||||
*/
|
||||
#ifndef CONFIG_CPU_SH2A
|
||||
|
||||
static int handle_unaligned_notify_count = 10;
|
||||
|
||||
static int handle_unaligned_access(u16 instruction, struct pt_regs *regs)
|
||||
int handle_unaligned_access(opcode_t instruction, struct pt_regs *regs,
|
||||
struct mem_access *ma)
|
||||
{
|
||||
u_int rm;
|
||||
int ret, index;
|
||||
|
@ -387,7 +385,7 @@ static int handle_unaligned_access(u16 instruction, struct pt_regs *regs)
|
|||
printk(KERN_NOTICE "Fixing up unaligned userspace access "
|
||||
"in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n",
|
||||
current->comm, task_pid_nr(current),
|
||||
(u16 *)regs->pc, instruction);
|
||||
(void *)regs->pc, instruction);
|
||||
}
|
||||
|
||||
ret = -EFAULT;
|
||||
|
@ -395,19 +393,19 @@ static int handle_unaligned_access(u16 instruction, struct pt_regs *regs)
|
|||
case 0x0000:
|
||||
if (instruction==0x000B) {
|
||||
/* rts */
|
||||
ret = handle_unaligned_delayslot(regs);
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
if (ret==0)
|
||||
regs->pc = regs->pr;
|
||||
}
|
||||
else if ((instruction&0x00FF)==0x0023) {
|
||||
/* braf @Rm */
|
||||
ret = handle_unaligned_delayslot(regs);
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
if (ret==0)
|
||||
regs->pc += rm + 4;
|
||||
}
|
||||
else if ((instruction&0x00FF)==0x0003) {
|
||||
/* bsrf @Rm */
|
||||
ret = handle_unaligned_delayslot(regs);
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
if (ret==0) {
|
||||
regs->pr = regs->pc + 4;
|
||||
regs->pc += rm + 4;
|
||||
|
@ -428,13 +426,13 @@ static int handle_unaligned_access(u16 instruction, struct pt_regs *regs)
|
|||
case 0x4000:
|
||||
if ((instruction&0x00FF)==0x002B) {
|
||||
/* jmp @Rm */
|
||||
ret = handle_unaligned_delayslot(regs);
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
if (ret==0)
|
||||
regs->pc = rm;
|
||||
}
|
||||
else if ((instruction&0x00FF)==0x000B) {
|
||||
/* jsr @Rm */
|
||||
ret = handle_unaligned_delayslot(regs);
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
if (ret==0) {
|
||||
regs->pr = regs->pc + 4;
|
||||
regs->pc = rm;
|
||||
|
@ -461,7 +459,7 @@ static int handle_unaligned_access(u16 instruction, struct pt_regs *regs)
|
|||
case 0x0B00: /* bf lab - no delayslot*/
|
||||
break;
|
||||
case 0x0F00: /* bf/s lab */
|
||||
ret = handle_unaligned_delayslot(regs);
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
if (ret==0) {
|
||||
#if defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB)
|
||||
if ((regs->sr & 0x00000001) != 0)
|
||||
|
@ -474,7 +472,7 @@ static int handle_unaligned_access(u16 instruction, struct pt_regs *regs)
|
|||
case 0x0900: /* bt lab - no delayslot */
|
||||
break;
|
||||
case 0x0D00: /* bt/s lab */
|
||||
ret = handle_unaligned_delayslot(regs);
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
if (ret==0) {
|
||||
#if defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB)
|
||||
if ((regs->sr & 0x00000001) == 0)
|
||||
|
@ -488,13 +486,13 @@ static int handle_unaligned_access(u16 instruction, struct pt_regs *regs)
|
|||
break;
|
||||
|
||||
case 0xA000: /* bra label */
|
||||
ret = handle_unaligned_delayslot(regs);
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
if (ret==0)
|
||||
regs->pc += SH_PC_12BIT_OFFSET(instruction);
|
||||
break;
|
||||
|
||||
case 0xB000: /* bsr label */
|
||||
ret = handle_unaligned_delayslot(regs);
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
if (ret==0) {
|
||||
regs->pr = regs->pc + 4;
|
||||
regs->pc += SH_PC_12BIT_OFFSET(instruction);
|
||||
|
@ -505,12 +503,11 @@ static int handle_unaligned_access(u16 instruction, struct pt_regs *regs)
|
|||
|
||||
/* handle non-delay-slot instruction */
|
||||
simple:
|
||||
ret = handle_unaligned_ins(instruction,regs);
|
||||
ret = handle_unaligned_ins(instruction, regs, ma);
|
||||
if (ret==0)
|
||||
regs->pc += instruction_size(instruction);
|
||||
return ret;
|
||||
}
|
||||
#endif /* CONFIG_CPU_SH2A */
|
||||
|
||||
#ifdef CONFIG_CPU_HAS_SR_RB
|
||||
#define lookup_exception_vector(x) \
|
||||
|
@ -538,10 +535,8 @@ asmlinkage void do_address_error(struct pt_regs *regs,
|
|||
unsigned long error_code = 0;
|
||||
mm_segment_t oldfs;
|
||||
siginfo_t info;
|
||||
#ifndef CONFIG_CPU_SH2A
|
||||
u16 instruction;
|
||||
opcode_t instruction;
|
||||
int tmp;
|
||||
#endif
|
||||
|
||||
/* Intentional ifdef */
|
||||
#ifdef CONFIG_CPU_HAS_SR_RB
|
||||
|
@ -561,9 +556,9 @@ asmlinkage void do_address_error(struct pt_regs *regs,
|
|||
goto uspace_segv;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_CPU_SH2A
|
||||
set_fs(USER_DS);
|
||||
if (copy_from_user(&instruction, (u16 *)(regs->pc), 2)) {
|
||||
if (copy_from_user(&instruction, (void *)(regs->pc),
|
||||
sizeof(instruction))) {
|
||||
/* Argh. Fault on the instruction itself.
|
||||
This should never happen non-SMP
|
||||
*/
|
||||
|
@ -571,13 +566,12 @@ asmlinkage void do_address_error(struct pt_regs *regs,
|
|||
goto uspace_segv;
|
||||
}
|
||||
|
||||
tmp = handle_unaligned_access(instruction, regs);
|
||||
tmp = handle_unaligned_access(instruction, regs,
|
||||
&user_mem_access);
|
||||
set_fs(oldfs);
|
||||
|
||||
if (tmp==0)
|
||||
return; /* sorted */
|
||||
#endif
|
||||
|
||||
uspace_segv:
|
||||
printk(KERN_NOTICE "Sending SIGBUS to \"%s\" due to unaligned "
|
||||
"access (PC %lx PR %lx)\n", current->comm, regs->pc,
|
||||
|
@ -592,9 +586,9 @@ uspace_segv:
|
|||
if (regs->pc & 1)
|
||||
die("unaligned program counter", regs, error_code);
|
||||
|
||||
#ifndef CONFIG_CPU_SH2A
|
||||
set_fs(KERNEL_DS);
|
||||
if (copy_from_user(&instruction, (u16 *)(regs->pc), 2)) {
|
||||
if (copy_from_user(&instruction, (void *)(regs->pc),
|
||||
sizeof(instruction))) {
|
||||
/* Argh. Fault on the instruction itself.
|
||||
This should never happen non-SMP
|
||||
*/
|
||||
|
@ -602,14 +596,8 @@ uspace_segv:
|
|||
die("insn faulting in do_address_error", regs, 0);
|
||||
}
|
||||
|
||||
handle_unaligned_access(instruction, regs);
|
||||
handle_unaligned_access(instruction, regs, &user_mem_access);
|
||||
set_fs(oldfs);
|
||||
#else
|
||||
printk(KERN_NOTICE "Killing process \"%s\" due to unaligned "
|
||||
"access\n", current->comm);
|
||||
|
||||
force_sig(SIGSEGV, current);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -630,7 +630,7 @@ static int misaligned_fpu_load(struct pt_regs *regs,
|
|||
current->thread.fpu.hard.fp_regs[destreg] = buflo;
|
||||
current->thread.fpu.hard.fp_regs[destreg+1] = bufhi;
|
||||
} else {
|
||||
#if defined(CONFIG_LITTLE_ENDIAN)
|
||||
#if defined(CONFIG_CPU_LITTLE_ENDIAN)
|
||||
current->thread.fpu.hard.fp_regs[destreg] = bufhi;
|
||||
current->thread.fpu.hard.fp_regs[destreg+1] = buflo;
|
||||
#else
|
||||
|
@ -700,7 +700,7 @@ static int misaligned_fpu_store(struct pt_regs *regs,
|
|||
buflo = current->thread.fpu.hard.fp_regs[srcreg];
|
||||
bufhi = current->thread.fpu.hard.fp_regs[srcreg+1];
|
||||
} else {
|
||||
#if defined(CONFIG_LITTLE_ENDIAN)
|
||||
#if defined(CONFIG_CPU_LITTLE_ENDIAN)
|
||||
bufhi = current->thread.fpu.hard.fp_regs[srcreg];
|
||||
buflo = current->thread.fpu.hard.fp_regs[srcreg+1];
|
||||
#else
|
||||
|
|
|
@ -51,7 +51,7 @@ SECTIONS
|
|||
KPROBES_TEXT
|
||||
*(.fixup)
|
||||
*(.gnu.warning)
|
||||
#ifdef CONFIG_LITTLE_ENDIAN
|
||||
#ifdef CONFIG_CPU_LITTLE_ENDIAN
|
||||
} = 0x6ff0fff0
|
||||
#else
|
||||
} = 0xf0fff06f
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -26,7 +26,7 @@ struct dma_coherent_mem {
|
|||
void *dma_alloc_coherent(struct device *dev, size_t size,
|
||||
dma_addr_t *dma_handle, gfp_t gfp)
|
||||
{
|
||||
void *ret;
|
||||
void *ret, *ret_nocache;
|
||||
struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL;
|
||||
int order = get_order(size);
|
||||
|
||||
|
@ -44,17 +44,24 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
|
|||
}
|
||||
|
||||
ret = (void *)__get_free_pages(gfp, order);
|
||||
if (!ret)
|
||||
return NULL;
|
||||
|
||||
if (ret != NULL) {
|
||||
memset(ret, 0, size);
|
||||
/*
|
||||
* Pages from the page allocator may have data present in
|
||||
* cache. So flush the cache before using uncached memory.
|
||||
*/
|
||||
dma_cache_sync(NULL, ret, size, DMA_BIDIRECTIONAL);
|
||||
*dma_handle = virt_to_phys(ret);
|
||||
memset(ret, 0, size);
|
||||
/*
|
||||
* Pages from the page allocator may have data present in
|
||||
* cache. So flush the cache before using uncached memory.
|
||||
*/
|
||||
dma_cache_sync(dev, ret, size, DMA_BIDIRECTIONAL);
|
||||
|
||||
ret_nocache = ioremap_nocache(virt_to_phys(ret), size);
|
||||
if (!ret_nocache) {
|
||||
free_pages((unsigned long)ret, order);
|
||||
return NULL;
|
||||
}
|
||||
return ret;
|
||||
|
||||
*dma_handle = virt_to_phys(ret);
|
||||
return ret_nocache;
|
||||
}
|
||||
EXPORT_SYMBOL(dma_alloc_coherent);
|
||||
|
||||
|
@ -71,7 +78,8 @@ void dma_free_coherent(struct device *dev, size_t size,
|
|||
} else {
|
||||
WARN_ON(irqs_disabled()); /* for portability */
|
||||
BUG_ON(mem && mem->flags & DMA_MEMORY_EXCLUSIVE);
|
||||
free_pages((unsigned long)vaddr, order);
|
||||
free_pages((unsigned long)phys_to_virt(dma_handle), order);
|
||||
iounmap(vaddr);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(dma_free_coherent);
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/mm.h>
|
||||
#include <linux/hardirq.h>
|
||||
#include <linux/kprobes.h>
|
||||
#include <asm/io_trapped.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/tlbflush.h>
|
||||
|
@ -163,6 +164,8 @@ no_context:
|
|||
if (fixup_exception(regs))
|
||||
return;
|
||||
|
||||
if (handle_trapped_io(regs, address))
|
||||
return;
|
||||
/*
|
||||
* Oops. The kernel tried to access some bad page. We'll have to
|
||||
* terminate things with extreme prejudice.
|
||||
|
@ -296,6 +299,14 @@ asmlinkage int __kprobes __do_page_fault(struct pt_regs *regs,
|
|||
entry = pte_mkdirty(entry);
|
||||
entry = pte_mkyoung(entry);
|
||||
|
||||
#if defined(CONFIG_CPU_SH4) && !defined(CONFIG_SMP)
|
||||
/*
|
||||
* ITLB is not affected by "ldtlb" instruction.
|
||||
* So, we need to flush the entry by ourselves.
|
||||
*/
|
||||
local_flush_tlb_one(get_asid(), address & PAGE_MASK);
|
||||
#endif
|
||||
|
||||
set_pte(pte, entry);
|
||||
update_mmu_cache(NULL, address, entry);
|
||||
|
||||
|
|
|
@ -203,6 +203,7 @@ void __init paging_init(void)
|
|||
|
||||
free_area_init_nodes(max_zone_pfns);
|
||||
|
||||
#ifdef CONFIG_SUPERH32
|
||||
/* Set up the uncached fixmap */
|
||||
set_fixmap_nocache(FIX_UNCACHED, __pa(&__uncached_start));
|
||||
|
||||
|
@ -214,6 +215,7 @@ void __init paging_init(void)
|
|||
*/
|
||||
cached_to_uncached = P2SEG - P1SEG;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct kcore_list kcore_mem, kcore_vmalloc;
|
||||
|
|
|
@ -45,3 +45,5 @@ MAGICPANELR2 SH_MAGIC_PANEL_R2
|
|||
R2D_PLUS RTS7751R2D_PLUS
|
||||
R2D_1 RTS7751R2D_1
|
||||
CAYMAN SH_CAYMAN
|
||||
SDK7780 SH_SDK7780
|
||||
MIGOR SH_MIGOR
|
||||
|
|
|
@ -434,9 +434,9 @@ asmlinkage int solaris_statvfs(u32 path, u32 buf)
|
|||
|
||||
error = user_path_walk(A(path),&nd);
|
||||
if (!error) {
|
||||
struct inode * inode = nd.dentry->d_inode;
|
||||
error = report_statvfs(nd.mnt, inode, buf);
|
||||
path_release(&nd);
|
||||
struct inode *inode = nd.path.dentry->d_inode;
|
||||
error = report_statvfs(nd.path.mnt, inode, buf);
|
||||
path_put(&nd.path);
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
@ -464,9 +464,9 @@ asmlinkage int solaris_statvfs64(u32 path, u32 buf)
|
|||
lock_kernel();
|
||||
error = user_path_walk(A(path), &nd);
|
||||
if (!error) {
|
||||
struct inode * inode = nd.dentry->d_inode;
|
||||
error = report_statvfs64(nd.mnt, inode, buf);
|
||||
path_release(&nd);
|
||||
struct inode *inode = nd.path.dentry->d_inode;
|
||||
error = report_statvfs64(nd.path.mnt, inode, buf);
|
||||
path_put(&nd.path);
|
||||
}
|
||||
unlock_kernel();
|
||||
return error;
|
||||
|
|
|
@ -145,8 +145,8 @@ void mconsole_proc(struct mc_request *req)
|
|||
}
|
||||
up_write(&super->s_umount);
|
||||
|
||||
nd.dentry = super->s_root;
|
||||
nd.mnt = NULL;
|
||||
nd.path.dentry = super->s_root;
|
||||
nd.path.mnt = NULL;
|
||||
nd.flags = O_RDONLY + 1;
|
||||
nd.last_type = LAST_ROOT;
|
||||
|
||||
|
@ -159,7 +159,7 @@ void mconsole_proc(struct mc_request *req)
|
|||
goto out_kill;
|
||||
}
|
||||
|
||||
file = dentry_open(nd.dentry, nd.mnt, O_RDONLY);
|
||||
file = dentry_open(nd.path.dentry, nd.path.mnt, O_RDONLY);
|
||||
if (IS_ERR(file)) {
|
||||
mconsole_reply(req, "Failed to open file", 1, 0);
|
||||
goto out_kill;
|
||||
|
|
|
@ -21,6 +21,8 @@ config X86
|
|||
select HAVE_IDE
|
||||
select HAVE_OPROFILE
|
||||
select HAVE_KPROBES
|
||||
select HAVE_KVM
|
||||
|
||||
|
||||
config GENERIC_LOCKBREAK
|
||||
def_bool n
|
||||
|
@ -119,8 +121,6 @@ config ARCH_HAS_CPU_RELAX
|
|||
config HAVE_SETUP_PER_CPU_AREA
|
||||
def_bool X86_64
|
||||
|
||||
select HAVE_KVM
|
||||
|
||||
config ARCH_HIBERNATION_POSSIBLE
|
||||
def_bool y
|
||||
depends on !SMP || !X86_VOYAGER
|
||||
|
|
|
@ -126,6 +126,8 @@ int acpi_processor_ffh_cstate_probe(unsigned int cpu,
|
|||
printk(KERN_DEBUG "Monitor-Mwait will be used to enter C-%d "
|
||||
"state\n", cx->type);
|
||||
}
|
||||
snprintf(cx->desc, ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
|
||||
cx->address);
|
||||
|
||||
out:
|
||||
set_cpus_allowed(current, saved_mask);
|
||||
|
|
|
@ -391,7 +391,7 @@ static void __init runtime_code_page_mkexec(void)
|
|||
if (md->type != EFI_RUNTIME_SERVICES_CODE)
|
||||
continue;
|
||||
|
||||
set_memory_x(md->virt_addr, md->num_pages << EFI_PAGE_SHIFT);
|
||||
set_memory_x(md->virt_addr, md->num_pages);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -434,7 +434,7 @@ void __init efi_enter_virtual_mode(void)
|
|||
}
|
||||
|
||||
if (!(md->attribute & EFI_MEMORY_WB))
|
||||
set_memory_uc(md->virt_addr, size);
|
||||
set_memory_uc(md->virt_addr, md->num_pages);
|
||||
|
||||
systab = (u64) (unsigned long) efi_phys.systab;
|
||||
if (md->phys_addr <= systab && systab < end) {
|
||||
|
|
|
@ -749,6 +749,15 @@ void __init gart_iommu_init(void)
|
|||
*/
|
||||
set_memory_np((unsigned long)__va(iommu_bus_base),
|
||||
iommu_size >> PAGE_SHIFT);
|
||||
/*
|
||||
* Tricky. The GART table remaps the physical memory range,
|
||||
* so the CPU wont notice potential aliases and if the memory
|
||||
* is remapped to UC later on, we might surprise the PCI devices
|
||||
* with a stray writeout of a cacheline. So play it sure and
|
||||
* do an explicit, full-scale wbinvd() _after_ having marked all
|
||||
* the pages as Not-Present:
|
||||
*/
|
||||
wbinvd();
|
||||
|
||||
/*
|
||||
* Try to workaround a bug (thanks to BenH)
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue