Merge with rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
This commit is contained in:
Коммит
da04b128cf
7
CREDITS
7
CREDITS
|
@ -1880,6 +1880,13 @@ S: Schlehenweg 9
|
|||
S: D-91080 Uttenreuth
|
||||
S: Germany
|
||||
|
||||
N: Jaya Kumar
|
||||
E: jayalk@intworks.biz
|
||||
W: http://www.intworks.biz
|
||||
D: Arc monochrome LCD framebuffer driver, x86 reboot fixups
|
||||
S: Gurgaon, India
|
||||
S: Kuala Lumpur, Malaysia
|
||||
|
||||
N: Gabor Kuti
|
||||
M: seasons@falcon.sch.bme.hu
|
||||
M: seasons@makosteszta.sote.hu
|
||||
|
|
|
@ -0,0 +1,135 @@
|
|||
Intel 830M/845G/852GM/855GM/865G/915G Framebuffer driver
|
||||
================================================================
|
||||
|
||||
A. Introduction
|
||||
This is a framebuffer driver for various Intel 810/815 compatible
|
||||
graphics devices. These would include:
|
||||
|
||||
Intel 830M
|
||||
Intel 810E845G
|
||||
Intel 852GM
|
||||
Intel 855GM
|
||||
Intel 865G
|
||||
Intel 915G
|
||||
|
||||
B. List of available options
|
||||
|
||||
a. "video=intelfb"
|
||||
enables the intelfb driver
|
||||
|
||||
Recommendation: required
|
||||
|
||||
b. "mode=<xres>x<yres>[-<bpp>][@<refresh>]"
|
||||
select mode
|
||||
|
||||
Recommendation: user preference
|
||||
(default = 1024x768-32@70)
|
||||
|
||||
c. "vram=<value>"
|
||||
select amount of system RAM in MB to allocate for the video memory
|
||||
if not enough RAM was already allocated by the BIOS.
|
||||
|
||||
Recommendation: 1 - 4 MB.
|
||||
(default = 4 MB)
|
||||
|
||||
d. "voffset=<value>"
|
||||
select at what offset in MB of the logical memory to allocate the
|
||||
framebuffer memory. The intent is to avoid the memory blocks
|
||||
used by standard graphics applications (XFree86). Depending on your
|
||||
usage, adjust the value up or down, (0 for maximum usage, 63/127 MB
|
||||
for the least amount). Note, an arbitrary setting may conflict
|
||||
with XFree86.
|
||||
|
||||
Recommendation: do not set
|
||||
(default = 48 MB)
|
||||
|
||||
e. "accel"
|
||||
enable text acceleration. This can be enabled/reenabled anytime
|
||||
by using 'fbset -accel true/false'.
|
||||
|
||||
Recommendation: enable
|
||||
(default = set)
|
||||
|
||||
f. "hwcursor"
|
||||
enable cursor acceleration.
|
||||
|
||||
Recommendation: enable
|
||||
(default = set)
|
||||
|
||||
g. "mtrr"
|
||||
enable MTRR. This allows data transfers to the framebuffer memory
|
||||
to occur in bursts which can significantly increase performance.
|
||||
Not very helpful with the intel chips because of 'shared memory'.
|
||||
|
||||
Recommendation: set
|
||||
(default = set)
|
||||
|
||||
h. "fixed"
|
||||
disable mode switching.
|
||||
|
||||
Recommendation: do not set
|
||||
(default = not set)
|
||||
|
||||
The binary parameters can be unset with a "no" prefix, example "noaccel".
|
||||
The default parameter (not named) is the mode.
|
||||
|
||||
C. Kernel booting
|
||||
|
||||
Separate each option/option-pair by commas (,) and the option from its value
|
||||
with an equals sign (=) as in the following:
|
||||
|
||||
video=i810fb:option1,option2=value2
|
||||
|
||||
Sample Usage
|
||||
------------
|
||||
|
||||
In /etc/lilo.conf, add the line:
|
||||
|
||||
append="video=intelfb:800x600-32@75,accel,hwcursor,vram=8"
|
||||
|
||||
This will initialize the framebuffer to 800x600 at 32bpp and 75Hz. The
|
||||
framebuffer will use 8 MB of System RAM. hw acceleration of text and cursor
|
||||
will be enabled.
|
||||
|
||||
D. Module options
|
||||
|
||||
The module parameters are essentially similar to the kernel
|
||||
parameters. The main difference is that you need to include a Boolean value
|
||||
(1 for TRUE, and 0 for FALSE) for those options which don't need a value.
|
||||
|
||||
Example, to enable MTRR, include "mtrr=1".
|
||||
|
||||
Sample Usage
|
||||
------------
|
||||
|
||||
Using the same setup as described above, load the module like this:
|
||||
|
||||
modprobe intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1
|
||||
|
||||
Or just add the following to /etc/modprobe.conf
|
||||
|
||||
options intelfb mode=800x600-32@75 vram=8 accel=1 hwcursor=1
|
||||
|
||||
and just do a
|
||||
|
||||
modprobe intelfb
|
||||
|
||||
|
||||
E. Acknowledgment:
|
||||
|
||||
1. Geert Uytterhoeven - his excellent howto and the virtual
|
||||
framebuffer driver code made this possible.
|
||||
|
||||
2. Jeff Hartmann for his agpgart code.
|
||||
|
||||
3. David Dawes for his original kernel 2.4 code.
|
||||
|
||||
4. The X developers. Insights were provided just by reading the
|
||||
XFree86 source code.
|
||||
|
||||
5. Antonino A. Daplas for his inspiring i810fb driver.
|
||||
|
||||
6. Andrew Morton for his kernel patches maintenance.
|
||||
|
||||
###########################
|
||||
Sylvain
|
|
@ -26,7 +26,11 @@ Mount options unique to the isofs filesystem.
|
|||
mode=xxx Sets the permissions on files to xxx
|
||||
nojoliet Ignore Joliet extensions if they are present.
|
||||
norock Ignore Rock Ridge extensions if they are present.
|
||||
unhide Show hidden files.
|
||||
hide Completely strip hidden files from the file system.
|
||||
showassoc Show files marked with the 'associated' bit
|
||||
unhide Deprecated; showing hidden files is now default;
|
||||
If given, it is a synonym for 'showassoc' which will
|
||||
recreate previous unhide behavior
|
||||
session=x Select number of session on multisession CD
|
||||
sbsector=xxx Session begins from sector xxx
|
||||
|
||||
|
|
|
@ -71,8 +71,8 @@ can be changed on remount. The size parameter also accepts a suffix %
|
|||
to limit this tmpfs instance to that percentage of your physical RAM:
|
||||
the default, when neither size nor nr_blocks is specified, is size=50%
|
||||
|
||||
If both nr_blocks (or size) and nr_inodes are set to 0, neither blocks
|
||||
nor inodes will be limited in that instance. It is generally unwise to
|
||||
If nr_blocks=0 (or size=0), blocks will not be limited in that instance;
|
||||
if nr_inodes=0, inodes will not be limited. It is generally unwise to
|
||||
mount with such options, since it allows any user with write access to
|
||||
use up all the memory on the machine; but enhances the scalability of
|
||||
that instance in a system with many cpus making intensive use of it.
|
||||
|
@ -97,4 +97,4 @@ RAM/SWAP in 10240 inodes and it is only accessible by root.
|
|||
Author:
|
||||
Christoph Rohland <cr@sap.com>, 1.12.01
|
||||
Updated:
|
||||
Hugh Dickins <hugh@veritas.com>, 01 September 2004
|
||||
Hugh Dickins <hugh@veritas.com>, 13 March 2005
|
||||
|
|
|
@ -30,7 +30,7 @@ Command line parameters
|
|||
device numbers (0xabcd or abcd, for 2.4 backward compatibility).
|
||||
You can use the 'all' keyword to ignore all devices.
|
||||
The '!' operator will cause the I/O-layer to _not_ ignore a device.
|
||||
The order on the command line is not important.
|
||||
The command line is parsed from left to right.
|
||||
|
||||
For example,
|
||||
cio_ignore=0.0.0023-0.0.0042,0.0.4711
|
||||
|
@ -72,13 +72,14 @@ Command line parameters
|
|||
/proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the
|
||||
specified devices.
|
||||
|
||||
Note: Already known devices cannot be ignored.
|
||||
Note: While already known devices can be added to the list of devices to be
|
||||
ignored, there will be no effect on then. However, if such a device
|
||||
disappears and then reappeares, it will then be ignored.
|
||||
|
||||
For example, if device 0.0.abcd is already known and all other devices
|
||||
0.0.a000-0.0.afff are not known,
|
||||
For example,
|
||||
"echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore"
|
||||
will add 0.0.a000-0.0.abcc, 0.0.abce-0.0.accc and 0.0.af00-0.0.afff to the
|
||||
list of ignored devices and skip 0.0.abcd.
|
||||
will add 0.0.a000-0.0.accc and 0.0.af00-0.0.afff to the list of ignored
|
||||
devices.
|
||||
|
||||
The devices can be specified either by bus id (0.0.abcd) or, for 2.4 backward
|
||||
compatibilty, by the device number in hexadecimal (0xabcd or abcd).
|
||||
|
@ -98,7 +99,8 @@ Command line parameters
|
|||
|
||||
- /proc/s390dbf/cio_trace/hex_ascii
|
||||
Logs the calling of functions in the common I/O-layer and, if applicable,
|
||||
which subchannel they were called for.
|
||||
which subchannel they were called for, as well as dumps of some data
|
||||
structures (like irb in an error case).
|
||||
|
||||
The level of logging can be changed to be more or less verbose by piping to
|
||||
/proc/s390dbf/cio_*/level a number between 0 and 6; see the documentation on
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
The SGI IOC4 PCI device is a bit of a strange beast, so some notes on
|
||||
it are in order.
|
||||
|
||||
First, even though the IOC4 performs multiple functions, such as an
|
||||
IDE controller, a serial controller, a PS/2 keyboard/mouse controller,
|
||||
and an external interrupt mechanism, it's not implemented as a
|
||||
multifunction device. The consequence of this from a software
|
||||
standpoint is that all these functions share a single IRQ, and
|
||||
they can't all register to own the same PCI device ID. To make
|
||||
matters a bit worse, some of the register blocks (and even registers
|
||||
themselves) present in IOC4 are mixed-purpose between these several
|
||||
functions, meaning that there's no clear "owning" device driver.
|
||||
|
||||
The solution is to organize the IOC4 driver into several independent
|
||||
drivers, "ioc4", "sgiioc4", and "ioc4_serial". Note that there is no
|
||||
PS/2 controller driver as this functionality has never been wired up
|
||||
on a shipping IO card.
|
||||
|
||||
ioc4
|
||||
====
|
||||
This is the core (or shim) driver for IOC4. It is responsible for
|
||||
initializing the basic functionality of the chip, and allocating
|
||||
the PCI resources that are shared between the IOC4 functions.
|
||||
|
||||
This driver also provides registration functions that the other
|
||||
IOC4 drivers can call to make their presence known. Each driver
|
||||
needs to provide a probe and remove function, which are invoked
|
||||
by the core driver at appropriate times. The interface of these
|
||||
IOC4 function probe and remove operations isn't precisely the same
|
||||
as PCI device probe and remove operations, but is logically the
|
||||
same operation.
|
||||
|
||||
sgiioc4
|
||||
=======
|
||||
This is the IDE driver for IOC4. Its name isn't very descriptive
|
||||
simply for historical reasons (it used to be the only IOC4 driver
|
||||
component). There's not much to say about it other than it hooks
|
||||
up to the ioc4 driver via the appropriate registration, probe, and
|
||||
remove functions.
|
||||
|
||||
ioc4_serial
|
||||
===========
|
||||
This is the serial driver for IOC4. There's not much to say about it
|
||||
other than it hooks up to the ioc4 driver via the appropriate registration,
|
||||
probe, and remove functions.
|
|
@ -265,6 +265,11 @@ P: Arnaldo Carvalho de Melo
|
|||
M: acme@conectiva.com.br
|
||||
S: Maintained
|
||||
|
||||
ARC FRAMEBUFFER DRIVER
|
||||
P: Jaya Kumar
|
||||
M: jayalk@intworks.biz
|
||||
S: Maintained
|
||||
|
||||
ARM26 ARCHITECTURE
|
||||
P: Ian Molton
|
||||
M: spyro@f2s.com
|
||||
|
|
|
@ -73,7 +73,12 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
|||
(!vma || addr + len <= vma->vm_start))
|
||||
return addr;
|
||||
}
|
||||
start_addr = addr = mm->free_area_cache;
|
||||
if (len > mm->cached_hole_size) {
|
||||
start_addr = addr = mm->free_area_cache;
|
||||
} else {
|
||||
start_addr = addr = TASK_UNMAPPED_BASE;
|
||||
mm->cached_hole_size = 0;
|
||||
}
|
||||
|
||||
full_search:
|
||||
if (do_align)
|
||||
|
@ -90,6 +95,7 @@ full_search:
|
|||
*/
|
||||
if (start_addr != TASK_UNMAPPED_BASE) {
|
||||
start_addr = addr = TASK_UNMAPPED_BASE;
|
||||
mm->cached_hole_size = 0;
|
||||
goto full_search;
|
||||
}
|
||||
return -ENOMEM;
|
||||
|
@ -101,6 +107,8 @@ full_search:
|
|||
mm->free_area_cache = addr + len;
|
||||
return addr;
|
||||
}
|
||||
if (addr + mm->cached_hole_size < vma->vm_start)
|
||||
mm->cached_hole_size = vma->vm_start - addr;
|
||||
addr = vma->vm_end;
|
||||
if (do_align)
|
||||
addr = COLOUR_ALIGN(addr, pgoff);
|
||||
|
|
|
@ -169,7 +169,6 @@ void __init mem_init(void)
|
|||
struct page *page = &mem_map[pfn];
|
||||
|
||||
ClearPageReserved(page);
|
||||
set_bit(PG_highmem, &page->flags);
|
||||
set_page_count(page, 1);
|
||||
__free_page(page);
|
||||
totalram_pages++;
|
||||
|
|
|
@ -48,7 +48,7 @@ cmd_image = $(obj)/tools/build $(BUILDFLAGS) $(obj)/bootsect $(obj)/setup \
|
|||
$(obj)/zImage $(obj)/bzImage: $(obj)/bootsect $(obj)/setup \
|
||||
$(obj)/vmlinux.bin $(obj)/tools/build FORCE
|
||||
$(call if_changed,image)
|
||||
@echo 'Kernel: $@ is ready'
|
||||
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
|
||||
|
||||
$(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
|
|
|
@ -251,7 +251,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_io_submit
|
||||
.long sys_io_cancel
|
||||
.long sys_fadvise64 /* 250 */
|
||||
.long sys_ni_syscall
|
||||
.long sys_set_zone_reclaim
|
||||
.long sys_exit_group
|
||||
.long sys_lookup_dcookie
|
||||
.long sys_epoll_create
|
||||
|
|
|
@ -306,7 +306,7 @@ void die(const char * str, struct pt_regs * regs, long err)
|
|||
};
|
||||
static int die_counter;
|
||||
|
||||
if (die.lock_owner != _smp_processor_id()) {
|
||||
if (die.lock_owner != raw_smp_processor_id()) {
|
||||
console_verbose();
|
||||
spin_lock_irq(&die.lock);
|
||||
die.lock_owner = smp_processor_id();
|
||||
|
|
|
@ -34,7 +34,7 @@ inline void __const_udelay(unsigned long xloops)
|
|||
xloops *= 4;
|
||||
__asm__("mull %0"
|
||||
:"=d" (xloops), "=&a" (d0)
|
||||
:"1" (xloops),"0" (cpu_data[_smp_processor_id()].loops_per_jiffy * (HZ/4)));
|
||||
:"1" (xloops),"0" (cpu_data[raw_smp_processor_id()].loops_per_jiffy * (HZ/4)));
|
||||
__delay(++xloops);
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#include <asm/tlb.h>
|
||||
#include <asm/tlbflush.h>
|
||||
|
||||
static pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
|
||||
pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
|
||||
{
|
||||
pgd_t *pgd;
|
||||
pud_t *pud;
|
||||
|
@ -30,7 +30,7 @@ static pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
|
|||
return (pte_t *) pmd;
|
||||
}
|
||||
|
||||
static pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
|
||||
pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
|
||||
{
|
||||
pgd_t *pgd;
|
||||
pud_t *pud;
|
||||
|
@ -42,21 +42,6 @@ static pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
|
|||
return (pte_t *) pmd;
|
||||
}
|
||||
|
||||
static void set_huge_pte(struct mm_struct *mm, struct vm_area_struct *vma, struct page *page, pte_t * page_table, int write_access)
|
||||
{
|
||||
pte_t entry;
|
||||
|
||||
add_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);
|
||||
if (write_access) {
|
||||
entry =
|
||||
pte_mkwrite(pte_mkdirty(mk_pte(page, vma->vm_page_prot)));
|
||||
} else
|
||||
entry = pte_wrprotect(mk_pte(page, vma->vm_page_prot));
|
||||
entry = pte_mkyoung(entry);
|
||||
mk_pte_huge(entry);
|
||||
set_pte(page_table, entry);
|
||||
}
|
||||
|
||||
/*
|
||||
* This function checks for proper alignment of input addr and len parameters.
|
||||
*/
|
||||
|
@ -69,77 +54,6 @@ int is_aligned_hugepage_range(unsigned long addr, unsigned long len)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
|
||||
struct vm_area_struct *vma)
|
||||
{
|
||||
pte_t *src_pte, *dst_pte, entry;
|
||||
struct page *ptepage;
|
||||
unsigned long addr = vma->vm_start;
|
||||
unsigned long end = vma->vm_end;
|
||||
|
||||
while (addr < end) {
|
||||
dst_pte = huge_pte_alloc(dst, addr);
|
||||
if (!dst_pte)
|
||||
goto nomem;
|
||||
src_pte = huge_pte_offset(src, addr);
|
||||
entry = *src_pte;
|
||||
ptepage = pte_page(entry);
|
||||
get_page(ptepage);
|
||||
set_pte(dst_pte, entry);
|
||||
add_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
|
||||
addr += HPAGE_SIZE;
|
||||
}
|
||||
return 0;
|
||||
|
||||
nomem:
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
int
|
||||
follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
struct page **pages, struct vm_area_struct **vmas,
|
||||
unsigned long *position, int *length, int i)
|
||||
{
|
||||
unsigned long vpfn, vaddr = *position;
|
||||
int remainder = *length;
|
||||
|
||||
WARN_ON(!is_vm_hugetlb_page(vma));
|
||||
|
||||
vpfn = vaddr/PAGE_SIZE;
|
||||
while (vaddr < vma->vm_end && remainder) {
|
||||
|
||||
if (pages) {
|
||||
pte_t *pte;
|
||||
struct page *page;
|
||||
|
||||
pte = huge_pte_offset(mm, vaddr);
|
||||
|
||||
/* hugetlb should be locked, and hence, prefaulted */
|
||||
WARN_ON(!pte || pte_none(*pte));
|
||||
|
||||
page = &pte_page(*pte)[vpfn % (HPAGE_SIZE/PAGE_SIZE)];
|
||||
|
||||
WARN_ON(!PageCompound(page));
|
||||
|
||||
get_page(page);
|
||||
pages[i] = page;
|
||||
}
|
||||
|
||||
if (vmas)
|
||||
vmas[i] = vma;
|
||||
|
||||
vaddr += PAGE_SIZE;
|
||||
++vpfn;
|
||||
--remainder;
|
||||
++i;
|
||||
}
|
||||
|
||||
*length = remainder;
|
||||
*position = vaddr;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
#if 0 /* This is just for testing */
|
||||
struct page *
|
||||
follow_huge_addr(struct mm_struct *mm, unsigned long address, int write)
|
||||
|
@ -204,83 +118,15 @@ follow_huge_pmd(struct mm_struct *mm, unsigned long address,
|
|||
}
|
||||
#endif
|
||||
|
||||
void unmap_hugepage_range(struct vm_area_struct *vma,
|
||||
unsigned long start, unsigned long end)
|
||||
void hugetlb_clean_stale_pgtable(pte_t *pte)
|
||||
{
|
||||
struct mm_struct *mm = vma->vm_mm;
|
||||
unsigned long address;
|
||||
pte_t pte, *ptep;
|
||||
pmd_t *pmd = (pmd_t *) pte;
|
||||
struct page *page;
|
||||
|
||||
BUG_ON(start & (HPAGE_SIZE - 1));
|
||||
BUG_ON(end & (HPAGE_SIZE - 1));
|
||||
|
||||
for (address = start; address < end; address += HPAGE_SIZE) {
|
||||
ptep = huge_pte_offset(mm, address);
|
||||
if (!ptep)
|
||||
continue;
|
||||
pte = ptep_get_and_clear(mm, address, ptep);
|
||||
if (pte_none(pte))
|
||||
continue;
|
||||
page = pte_page(pte);
|
||||
put_page(page);
|
||||
}
|
||||
add_mm_counter(mm ,rss, -((end - start) >> PAGE_SHIFT));
|
||||
flush_tlb_range(vma, start, end);
|
||||
}
|
||||
|
||||
int hugetlb_prefault(struct address_space *mapping, struct vm_area_struct *vma)
|
||||
{
|
||||
struct mm_struct *mm = current->mm;
|
||||
unsigned long addr;
|
||||
int ret = 0;
|
||||
|
||||
BUG_ON(vma->vm_start & ~HPAGE_MASK);
|
||||
BUG_ON(vma->vm_end & ~HPAGE_MASK);
|
||||
|
||||
spin_lock(&mm->page_table_lock);
|
||||
for (addr = vma->vm_start; addr < vma->vm_end; addr += HPAGE_SIZE) {
|
||||
unsigned long idx;
|
||||
pte_t *pte = huge_pte_alloc(mm, addr);
|
||||
struct page *page;
|
||||
|
||||
if (!pte) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!pte_none(*pte))
|
||||
continue;
|
||||
|
||||
idx = ((addr - vma->vm_start) >> HPAGE_SHIFT)
|
||||
+ (vma->vm_pgoff >> (HPAGE_SHIFT - PAGE_SHIFT));
|
||||
page = find_get_page(mapping, idx);
|
||||
if (!page) {
|
||||
/* charge the fs quota first */
|
||||
if (hugetlb_get_quota(mapping)) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
page = alloc_huge_page();
|
||||
if (!page) {
|
||||
hugetlb_put_quota(mapping);
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
ret = add_to_page_cache(page, mapping, idx, GFP_ATOMIC);
|
||||
if (! ret) {
|
||||
unlock_page(page);
|
||||
} else {
|
||||
hugetlb_put_quota(mapping);
|
||||
free_huge_page(page);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
set_huge_pte(mm, vma, page, pte, vma->vm_flags & VM_WRITE);
|
||||
}
|
||||
out:
|
||||
spin_unlock(&mm->page_table_lock);
|
||||
return ret;
|
||||
page = pmd_page(*pmd);
|
||||
pmd_clear(pmd);
|
||||
dec_page_state(nr_page_table_pages);
|
||||
page_cache_release(page);
|
||||
}
|
||||
|
||||
/* x86_64 also uses this file */
|
||||
|
@ -294,7 +140,12 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file,
|
|||
struct vm_area_struct *vma;
|
||||
unsigned long start_addr;
|
||||
|
||||
start_addr = mm->free_area_cache;
|
||||
if (len > mm->cached_hole_size) {
|
||||
start_addr = mm->free_area_cache;
|
||||
} else {
|
||||
start_addr = TASK_UNMAPPED_BASE;
|
||||
mm->cached_hole_size = 0;
|
||||
}
|
||||
|
||||
full_search:
|
||||
addr = ALIGN(start_addr, HPAGE_SIZE);
|
||||
|
@ -308,6 +159,7 @@ full_search:
|
|||
*/
|
||||
if (start_addr != TASK_UNMAPPED_BASE) {
|
||||
start_addr = TASK_UNMAPPED_BASE;
|
||||
mm->cached_hole_size = 0;
|
||||
goto full_search;
|
||||
}
|
||||
return -ENOMEM;
|
||||
|
@ -316,6 +168,8 @@ full_search:
|
|||
mm->free_area_cache = addr + len;
|
||||
return addr;
|
||||
}
|
||||
if (addr + mm->cached_hole_size < vma->vm_start)
|
||||
mm->cached_hole_size = vma->vm_start - addr;
|
||||
addr = ALIGN(vma->vm_end, HPAGE_SIZE);
|
||||
}
|
||||
}
|
||||
|
@ -327,12 +181,17 @@ static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file,
|
|||
struct mm_struct *mm = current->mm;
|
||||
struct vm_area_struct *vma, *prev_vma;
|
||||
unsigned long base = mm->mmap_base, addr = addr0;
|
||||
unsigned long largest_hole = mm->cached_hole_size;
|
||||
int first_time = 1;
|
||||
|
||||
/* don't allow allocations above current base */
|
||||
if (mm->free_area_cache > base)
|
||||
mm->free_area_cache = base;
|
||||
|
||||
if (len <= largest_hole) {
|
||||
largest_hole = 0;
|
||||
mm->free_area_cache = base;
|
||||
}
|
||||
try_again:
|
||||
/* make sure it can fit in the remaining address space */
|
||||
if (mm->free_area_cache < len)
|
||||
|
@ -353,13 +212,21 @@ try_again:
|
|||
* vma->vm_start, use it:
|
||||
*/
|
||||
if (addr + len <= vma->vm_start &&
|
||||
(!prev_vma || (addr >= prev_vma->vm_end)))
|
||||
(!prev_vma || (addr >= prev_vma->vm_end))) {
|
||||
/* remember the address as a hint for next time */
|
||||
return (mm->free_area_cache = addr);
|
||||
else
|
||||
mm->cached_hole_size = largest_hole;
|
||||
return (mm->free_area_cache = addr);
|
||||
} else {
|
||||
/* pull free_area_cache down to the first hole */
|
||||
if (mm->free_area_cache == vma->vm_end)
|
||||
if (mm->free_area_cache == vma->vm_end) {
|
||||
mm->free_area_cache = vma->vm_start;
|
||||
mm->cached_hole_size = largest_hole;
|
||||
}
|
||||
}
|
||||
|
||||
/* remember the largest hole we saw so far */
|
||||
if (addr + largest_hole < vma->vm_start)
|
||||
largest_hole = vma->vm_start - addr;
|
||||
|
||||
/* try just below the current vma->vm_start */
|
||||
addr = (vma->vm_start - len) & HPAGE_MASK;
|
||||
|
@ -372,6 +239,7 @@ fail:
|
|||
*/
|
||||
if (first_time) {
|
||||
mm->free_area_cache = base;
|
||||
largest_hole = 0;
|
||||
first_time = 0;
|
||||
goto try_again;
|
||||
}
|
||||
|
@ -382,6 +250,7 @@ fail:
|
|||
* allocations.
|
||||
*/
|
||||
mm->free_area_cache = TASK_UNMAPPED_BASE;
|
||||
mm->cached_hole_size = ~0UL;
|
||||
addr = hugetlb_get_unmapped_area_bottomup(file, addr0,
|
||||
len, pgoff, flags);
|
||||
|
||||
|
@ -389,6 +258,7 @@ fail:
|
|||
* Restore the topdown base:
|
||||
*/
|
||||
mm->free_area_cache = base;
|
||||
mm->cached_hole_size = ~0UL;
|
||||
|
||||
return addr;
|
||||
}
|
||||
|
|
|
@ -269,7 +269,6 @@ void __init one_highpage_init(struct page *page, int pfn, int bad_ppro)
|
|||
{
|
||||
if (page_is_ram(pfn) && !(bad_ppro && page_kills_ppro(pfn))) {
|
||||
ClearPageReserved(page);
|
||||
set_bit(PG_highmem, &page->flags);
|
||||
set_page_count(page, 1);
|
||||
__free_page(page);
|
||||
totalhigh_pages++;
|
||||
|
|
|
@ -50,6 +50,10 @@ config SCHED_NO_NO_OMIT_FRAME_POINTER
|
|||
bool
|
||||
default y
|
||||
|
||||
config IA64_UNCACHED_ALLOCATOR
|
||||
bool
|
||||
select GENERIC_ALLOCATOR
|
||||
|
||||
choice
|
||||
prompt "System type"
|
||||
default IA64_GENERIC
|
||||
|
@ -223,7 +227,7 @@ config IA64_SGI_SN_SIM
|
|||
|
||||
config IA64_SGI_SN_XP
|
||||
tristate "Support communication between SGI SSIs"
|
||||
depends on MSPEC
|
||||
select IA64_UNCACHED_ALLOCATOR
|
||||
help
|
||||
An SGI machine can be divided into multiple Single System
|
||||
Images which act independently of each other and have
|
||||
|
|
|
@ -588,6 +588,7 @@ CONFIG_SGI_MBCS=m
|
|||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_SERIAL_SGI_L1_CONSOLE=y
|
||||
CONFIG_SERIAL_SGI_IOC4=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
@ -787,6 +788,11 @@ CONFIG_INFINIBAND_MTHCA=m
|
|||
CONFIG_INFINIBAND_IPOIB=m
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
|
||||
|
||||
#
|
||||
# SN Devices
|
||||
#
|
||||
CONFIG_SGI_IOC4=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
|
|
|
@ -638,6 +638,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
|
|||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_SERIAL_SGI_L1_CONSOLE=y
|
||||
CONFIG_SERIAL_SGI_IOC4=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
@ -942,6 +943,11 @@ CONFIG_INFINIBAND_MTHCA=m
|
|||
CONFIG_INFINIBAND_IPOIB=m
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
|
||||
|
||||
#
|
||||
# SN Devices
|
||||
#
|
||||
CONFIG_SGI_IOC4=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
|
|
|
@ -20,6 +20,7 @@ obj-$(CONFIG_SMP) += smp.o smpboot.o domain.o
|
|||
obj-$(CONFIG_PERFMON) += perfmon_default_smpl.o
|
||||
obj-$(CONFIG_IA64_CYCLONE) += cyclone.o
|
||||
obj-$(CONFIG_IA64_MCA_RECOVERY) += mca_recovery.o
|
||||
obj-$(CONFIG_IA64_UNCACHED_ALLOCATOR) += uncached.o
|
||||
mca_recovery-y += mca_drv.o mca_drv_asm.o
|
||||
|
||||
# The gate DSO image is built using a special linker script.
|
||||
|
|
|
@ -409,6 +409,38 @@ efi_memmap_walk (efi_freemem_callback_t callback, void *arg)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Walk the EFI memory map to pull out leftover pages in the lower
|
||||
* memory regions which do not end up in the regular memory map and
|
||||
* stick them into the uncached allocator
|
||||
*
|
||||
* The regular walk function is significantly more complex than the
|
||||
* uncached walk which means it really doesn't make sense to try and
|
||||
* marge the two.
|
||||
*/
|
||||
void __init
|
||||
efi_memmap_walk_uc (efi_freemem_callback_t callback)
|
||||
{
|
||||
void *efi_map_start, *efi_map_end, *p;
|
||||
efi_memory_desc_t *md;
|
||||
u64 efi_desc_size, start, end;
|
||||
|
||||
efi_map_start = __va(ia64_boot_param->efi_memmap);
|
||||
efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size;
|
||||
efi_desc_size = ia64_boot_param->efi_memdesc_size;
|
||||
|
||||
for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) {
|
||||
md = p;
|
||||
if (md->attribute == EFI_MEMORY_UC) {
|
||||
start = PAGE_ALIGN(md->phys_addr);
|
||||
end = PAGE_ALIGN((md->phys_addr+(md->num_pages << EFI_PAGE_SHIFT)) & PAGE_MASK);
|
||||
if ((*callback)(start, end, NULL) < 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Look for the PAL_CODE region reported by EFI and maps it using an
|
||||
* ITR to enable safe PAL calls in virtual mode. See IA-64 Processor
|
||||
|
|
|
@ -1579,7 +1579,7 @@ sys_call_table:
|
|||
data8 sys_keyctl
|
||||
data8 sys_ni_syscall
|
||||
data8 sys_ni_syscall // 1275
|
||||
data8 sys_ni_syscall
|
||||
data8 sys_set_zone_reclaim
|
||||
data8 sys_ni_syscall
|
||||
data8 sys_ni_syscall
|
||||
data8 sys_ni_syscall
|
||||
|
|
|
@ -0,0 +1,246 @@
|
|||
/*
|
||||
* Copyright (C) 2001-2005 Silicon Graphics, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* A simple uncached page allocator using the generic allocator. This
|
||||
* allocator first utilizes the spare (spill) pages found in the EFI
|
||||
* memmap and will then start converting cached pages to uncached ones
|
||||
* at a granule at a time. Node awareness is implemented by having a
|
||||
* pool of pages per node.
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/efi.h>
|
||||
#include <linux/genalloc.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/pal.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/sn/arch.h>
|
||||
|
||||
#define DEBUG 0
|
||||
|
||||
#if DEBUG
|
||||
#define dprintk printk
|
||||
#else
|
||||
#define dprintk(x...) do { } while (0)
|
||||
#endif
|
||||
|
||||
void __init efi_memmap_walk_uc (efi_freemem_callback_t callback);
|
||||
|
||||
#define MAX_UNCACHED_GRANULES 5
|
||||
static int allocated_granules;
|
||||
|
||||
struct gen_pool *uncached_pool[MAX_NUMNODES];
|
||||
|
||||
|
||||
static void uncached_ipi_visibility(void *data)
|
||||
{
|
||||
int status;
|
||||
|
||||
status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
|
||||
if ((status != PAL_VISIBILITY_OK) &&
|
||||
(status != PAL_VISIBILITY_OK_REMOTE_NEEDED))
|
||||
printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on "
|
||||
"CPU %i\n", status, get_cpu());
|
||||
}
|
||||
|
||||
|
||||
static void uncached_ipi_mc_drain(void *data)
|
||||
{
|
||||
int status;
|
||||
status = ia64_pal_mc_drain();
|
||||
if (status)
|
||||
printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on "
|
||||
"CPU %i\n", status, get_cpu());
|
||||
}
|
||||
|
||||
|
||||
static unsigned long
|
||||
uncached_get_new_chunk(struct gen_pool *poolp)
|
||||
{
|
||||
struct page *page;
|
||||
void *tmp;
|
||||
int status, i;
|
||||
unsigned long addr, node;
|
||||
|
||||
if (allocated_granules >= MAX_UNCACHED_GRANULES)
|
||||
return 0;
|
||||
|
||||
node = poolp->private;
|
||||
page = alloc_pages_node(node, GFP_KERNEL | __GFP_ZERO,
|
||||
IA64_GRANULE_SHIFT-PAGE_SHIFT);
|
||||
|
||||
dprintk(KERN_INFO "get_new_chunk page %p, addr %lx\n",
|
||||
page, (unsigned long)(page-vmem_map) << PAGE_SHIFT);
|
||||
|
||||
/*
|
||||
* Do magic if no mem on local node! XXX
|
||||
*/
|
||||
if (!page)
|
||||
return 0;
|
||||
tmp = page_address(page);
|
||||
|
||||
/*
|
||||
* There's a small race here where it's possible for someone to
|
||||
* access the page through /dev/mem halfway through the conversion
|
||||
* to uncached - not sure it's really worth bothering about
|
||||
*/
|
||||
for (i = 0; i < (IA64_GRANULE_SIZE / PAGE_SIZE); i++)
|
||||
SetPageUncached(&page[i]);
|
||||
|
||||
flush_tlb_kernel_range(tmp, tmp + IA64_GRANULE_SIZE);
|
||||
|
||||
status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
|
||||
|
||||
dprintk(KERN_INFO "pal_prefetch_visibility() returns %i on cpu %i\n",
|
||||
status, get_cpu());
|
||||
|
||||
if (!status) {
|
||||
status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1);
|
||||
if (status)
|
||||
printk(KERN_WARNING "smp_call_function failed for "
|
||||
"uncached_ipi_visibility! (%i)\n", status);
|
||||
}
|
||||
|
||||
if (ia64_platform_is("sn2"))
|
||||
sn_flush_all_caches((unsigned long)tmp, IA64_GRANULE_SIZE);
|
||||
else
|
||||
flush_icache_range((unsigned long)tmp,
|
||||
(unsigned long)tmp+IA64_GRANULE_SIZE);
|
||||
|
||||
ia64_pal_mc_drain();
|
||||
status = smp_call_function(uncached_ipi_mc_drain, NULL, 0, 1);
|
||||
if (status)
|
||||
printk(KERN_WARNING "smp_call_function failed for "
|
||||
"uncached_ipi_mc_drain! (%i)\n", status);
|
||||
|
||||
addr = (unsigned long)tmp - PAGE_OFFSET + __IA64_UNCACHED_OFFSET;
|
||||
|
||||
allocated_granules++;
|
||||
return addr;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* uncached_alloc_page
|
||||
*
|
||||
* Allocate 1 uncached page. Allocates on the requested node. If no
|
||||
* uncached pages are available on the requested node, roundrobin starting
|
||||
* with higher nodes.
|
||||
*/
|
||||
unsigned long
|
||||
uncached_alloc_page(int nid)
|
||||
{
|
||||
unsigned long maddr;
|
||||
|
||||
maddr = gen_pool_alloc(uncached_pool[nid], PAGE_SIZE);
|
||||
|
||||
dprintk(KERN_DEBUG "uncached_alloc_page returns %lx on node %i\n",
|
||||
maddr, nid);
|
||||
|
||||
/*
|
||||
* If no memory is availble on our local node, try the
|
||||
* remaining nodes in the system.
|
||||
*/
|
||||
if (!maddr) {
|
||||
int i;
|
||||
|
||||
for (i = MAX_NUMNODES - 1; i >= 0; i--) {
|
||||
if (i == nid || !node_online(i))
|
||||
continue;
|
||||
maddr = gen_pool_alloc(uncached_pool[i], PAGE_SIZE);
|
||||
dprintk(KERN_DEBUG "uncached_alloc_page alternate search "
|
||||
"returns %lx on node %i\n", maddr, i);
|
||||
if (maddr) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return maddr;
|
||||
}
|
||||
EXPORT_SYMBOL(uncached_alloc_page);
|
||||
|
||||
|
||||
/*
|
||||
* uncached_free_page
|
||||
*
|
||||
* Free a single uncached page.
|
||||
*/
|
||||
void
|
||||
uncached_free_page(unsigned long maddr)
|
||||
{
|
||||
int node;
|
||||
|
||||
node = nasid_to_cnodeid(NASID_GET(maddr));
|
||||
|
||||
dprintk(KERN_DEBUG "uncached_free_page(%lx) on node %i\n", maddr, node);
|
||||
|
||||
if ((maddr & (0XFUL << 60)) != __IA64_UNCACHED_OFFSET)
|
||||
panic("uncached_free_page invalid address %lx\n", maddr);
|
||||
|
||||
gen_pool_free(uncached_pool[node], maddr, PAGE_SIZE);
|
||||
}
|
||||
EXPORT_SYMBOL(uncached_free_page);
|
||||
|
||||
|
||||
/*
|
||||
* uncached_build_memmap,
|
||||
*
|
||||
* Called at boot time to build a map of pages that can be used for
|
||||
* memory special operations.
|
||||
*/
|
||||
static int __init
|
||||
uncached_build_memmap(unsigned long start, unsigned long end, void *arg)
|
||||
{
|
||||
long length;
|
||||
unsigned long vstart, vend;
|
||||
int node;
|
||||
|
||||
length = end - start;
|
||||
vstart = start + __IA64_UNCACHED_OFFSET;
|
||||
vend = end + __IA64_UNCACHED_OFFSET;
|
||||
|
||||
dprintk(KERN_ERR "uncached_build_memmap(%lx %lx)\n", start, end);
|
||||
|
||||
memset((char *)vstart, 0, length);
|
||||
|
||||
node = nasid_to_cnodeid(NASID_GET(start));
|
||||
|
||||
for (; vstart < vend ; vstart += PAGE_SIZE) {
|
||||
dprintk(KERN_INFO "sticking %lx into the pool!\n", vstart);
|
||||
gen_pool_free(uncached_pool[node], vstart, PAGE_SIZE);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int __init uncached_init(void) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MAX_NUMNODES; i++) {
|
||||
if (!node_online(i))
|
||||
continue;
|
||||
uncached_pool[i] = gen_pool_create(0, IA64_GRANULE_SHIFT,
|
||||
&uncached_get_new_chunk, i);
|
||||
}
|
||||
|
||||
efi_memmap_walk_uc(uncached_build_memmap);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__initcall(uncached_init);
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
unsigned int hpage_shift=HPAGE_SHIFT_DEFAULT;
|
||||
|
||||
static pte_t *
|
||||
pte_t *
|
||||
huge_pte_alloc (struct mm_struct *mm, unsigned long addr)
|
||||
{
|
||||
unsigned long taddr = htlbpage_to_page(addr);
|
||||
|
@ -43,7 +43,7 @@ huge_pte_alloc (struct mm_struct *mm, unsigned long addr)
|
|||
return pte;
|
||||
}
|
||||
|
||||
static pte_t *
|
||||
pte_t *
|
||||
huge_pte_offset (struct mm_struct *mm, unsigned long addr)
|
||||
{
|
||||
unsigned long taddr = htlbpage_to_page(addr);
|
||||
|
@ -67,23 +67,6 @@ huge_pte_offset (struct mm_struct *mm, unsigned long addr)
|
|||
|
||||
#define mk_pte_huge(entry) { pte_val(entry) |= _PAGE_P; }
|
||||
|
||||
static void
|
||||
set_huge_pte (struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
struct page *page, pte_t * page_table, int write_access)
|
||||
{
|
||||
pte_t entry;
|
||||
|
||||
add_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);
|
||||
if (write_access) {
|
||||
entry =
|
||||
pte_mkwrite(pte_mkdirty(mk_pte(page, vma->vm_page_prot)));
|
||||
} else
|
||||
entry = pte_wrprotect(mk_pte(page, vma->vm_page_prot));
|
||||
entry = pte_mkyoung(entry);
|
||||
mk_pte_huge(entry);
|
||||
set_pte(page_table, entry);
|
||||
return;
|
||||
}
|
||||
/*
|
||||
* This function checks for proper alignment of input addr and len parameters.
|
||||
*/
|
||||
|
@ -99,68 +82,6 @@ int is_aligned_hugepage_range(unsigned long addr, unsigned long len)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
|
||||
struct vm_area_struct *vma)
|
||||
{
|
||||
pte_t *src_pte, *dst_pte, entry;
|
||||
struct page *ptepage;
|
||||
unsigned long addr = vma->vm_start;
|
||||
unsigned long end = vma->vm_end;
|
||||
|
||||
while (addr < end) {
|
||||
dst_pte = huge_pte_alloc(dst, addr);
|
||||
if (!dst_pte)
|
||||
goto nomem;
|
||||
src_pte = huge_pte_offset(src, addr);
|
||||
entry = *src_pte;
|
||||
ptepage = pte_page(entry);
|
||||
get_page(ptepage);
|
||||
set_pte(dst_pte, entry);
|
||||
add_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
|
||||
addr += HPAGE_SIZE;
|
||||
}
|
||||
return 0;
|
||||
nomem:
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
int
|
||||
follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
struct page **pages, struct vm_area_struct **vmas,
|
||||
unsigned long *st, int *length, int i)
|
||||
{
|
||||
pte_t *ptep, pte;
|
||||
unsigned long start = *st;
|
||||
unsigned long pstart;
|
||||
int len = *length;
|
||||
struct page *page;
|
||||
|
||||
do {
|
||||
pstart = start & HPAGE_MASK;
|
||||
ptep = huge_pte_offset(mm, start);
|
||||
pte = *ptep;
|
||||
|
||||
back1:
|
||||
page = pte_page(pte);
|
||||
if (pages) {
|
||||
page += ((start & ~HPAGE_MASK) >> PAGE_SHIFT);
|
||||
get_page(page);
|
||||
pages[i] = page;
|
||||
}
|
||||
if (vmas)
|
||||
vmas[i] = vma;
|
||||
i++;
|
||||
len--;
|
||||
start += PAGE_SIZE;
|
||||
if (((start & HPAGE_MASK) == pstart) && len &&
|
||||
(start < vma->vm_end))
|
||||
goto back1;
|
||||
} while (len && start < vma->vm_end);
|
||||
*length = len;
|
||||
*st = start;
|
||||
return i;
|
||||
}
|
||||
|
||||
struct page *follow_huge_addr(struct mm_struct *mm, unsigned long addr, int write)
|
||||
{
|
||||
struct page *page;
|
||||
|
@ -212,81 +133,6 @@ void hugetlb_free_pgd_range(struct mmu_gather **tlb,
|
|||
free_pgd_range(tlb, addr, end, floor, ceiling);
|
||||
}
|
||||
|
||||
void unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
|
||||
{
|
||||
struct mm_struct *mm = vma->vm_mm;
|
||||
unsigned long address;
|
||||
pte_t *pte;
|
||||
struct page *page;
|
||||
|
||||
BUG_ON(start & (HPAGE_SIZE - 1));
|
||||
BUG_ON(end & (HPAGE_SIZE - 1));
|
||||
|
||||
for (address = start; address < end; address += HPAGE_SIZE) {
|
||||
pte = huge_pte_offset(mm, address);
|
||||
if (pte_none(*pte))
|
||||
continue;
|
||||
page = pte_page(*pte);
|
||||
put_page(page);
|
||||
pte_clear(mm, address, pte);
|
||||
}
|
||||
add_mm_counter(mm, rss, - ((end - start) >> PAGE_SHIFT));
|
||||
flush_tlb_range(vma, start, end);
|
||||
}
|
||||
|
||||
int hugetlb_prefault(struct address_space *mapping, struct vm_area_struct *vma)
|
||||
{
|
||||
struct mm_struct *mm = current->mm;
|
||||
unsigned long addr;
|
||||
int ret = 0;
|
||||
|
||||
BUG_ON(vma->vm_start & ~HPAGE_MASK);
|
||||
BUG_ON(vma->vm_end & ~HPAGE_MASK);
|
||||
|
||||
spin_lock(&mm->page_table_lock);
|
||||
for (addr = vma->vm_start; addr < vma->vm_end; addr += HPAGE_SIZE) {
|
||||
unsigned long idx;
|
||||
pte_t *pte = huge_pte_alloc(mm, addr);
|
||||
struct page *page;
|
||||
|
||||
if (!pte) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
if (!pte_none(*pte))
|
||||
continue;
|
||||
|
||||
idx = ((addr - vma->vm_start) >> HPAGE_SHIFT)
|
||||
+ (vma->vm_pgoff >> (HPAGE_SHIFT - PAGE_SHIFT));
|
||||
page = find_get_page(mapping, idx);
|
||||
if (!page) {
|
||||
/* charge the fs quota first */
|
||||
if (hugetlb_get_quota(mapping)) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
page = alloc_huge_page();
|
||||
if (!page) {
|
||||
hugetlb_put_quota(mapping);
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
ret = add_to_page_cache(page, mapping, idx, GFP_ATOMIC);
|
||||
if (! ret) {
|
||||
unlock_page(page);
|
||||
} else {
|
||||
hugetlb_put_quota(mapping);
|
||||
page_cache_release(page);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
set_huge_pte(mm, vma, page, pte, vma->vm_flags & VM_WRITE);
|
||||
}
|
||||
out:
|
||||
spin_unlock(&mm->page_table_lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
|
||||
unsigned long pgoff, unsigned long flags)
|
||||
{
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <linux/cache.h>
|
||||
#include <linux/mmzone.h>
|
||||
#include <linux/nodemask.h>
|
||||
#include <asm/uncached.h>
|
||||
#include <asm/sn/bte.h>
|
||||
#include <asm/sn/intr.h>
|
||||
#include <asm/sn/sn_sal.h>
|
||||
|
@ -183,7 +184,7 @@ xpc_rsvd_page_init(void)
|
|||
* memory protections are never restricted.
|
||||
*/
|
||||
if ((amos_page = xpc_vars->amos_page) == NULL) {
|
||||
amos_page = (AMO_t *) mspec_kalloc_page(0);
|
||||
amos_page = (AMO_t *) TO_AMO(uncached_alloc_page(0));
|
||||
if (amos_page == NULL) {
|
||||
dev_err(xpc_part, "can't allocate page of AMOs\n");
|
||||
return NULL;
|
||||
|
@ -200,7 +201,8 @@ xpc_rsvd_page_init(void)
|
|||
if (ret != 0) {
|
||||
dev_err(xpc_part, "can't change memory "
|
||||
"protections\n");
|
||||
mspec_kfree_page((unsigned long) amos_page);
|
||||
uncached_free_page(__IA64_UNCACHED_OFFSET |
|
||||
TO_PHYS((u64) amos_page));
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -78,6 +78,9 @@ config PLAT_OAKS32R
|
|||
config PLAT_MAPPI2
|
||||
bool "Mappi-II(M3A-ZA36/M3A-ZA52)"
|
||||
|
||||
config PLAT_MAPPI3
|
||||
bool "Mappi-III(M3A-2170)"
|
||||
|
||||
endchoice
|
||||
|
||||
choice
|
||||
|
@ -134,6 +137,7 @@ config BUS_CLOCK
|
|||
int "Bus Clock [Hz] (integer)"
|
||||
default "70000000" if PLAT_MAPPI
|
||||
default "25000000" if PLAT_USRV
|
||||
default "50000000" if PLAT_MAPPI3
|
||||
default "50000000" if PLAT_M32700UT
|
||||
default "50000000" if PLAT_OPSPUT
|
||||
default "33333333" if PLAT_OAKS32R
|
||||
|
@ -149,7 +153,7 @@ config CPU_LITTLE_ENDIAN
|
|||
|
||||
config MEMORY_START
|
||||
hex "Physical memory start address (hex)"
|
||||
default "08000000" if PLAT_MAPPI || PLAT_MAPPI2
|
||||
default "08000000" if PLAT_MAPPI || PLAT_MAPPI2 || PLAT_MAPPI3
|
||||
default "08000000" if PLAT_USRV
|
||||
default "08000000" if PLAT_M32700UT
|
||||
default "08000000" if PLAT_OPSPUT
|
||||
|
@ -157,6 +161,7 @@ config MEMORY_START
|
|||
|
||||
config MEMORY_SIZE
|
||||
hex "Physical memory size (hex)"
|
||||
default "08000000" if PLAT_MAPPI3
|
||||
default "04000000" if PLAT_MAPPI || PLAT_MAPPI2
|
||||
default "02000000" if PLAT_USRV
|
||||
default "01000000" if PLAT_M32700UT
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <asm/processor.h>
|
||||
|
||||
static void putc(char c);
|
||||
|
||||
|
@ -38,16 +39,17 @@ static int puts(const char *s)
|
|||
|
||||
static void putc(char c)
|
||||
{
|
||||
|
||||
while ((*BOOT_SIO0STS & 0x3) != 0x3) ;
|
||||
while ((*BOOT_SIO0STS & 0x3) != 0x3)
|
||||
cpu_relax();
|
||||
if (c == '\n') {
|
||||
*BOOT_SIO0TXB = '\r';
|
||||
while ((*BOOT_SIO0STS & 0x3) != 0x3) ;
|
||||
while ((*BOOT_SIO0STS & 0x3) != 0x3)
|
||||
cpu_relax();
|
||||
}
|
||||
*BOOT_SIO0TXB = c;
|
||||
}
|
||||
#else /* defined(CONFIG_PLAT_M32700UT_Alpha) || defined(CONFIG_PLAT_M32700UT) */
|
||||
#ifdef CONFIG_MMU
|
||||
#else /* !(CONFIG_PLAT_M32700UT_Alpha) && !(CONFIG_PLAT_M32700UT) */
|
||||
#if defined(CONFIG_PLAT_MAPPI2)
|
||||
#define SIO0STS (volatile unsigned short *)(0xa0efd000 + 14)
|
||||
#define SIO0TXB (volatile unsigned short *)(0xa0efd000 + 30)
|
||||
#else
|
||||
|
@ -57,11 +59,12 @@ static void putc(char c)
|
|||
|
||||
static void putc(char c)
|
||||
{
|
||||
|
||||
while ((*SIO0STS & 0x1) == 0) ;
|
||||
while ((*SIO0STS & 0x1) == 0)
|
||||
cpu_relax();
|
||||
if (c == '\n') {
|
||||
*SIO0TXB = '\r';
|
||||
while ((*SIO0STS & 0x1) == 0) ;
|
||||
while ((*SIO0STS & 0x1) == 0)
|
||||
cpu_relax();
|
||||
}
|
||||
*SIO0TXB = c;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc4
|
||||
# Wed Feb 16 21:10:44 2005
|
||||
# Linux kernel version: 2.6.12-rc5
|
||||
# Fri Jun 3 16:20:11 2005
|
||||
#
|
||||
CONFIG_M32R=y
|
||||
# CONFIG_UID16 is not set
|
||||
|
@ -16,6 +16,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -28,13 +29,15 @@ CONFIG_BSD_PROCESS_ACCT=y
|
|||
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
# CONFIG_IKCONFIG_PROC is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -44,6 +47,7 @@ CONFIG_CC_ALIGN_LABELS=0
|
|||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -65,6 +69,7 @@ CONFIG_PLAT_M32700UT=y
|
|||
# CONFIG_PLAT_OPSPUT is not set
|
||||
# CONFIG_PLAT_OAKS32R is not set
|
||||
# CONFIG_PLAT_MAPPI2 is not set
|
||||
# CONFIG_PLAT_MAPPI3 is not set
|
||||
CONFIG_CHIP_M32700=y
|
||||
# CONFIG_CHIP_M32102 is not set
|
||||
# CONFIG_CHIP_VDEC2 is not set
|
||||
|
@ -268,7 +273,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
|
@ -392,18 +396,6 @@ CONFIG_INPUT=y
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -413,6 +405,17 @@ CONFIG_SERIO_SERPORT=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -464,6 +467,10 @@ CONFIG_DS1302=y
|
|||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
|
@ -508,8 +515,14 @@ CONFIG_VIDEO_M32R_AR_M64278=y
|
|||
# Graphics support
|
||||
#
|
||||
CONFIG_FB=y
|
||||
# CONFIG_FB_CFB_FILLRECT is not set
|
||||
# CONFIG_FB_CFB_COPYAREA is not set
|
||||
# CONFIG_FB_CFB_IMAGEBLIT is not set
|
||||
# CONFIG_FB_SOFT_CURSOR is not set
|
||||
# CONFIG_FB_MACMODES is not set
|
||||
# CONFIG_FB_MODE_HELPERS is not set
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
|
||||
#
|
||||
|
@ -542,10 +555,6 @@ CONFIG_LOGO_LINUX_CLUT224=y
|
|||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
|
@ -719,8 +728,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ obj-y := process.o entry.o traps.o align.o irq.o setup.o time.o \
|
|||
obj-$(CONFIG_SMP) += smp.o smpboot.o
|
||||
obj-$(CONFIG_PLAT_MAPPI) += setup_mappi.o io_mappi.o
|
||||
obj-$(CONFIG_PLAT_MAPPI2) += setup_mappi2.o io_mappi2.o
|
||||
obj-$(CONFIG_PLAT_MAPPI3) += setup_mappi3.o io_mappi3.o
|
||||
obj-$(CONFIG_PLAT_USRV) += setup_usrv.o io_usrv.o
|
||||
obj-$(CONFIG_PLAT_M32700UT) += setup_m32700ut.o io_m32700ut.o
|
||||
obj-$(CONFIG_PLAT_OPSPUT) += setup_opsput.o io_opsput.o
|
||||
|
@ -17,4 +18,3 @@ obj-$(CONFIG_MODULES) += module.o
|
|||
obj-$(CONFIG_PLAT_OAKS32R) += setup_oaks32r.o io_oaks32r.o
|
||||
|
||||
EXTRA_AFLAGS := -traditional
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
*
|
||||
* Typical I/O routines for M32700UT board.
|
||||
*
|
||||
* Copyright (c) 2001, 2002 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto, Takeo Takahashi
|
||||
* Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto, Takeo Takahashi
|
||||
*
|
||||
* 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
|
||||
|
@ -172,64 +172,21 @@ unsigned long _inl(unsigned long port)
|
|||
|
||||
unsigned char _inb_p(unsigned long port)
|
||||
{
|
||||
unsigned char v;
|
||||
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
v = _ne_inb(PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
return *(volatile unsigned char *)__port2addr_ata(port);
|
||||
} else
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned char b;
|
||||
pcc_ioread_byte(0, port, &b, sizeof(b), 1, 0);
|
||||
return b;
|
||||
} else
|
||||
#endif
|
||||
v = *(volatile unsigned char *)PORT2ADDR(port);
|
||||
|
||||
unsigned char v = _inb(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned short _inw_p(unsigned long port)
|
||||
{
|
||||
unsigned short v;
|
||||
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
v = _ne_inw(PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
return *(volatile unsigned short *)__port2addr_ata(port);
|
||||
} else
|
||||
#endif
|
||||
#if defined(CONFIG_USB)
|
||||
if(port >= 0x340 && port < 0x3a0)
|
||||
return *(volatile unsigned short *)PORT2ADDR_USB(port);
|
||||
else
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned short w;
|
||||
pcc_ioread_word(0, port, &w, sizeof(w), 1, 0);
|
||||
return w;
|
||||
} else
|
||||
#endif
|
||||
v = *(volatile unsigned short *)PORT2ADDR(port);
|
||||
|
||||
unsigned short v = _inw(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned long _inl_p(unsigned long port)
|
||||
{
|
||||
unsigned long v;
|
||||
|
||||
v = *(volatile unsigned long *)PORT2ADDR(port);
|
||||
unsigned long v = _inl(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
@ -287,52 +244,19 @@ void _outl(unsigned long l, unsigned long port)
|
|||
|
||||
void _outb_p(unsigned char b, unsigned long port)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
_ne_outb(b, PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
*(volatile unsigned char *)__port2addr_ata(port) = b;
|
||||
} else
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_byte(0, port, &b, sizeof(b), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned char *)PORT2ADDR(port) = b;
|
||||
|
||||
_outb(b, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outw_p(unsigned short w, unsigned long port)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
_ne_outw(w, PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
*(volatile unsigned short *)__port2addr_ata(port) = w;
|
||||
} else
|
||||
#endif
|
||||
#if defined(CONFIG_USB)
|
||||
if(port >= 0x340 && port < 0x3a0)
|
||||
*(volatile unsigned short *)PORT2ADDR_USB(port) = w;
|
||||
else
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned short *)PORT2ADDR(port) = w;
|
||||
|
||||
_outw(w, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outl_p(unsigned long l, unsigned long port)
|
||||
{
|
||||
*(volatile unsigned long *)PORT2ADDR(port) = l;
|
||||
_outl(l, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
*
|
||||
* Typical I/O routines for Mappi board.
|
||||
*
|
||||
* Copyright (c) 2001, 2002 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto
|
||||
* Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
|
@ -130,57 +130,21 @@ unsigned long _inl(unsigned long port)
|
|||
|
||||
unsigned char _inb_p(unsigned long port)
|
||||
{
|
||||
unsigned char v;
|
||||
|
||||
if (port >= 0x300 && port < 0x320)
|
||||
v = _ne_inb(PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_PCC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned char b;
|
||||
pcc_ioread(0, port, &b, sizeof(b), 1, 0);
|
||||
return b;
|
||||
} else if (port >= M32R_PCC_IOSTART1 && port <= M32R_PCC_IOEND1) {
|
||||
unsigned char b;
|
||||
pcc_ioread(1, port, &b, sizeof(b), 1, 0);
|
||||
return b;
|
||||
} else
|
||||
#endif
|
||||
v = *(volatile unsigned char *)PORT2ADDR(port);
|
||||
|
||||
unsigned char v = _inb(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned short _inw_p(unsigned long port)
|
||||
{
|
||||
unsigned short v;
|
||||
|
||||
if (port >= 0x300 && port < 0x320)
|
||||
v = _ne_inw(PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_PCC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned short w;
|
||||
pcc_ioread(0, port, &w, sizeof(w), 1, 0);
|
||||
return w;
|
||||
} else if (port >= M32R_PCC_IOSTART1 && port <= M32R_PCC_IOEND1) {
|
||||
unsigned short w;
|
||||
pcc_ioread(1, port, &w, sizeof(w), 1, 0);
|
||||
return w;
|
||||
} else
|
||||
#endif
|
||||
v = *(volatile unsigned short *)PORT2ADDR(port);
|
||||
|
||||
unsigned short v = _inw(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned long _inl_p(unsigned long port)
|
||||
{
|
||||
unsigned long v;
|
||||
|
||||
v = *(volatile unsigned long *)PORT2ADDR(port);
|
||||
unsigned long v = _inl(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
@ -229,41 +193,19 @@ void _outl(unsigned long l, unsigned long port)
|
|||
|
||||
void _outb_p(unsigned char b, unsigned long port)
|
||||
{
|
||||
if (port >= 0x300 && port < 0x320)
|
||||
_ne_outb(b, PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_PCC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite(0, port, &b, sizeof(b), 1, 0);
|
||||
} else if (port >= M32R_PCC_IOSTART1 && port <= M32R_PCC_IOEND1) {
|
||||
pcc_iowrite(1, port, &b, sizeof(b), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned char *)PORT2ADDR(port) = b;
|
||||
|
||||
_outb(b, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outw_p(unsigned short w, unsigned long port)
|
||||
{
|
||||
if (port >= 0x300 && port < 0x320)
|
||||
_ne_outw(w, PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_PCC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite(0, port, &w, sizeof(w), 1, 0);
|
||||
} else if (port >= M32R_PCC_IOSTART1 && port <= M32R_PCC_IOEND1) {
|
||||
pcc_iowrite(1, port, &w, sizeof(w), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned short *)PORT2ADDR(port) = w;
|
||||
|
||||
_outw(w, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outl_p(unsigned long l, unsigned long port)
|
||||
{
|
||||
*(volatile unsigned long *)PORT2ADDR(port) = l;
|
||||
_outl(l, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* Typical I/O routines for Mappi2 board.
|
||||
*
|
||||
* Copyright (c) 2001-2003 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto, Mamoru Sakugawa
|
||||
*/
|
||||
|
||||
|
@ -25,7 +25,7 @@ extern void pcc_ioread_byte(int, unsigned long, void *, size_t, size_t, int);
|
|||
extern void pcc_ioread_word(int, unsigned long, void *, size_t, size_t, int);
|
||||
extern void pcc_iowrite_byte(int, unsigned long, void *, size_t, size_t, int);
|
||||
extern void pcc_iowrite_word(int, unsigned long, void *, size_t, size_t, int);
|
||||
#endif /* CONFIG_PCMCIA && CONFIG_MAPPI2_CFC */
|
||||
#endif /* CONFIG_PCMCIA && CONFIG_M32R_CFC */
|
||||
|
||||
#define PORT2ADDR(port) _port2addr(port)
|
||||
#define PORT2ADDR_NE(port) _port2addr_ne(port)
|
||||
|
@ -169,64 +169,21 @@ unsigned long _inl(unsigned long port)
|
|||
|
||||
unsigned char _inb_p(unsigned long port)
|
||||
{
|
||||
unsigned char v;
|
||||
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
v = _ne_inb(PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
return *(volatile unsigned char *)__port2addr_ata(port);
|
||||
} else
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned char b;
|
||||
pcc_ioread_byte(0, port, &b, sizeof(b), 1, 0);
|
||||
return b;
|
||||
} else
|
||||
#endif
|
||||
v = *(volatile unsigned char *)PORT2ADDR(port);
|
||||
|
||||
unsigned char v = _inb(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned short _inw_p(unsigned long port)
|
||||
{
|
||||
unsigned short v;
|
||||
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
v = _ne_inw(PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
return *(volatile unsigned short *)__port2addr_ata(port);
|
||||
} else
|
||||
#endif
|
||||
#if defined(CONFIG_USB)
|
||||
if (port >= 0x340 && port < 0x3a0)
|
||||
v = *(volatile unsigned short *)PORT2ADDR_USB(port);
|
||||
else
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned short w;
|
||||
pcc_ioread_word(0, port, &w, sizeof(w), 1, 0);
|
||||
return w;
|
||||
} else
|
||||
#endif
|
||||
v = *(volatile unsigned short *)PORT2ADDR(port);
|
||||
|
||||
unsigned short v = _inw(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned long _inl_p(unsigned long port)
|
||||
{
|
||||
unsigned long v;
|
||||
|
||||
v = *(volatile unsigned long *)PORT2ADDR(port);
|
||||
unsigned long v = _inl(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
@ -284,52 +241,19 @@ void _outl(unsigned long l, unsigned long port)
|
|||
|
||||
void _outb_p(unsigned char b, unsigned long port)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
_ne_outb(b, PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
*(volatile unsigned char *)__port2addr_ata(port) = b;
|
||||
} else
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_byte(0, port, &b, sizeof(b), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned char *)PORT2ADDR(port) = b;
|
||||
|
||||
_outb(b, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outw_p(unsigned short w, unsigned long port)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
_ne_outw(w, PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
*(volatile unsigned short *)__port2addr_ata(port) = w;
|
||||
} else
|
||||
#endif
|
||||
#if defined(CONFIG_USB)
|
||||
if (port >= 0x340 && port < 0x3a0)
|
||||
*(volatile unsigned short *)PORT2ADDR_USB(port) = w;
|
||||
else
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned short *)PORT2ADDR(port) = w;
|
||||
|
||||
_outw(w, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outl_p(unsigned long l, unsigned long port)
|
||||
{
|
||||
*(volatile unsigned long *)PORT2ADDR(port) = l;
|
||||
_outl(l, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,378 @@
|
|||
/*
|
||||
* linux/arch/m32r/kernel/io_mappi3.c
|
||||
*
|
||||
* Typical I/O routines for Mappi3 board.
|
||||
*
|
||||
* Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto, Mamoru Sakugawa
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <asm/m32r.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
#include <linux/types.h>
|
||||
|
||||
#define M32R_PCC_IOMAP_SIZE 0x1000
|
||||
|
||||
#define M32R_PCC_IOSTART0 0x1000
|
||||
#define M32R_PCC_IOEND0 (M32R_PCC_IOSTART0 + M32R_PCC_IOMAP_SIZE - 1)
|
||||
|
||||
extern void pcc_ioread_byte(int, unsigned long, void *, size_t, size_t, int);
|
||||
extern void pcc_ioread_word(int, unsigned long, void *, size_t, size_t, int);
|
||||
extern void pcc_iowrite_byte(int, unsigned long, void *, size_t, size_t, int);
|
||||
extern void pcc_iowrite_word(int, unsigned long, void *, size_t, size_t, int);
|
||||
#endif /* CONFIG_PCMCIA && CONFIG_M32R_CFC */
|
||||
|
||||
#define PORT2ADDR(port) _port2addr(port)
|
||||
#define PORT2ADDR_NE(port) _port2addr_ne(port)
|
||||
#define PORT2ADDR_USB(port) _port2addr_usb(port)
|
||||
|
||||
static inline void *_port2addr(unsigned long port)
|
||||
{
|
||||
return (void *)(port + NONCACHE_OFFSET);
|
||||
}
|
||||
|
||||
#define LAN_IOSTART 0x300
|
||||
#define LAN_IOEND 0x320
|
||||
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
static inline void *__port2addr_ata(unsigned long port)
|
||||
{
|
||||
static int dummy_reg;
|
||||
|
||||
switch (port) {
|
||||
case 0x1f0: return (void *)0xb4002000;
|
||||
case 0x1f1: return (void *)0xb4012800;
|
||||
case 0x1f2: return (void *)0xb4012002;
|
||||
case 0x1f3: return (void *)0xb4012802;
|
||||
case 0x1f4: return (void *)0xb4012004;
|
||||
case 0x1f5: return (void *)0xb4012804;
|
||||
case 0x1f6: return (void *)0xb4012006;
|
||||
case 0x1f7: return (void *)0xb4012806;
|
||||
case 0x3f6: return (void *)0xb401200e;
|
||||
default: return (void *)&dummy_reg;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void *_port2addr_ne(unsigned long port)
|
||||
{
|
||||
return (void *)(port + NONCACHE_OFFSET + 0x10000000);
|
||||
}
|
||||
|
||||
static inline void *_port2addr_usb(unsigned long port)
|
||||
{
|
||||
return (void *)(port + NONCACHE_OFFSET + 0x12000000);
|
||||
}
|
||||
static inline void delay(void)
|
||||
{
|
||||
__asm__ __volatile__ ("push r0; \n\t pop r0;" : : :"memory");
|
||||
}
|
||||
|
||||
/*
|
||||
* NIC I/O function
|
||||
*/
|
||||
|
||||
static inline unsigned char _ne_inb(void *portp)
|
||||
{
|
||||
return (unsigned char) *(volatile unsigned char *)portp;
|
||||
}
|
||||
|
||||
static inline unsigned short _ne_inw(void *portp)
|
||||
{
|
||||
return (unsigned short)le16_to_cpu(*(volatile unsigned short *)portp);
|
||||
}
|
||||
|
||||
static inline void _ne_insb(void *portp, void * addr, unsigned long count)
|
||||
{
|
||||
unsigned char *buf = addr;
|
||||
|
||||
while (count--)
|
||||
*buf++ = *(volatile unsigned char *)portp;
|
||||
}
|
||||
|
||||
static inline void _ne_outb(unsigned char b, void *portp)
|
||||
{
|
||||
*(volatile unsigned char *)portp = (unsigned char)b;
|
||||
}
|
||||
|
||||
static inline void _ne_outw(unsigned short w, void *portp)
|
||||
{
|
||||
*(volatile unsigned short *)portp = cpu_to_le16(w);
|
||||
}
|
||||
|
||||
unsigned char _inb(unsigned long port)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
return _ne_inb(PORT2ADDR_NE(port));
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
return *(volatile unsigned char *)__port2addr_ata(port);
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned char b;
|
||||
pcc_ioread_byte(0, port, &b, sizeof(b), 1, 0);
|
||||
return b;
|
||||
} else
|
||||
#endif
|
||||
return *(volatile unsigned char *)PORT2ADDR(port);
|
||||
}
|
||||
|
||||
unsigned short _inw(unsigned long port)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
return _ne_inw(PORT2ADDR_NE(port));
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
return *(volatile unsigned short *)__port2addr_ata(port);
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_USB)
|
||||
else if (port >= 0x340 && port < 0x3a0)
|
||||
return *(volatile unsigned short *)PORT2ADDR_USB(port);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned short w;
|
||||
pcc_ioread_word(0, port, &w, sizeof(w), 1, 0);
|
||||
return w;
|
||||
} else
|
||||
#endif
|
||||
return *(volatile unsigned short *)PORT2ADDR(port);
|
||||
}
|
||||
|
||||
unsigned long _inl(unsigned long port)
|
||||
{
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned long l;
|
||||
pcc_ioread_word(0, port, &l, sizeof(l), 1, 0);
|
||||
return l;
|
||||
} else
|
||||
#endif
|
||||
return *(volatile unsigned long *)PORT2ADDR(port);
|
||||
}
|
||||
|
||||
unsigned char _inb_p(unsigned long port)
|
||||
{
|
||||
unsigned char v = _inb(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned short _inw_p(unsigned long port)
|
||||
{
|
||||
unsigned short v = _inw(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned long _inl_p(unsigned long port)
|
||||
{
|
||||
unsigned long v = _inl(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
void _outb(unsigned char b, unsigned long port)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
_ne_outb(b, PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
*(volatile unsigned char *)__port2addr_ata(port) = b;
|
||||
} else
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_byte(0, port, &b, sizeof(b), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned char *)PORT2ADDR(port) = b;
|
||||
}
|
||||
|
||||
void _outw(unsigned short w, unsigned long port)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
_ne_outw(w, PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
*(volatile unsigned short *)__port2addr_ata(port) = w;
|
||||
} else
|
||||
#endif
|
||||
#if defined(CONFIG_USB)
|
||||
if (port >= 0x340 && port < 0x3a0)
|
||||
*(volatile unsigned short *)PORT2ADDR_USB(port) = w;
|
||||
else
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned short *)PORT2ADDR(port) = w;
|
||||
}
|
||||
|
||||
void _outl(unsigned long l, unsigned long port)
|
||||
{
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_word(0, port, &l, sizeof(l), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned long *)PORT2ADDR(port) = l;
|
||||
}
|
||||
|
||||
void _outb_p(unsigned char b, unsigned long port)
|
||||
{
|
||||
_outb(b, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outw_p(unsigned short w, unsigned long port)
|
||||
{
|
||||
_outw(w, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outl_p(unsigned long l, unsigned long port)
|
||||
{
|
||||
_outl(l, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _insb(unsigned int port, void * addr, unsigned long count)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
_ne_insb(PORT2ADDR_NE(port), addr, count);
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
unsigned char *buf = addr;
|
||||
unsigned char *portp = __port2addr_ata(port);
|
||||
while (count--)
|
||||
*buf++ = *(volatile unsigned char *)portp;
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_ioread_byte(0, port, (void *)addr, sizeof(unsigned char),
|
||||
count, 1);
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
unsigned char *buf = addr;
|
||||
unsigned char *portp = PORT2ADDR(port);
|
||||
while (count--)
|
||||
*buf++ = *(volatile unsigned char *)portp;
|
||||
}
|
||||
}
|
||||
|
||||
void _insw(unsigned int port, void * addr, unsigned long count)
|
||||
{
|
||||
unsigned short *buf = addr;
|
||||
unsigned short *portp;
|
||||
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND) {
|
||||
portp = PORT2ADDR_NE(port);
|
||||
while (count--)
|
||||
*buf++ = *(volatile unsigned short *)portp;
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
} else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_ioread_word(9, port, (void *)addr, sizeof(unsigned short),
|
||||
count, 1);
|
||||
#endif
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
} else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
portp = __port2addr_ata(port);
|
||||
while (count--)
|
||||
*buf++ = *(volatile unsigned short *)portp;
|
||||
#endif
|
||||
} else {
|
||||
portp = PORT2ADDR(port);
|
||||
while (count--)
|
||||
*buf++ = *(volatile unsigned short *)portp;
|
||||
}
|
||||
}
|
||||
|
||||
void _insl(unsigned int port, void * addr, unsigned long count)
|
||||
{
|
||||
unsigned long *buf = addr;
|
||||
unsigned long *portp;
|
||||
|
||||
portp = PORT2ADDR(port);
|
||||
while (count--)
|
||||
*buf++ = *(volatile unsigned long *)portp;
|
||||
}
|
||||
|
||||
void _outsb(unsigned int port, const void * addr, unsigned long count)
|
||||
{
|
||||
const unsigned char *buf = addr;
|
||||
unsigned char *portp;
|
||||
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND) {
|
||||
portp = PORT2ADDR_NE(port);
|
||||
while (count--)
|
||||
_ne_outb(*buf++, portp);
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
} else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
portp = __port2addr_ata(port);
|
||||
while (count--)
|
||||
*(volatile unsigned char *)portp = *buf++;
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
} else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_byte(0, port, (void *)addr, sizeof(unsigned char),
|
||||
count, 1);
|
||||
#endif
|
||||
} else {
|
||||
portp = PORT2ADDR(port);
|
||||
while (count--)
|
||||
*(volatile unsigned char *)portp = *buf++;
|
||||
}
|
||||
}
|
||||
|
||||
void _outsw(unsigned int port, const void * addr, unsigned long count)
|
||||
{
|
||||
const unsigned short *buf = addr;
|
||||
unsigned short *portp;
|
||||
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND) {
|
||||
portp = PORT2ADDR_NE(port);
|
||||
while (count--)
|
||||
*(volatile unsigned short *)portp = *buf++;
|
||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
||||
} else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
||||
portp = __port2addr_ata(port);
|
||||
while (count--)
|
||||
*(volatile unsigned short *)portp = *buf++;
|
||||
#endif
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
} else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_word(9, port, (void *)addr, sizeof(unsigned short),
|
||||
count, 1);
|
||||
#endif
|
||||
} else {
|
||||
portp = PORT2ADDR(port);
|
||||
while (count--)
|
||||
*(volatile unsigned short *)portp = *buf++;
|
||||
}
|
||||
}
|
||||
|
||||
void _outsl(unsigned int port, const void * addr, unsigned long count)
|
||||
{
|
||||
const unsigned long *buf = addr;
|
||||
unsigned char *portp;
|
||||
|
||||
portp = PORT2ADDR(port);
|
||||
while (count--)
|
||||
*(volatile unsigned long *)portp = *buf++;
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* Typical I/O routines for OAKS32R board.
|
||||
*
|
||||
* Copyright (c) 2001-2004 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto, Mamoru Sakugawa
|
||||
*/
|
||||
|
||||
|
@ -90,35 +90,21 @@ unsigned long _inl(unsigned long port)
|
|||
|
||||
unsigned char _inb_p(unsigned long port)
|
||||
{
|
||||
unsigned char v;
|
||||
|
||||
if (port >= 0x300 && port < 0x320)
|
||||
v = _ne_inb(PORT2ADDR_NE(port));
|
||||
else
|
||||
v = *(volatile unsigned char *)PORT2ADDR(port);
|
||||
|
||||
unsigned char v = _inb(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned short _inw_p(unsigned long port)
|
||||
{
|
||||
unsigned short v;
|
||||
|
||||
if (port >= 0x300 && port < 0x320)
|
||||
v = _ne_inw(PORT2ADDR_NE(port));
|
||||
else
|
||||
v = *(volatile unsigned short *)PORT2ADDR(port);
|
||||
|
||||
unsigned short v = _inw(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned long _inl_p(unsigned long port)
|
||||
{
|
||||
unsigned long v;
|
||||
|
||||
v = *(volatile unsigned long *)PORT2ADDR(port);
|
||||
unsigned long v = _inl(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
@ -146,27 +132,19 @@ void _outl(unsigned long l, unsigned long port)
|
|||
|
||||
void _outb_p(unsigned char b, unsigned long port)
|
||||
{
|
||||
if (port >= 0x300 && port < 0x320)
|
||||
_ne_outb(b, PORT2ADDR_NE(port));
|
||||
else
|
||||
*(volatile unsigned char *)PORT2ADDR(port) = b;
|
||||
|
||||
_outb(b, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outw_p(unsigned short w, unsigned long port)
|
||||
{
|
||||
if (port >= 0x300 && port < 0x320)
|
||||
_ne_outw(w, PORT2ADDR_NE(port));
|
||||
else
|
||||
*(volatile unsigned short *)PORT2ADDR(port) = w;
|
||||
|
||||
_outw(w, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outl_p(unsigned long l, unsigned long port)
|
||||
{
|
||||
*(volatile unsigned long *)PORT2ADDR(port) = l;
|
||||
_outl(l, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/*
|
||||
* linux/arch/m32r/kernel/io_mappi.c
|
||||
* linux/arch/m32r/kernel/io_opsput.c
|
||||
*
|
||||
* Typical I/O routines for OPSPUT board.
|
||||
*
|
||||
* Copyright (c) 2001, 2002 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto, Takeo Takahashi
|
||||
* Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto, Takeo Takahashi
|
||||
*
|
||||
* 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
|
||||
|
@ -98,7 +98,6 @@ unsigned char _inb(unsigned long port)
|
|||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
return _ne_inb(PORT2ADDR_NE(port));
|
||||
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned char b;
|
||||
|
@ -118,7 +117,6 @@ unsigned short _inw(unsigned long port)
|
|||
else if(port >= 0x340 && port < 0x3a0)
|
||||
return *(volatile unsigned short *)PORT2ADDR_USB(port);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned short w;
|
||||
|
@ -143,55 +141,21 @@ unsigned long _inl(unsigned long port)
|
|||
|
||||
unsigned char _inb_p(unsigned long port)
|
||||
{
|
||||
unsigned char v;
|
||||
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
v = _ne_inb(PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned char b;
|
||||
pcc_ioread_byte(0, port, &b, sizeof(b), 1, 0);
|
||||
return b;
|
||||
} else
|
||||
#endif
|
||||
v = *(volatile unsigned char *)PORT2ADDR(port);
|
||||
|
||||
unsigned char v = _inb(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned short _inw_p(unsigned long port)
|
||||
{
|
||||
unsigned short v;
|
||||
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
v = _ne_inw(PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_USB)
|
||||
if(port >= 0x340 && port < 0x3a0)
|
||||
return *(volatile unsigned short *)PORT2ADDR_USB(port);
|
||||
else
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
unsigned short w;
|
||||
pcc_ioread_word(0, port, &w, sizeof(w), 1, 0);
|
||||
return w;
|
||||
} else
|
||||
#endif
|
||||
v = *(volatile unsigned short *)PORT2ADDR(port);
|
||||
|
||||
unsigned short v = _inw(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
||||
unsigned long _inl_p(unsigned long port)
|
||||
{
|
||||
unsigned long v;
|
||||
|
||||
v = *(volatile unsigned long *)PORT2ADDR(port);
|
||||
unsigned long v = _inl(port);
|
||||
delay();
|
||||
return (v);
|
||||
}
|
||||
|
@ -219,7 +183,6 @@ void _outw(unsigned short w, unsigned long port)
|
|||
*(volatile unsigned short *)PORT2ADDR_USB(port) = w;
|
||||
else
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
|
||||
|
@ -240,43 +203,19 @@ void _outl(unsigned long l, unsigned long port)
|
|||
|
||||
void _outb_p(unsigned char b, unsigned long port)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
_ne_outb(b, PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_byte(0, port, &b, sizeof(b), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned char *)PORT2ADDR(port) = b;
|
||||
|
||||
_outb(b, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outw_p(unsigned short w, unsigned long port)
|
||||
{
|
||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||
_ne_outw(w, PORT2ADDR_NE(port));
|
||||
else
|
||||
#if defined(CONFIG_USB)
|
||||
if(port >= 0x340 && port < 0x3a0)
|
||||
*(volatile unsigned short *)PORT2ADDR_USB(port) = w;
|
||||
else
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC)
|
||||
if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) {
|
||||
pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
|
||||
} else
|
||||
#endif
|
||||
*(volatile unsigned short *)PORT2ADDR(port) = w;
|
||||
|
||||
_outw(w, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outl_p(unsigned long l, unsigned long port)
|
||||
{
|
||||
*(volatile unsigned long *)PORT2ADDR(port) = l;
|
||||
_outl(l, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
*
|
||||
* Typical I/O routines for uServer board.
|
||||
*
|
||||
* Copyright (c) 2001 - 2003 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto, Takeo Takahashi
|
||||
* Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto, Takeo Takahashi
|
||||
*
|
||||
* 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
|
||||
|
@ -39,7 +39,7 @@ extern void pcc_iowrite_word(int, unsigned long, void *, size_t, size_t, int);
|
|||
|
||||
#define PORT2ADDR(port) _port2addr(port)
|
||||
|
||||
static __inline__ void *_port2addr(unsigned long port)
|
||||
static inline void *_port2addr(unsigned long port)
|
||||
{
|
||||
#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
|
||||
if (port >= UART0_IOSTART && port <= UART0_IOEND)
|
||||
|
@ -50,7 +50,7 @@ static __inline__ void *_port2addr(unsigned long port)
|
|||
return (void *)(port + NONCACHE_OFFSET);
|
||||
}
|
||||
|
||||
static __inline__ void delay(void)
|
||||
static inline void delay(void)
|
||||
{
|
||||
__asm__ __volatile__ ("push r0; \n\t pop r0;" : : :"memory");
|
||||
}
|
||||
|
@ -87,39 +87,22 @@ unsigned long _inl(unsigned long port)
|
|||
|
||||
unsigned char _inb_p(unsigned long port)
|
||||
{
|
||||
unsigned char b;
|
||||
|
||||
if (port >= CFC_IOSTART && port <= CFC_IOEND) {
|
||||
pcc_ioread_byte(0, port, &b, sizeof(b), 1, 0);
|
||||
return b;
|
||||
} else {
|
||||
b = *(volatile unsigned char *)PORT2ADDR(port);
|
||||
delay();
|
||||
return b;
|
||||
}
|
||||
unsigned char v = _inb(port);
|
||||
delay();
|
||||
return v;
|
||||
}
|
||||
|
||||
unsigned short _inw_p(unsigned long port)
|
||||
{
|
||||
unsigned short w;
|
||||
|
||||
if (port >= CFC_IOSTART && port <= CFC_IOEND) {
|
||||
pcc_ioread_word(0, port, &w, sizeof(w), 1, 0);
|
||||
return w;
|
||||
} else {
|
||||
w = *(volatile unsigned short *)PORT2ADDR(port);
|
||||
delay();
|
||||
return w;
|
||||
}
|
||||
unsigned short v = _inw(port);
|
||||
delay();
|
||||
return v;
|
||||
}
|
||||
|
||||
unsigned long _inl_p(unsigned long port)
|
||||
{
|
||||
unsigned long v;
|
||||
|
||||
v = *(volatile unsigned long *)PORT2ADDR(port);
|
||||
unsigned long v = _inl(port);
|
||||
delay();
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
|
@ -149,25 +132,19 @@ void _outl(unsigned long l, unsigned long port)
|
|||
|
||||
void _outb_p(unsigned char b, unsigned long port)
|
||||
{
|
||||
if (port >= CFC_IOSTART && port <= CFC_IOEND)
|
||||
pcc_iowrite_byte(0, port, &b, sizeof(b), 1, 0);
|
||||
else
|
||||
*(volatile unsigned char *)PORT2ADDR(port) = b;
|
||||
_outb(b, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outw_p(unsigned short w, unsigned long port)
|
||||
{
|
||||
if (port >= CFC_IOSTART && port <= CFC_IOEND)
|
||||
pcc_iowrite_word(0, port, &w, sizeof(w), 1, 0);
|
||||
else
|
||||
*(volatile unsigned short *)PORT2ADDR(port) = w;
|
||||
_outw(w, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void _outl_p(unsigned long l, unsigned long port)
|
||||
{
|
||||
*(volatile unsigned long *)PORT2ADDR(port) = l;
|
||||
_outl(l, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
|
|
|
@ -330,6 +330,8 @@ static int show_cpuinfo(struct seq_file *m, void *v)
|
|||
seq_printf(m, "Machine\t\t: Mappi Evaluation board\n");
|
||||
#elif CONFIG_PLAT_MAPPI2
|
||||
seq_printf(m, "Machine\t\t: Mappi-II Evaluation board\n");
|
||||
#elif CONFIG_PLAT_MAPPI3
|
||||
seq_printf(m, "Machine\t\t: Mappi-III Evaluation board\n");
|
||||
#elif CONFIG_PLAT_M32700UT
|
||||
seq_printf(m, "Machine\t\t: M32700UT Evaluation board\n");
|
||||
#elif CONFIG_PLAT_OPSPUT
|
||||
|
|
|
@ -78,13 +78,13 @@ static void shutdown_m32700ut_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type m32700ut_irq_type =
|
||||
{
|
||||
"M32700UT-IRQ",
|
||||
startup_m32700ut_irq,
|
||||
shutdown_m32700ut_irq,
|
||||
enable_m32700ut_irq,
|
||||
disable_m32700ut_irq,
|
||||
mask_and_ack_m32700ut,
|
||||
end_m32700ut_irq
|
||||
.typename = "M32700UT-IRQ",
|
||||
.startup = startup_m32700ut_irq,
|
||||
.shutdown = shutdown_m32700ut_irq,
|
||||
.enable = enable_m32700ut_irq,
|
||||
.disable = disable_m32700ut_irq,
|
||||
.ack = mask_and_ack_m32700ut,
|
||||
.end = end_m32700ut_irq
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -155,13 +155,13 @@ static void shutdown_m32700ut_pld_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type m32700ut_pld_irq_type =
|
||||
{
|
||||
"M32700UT-PLD-IRQ",
|
||||
startup_m32700ut_pld_irq,
|
||||
shutdown_m32700ut_pld_irq,
|
||||
enable_m32700ut_pld_irq,
|
||||
disable_m32700ut_pld_irq,
|
||||
mask_and_ack_m32700ut_pld,
|
||||
end_m32700ut_pld_irq
|
||||
.typename = "M32700UT-PLD-IRQ",
|
||||
.startup = startup_m32700ut_pld_irq,
|
||||
.shutdown = shutdown_m32700ut_pld_irq,
|
||||
.enable = enable_m32700ut_pld_irq,
|
||||
.disable = disable_m32700ut_pld_irq,
|
||||
.ack = mask_and_ack_m32700ut_pld,
|
||||
.end = end_m32700ut_pld_irq
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -224,13 +224,13 @@ static void shutdown_m32700ut_lanpld_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type m32700ut_lanpld_irq_type =
|
||||
{
|
||||
"M32700UT-PLD-LAN-IRQ",
|
||||
startup_m32700ut_lanpld_irq,
|
||||
shutdown_m32700ut_lanpld_irq,
|
||||
enable_m32700ut_lanpld_irq,
|
||||
disable_m32700ut_lanpld_irq,
|
||||
mask_and_ack_m32700ut_lanpld,
|
||||
end_m32700ut_lanpld_irq
|
||||
.typename = "M32700UT-PLD-LAN-IRQ",
|
||||
.startup = startup_m32700ut_lanpld_irq,
|
||||
.shutdown = shutdown_m32700ut_lanpld_irq,
|
||||
.enable = enable_m32700ut_lanpld_irq,
|
||||
.disable = disable_m32700ut_lanpld_irq,
|
||||
.ack = mask_and_ack_m32700ut_lanpld,
|
||||
.end = end_m32700ut_lanpld_irq
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -293,13 +293,13 @@ static void shutdown_m32700ut_lcdpld_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type m32700ut_lcdpld_irq_type =
|
||||
{
|
||||
"M32700UT-PLD-LCD-IRQ",
|
||||
startup_m32700ut_lcdpld_irq,
|
||||
shutdown_m32700ut_lcdpld_irq,
|
||||
enable_m32700ut_lcdpld_irq,
|
||||
disable_m32700ut_lcdpld_irq,
|
||||
mask_and_ack_m32700ut_lcdpld,
|
||||
end_m32700ut_lcdpld_irq
|
||||
.typename = "M32700UT-PLD-LCD-IRQ",
|
||||
.startup = startup_m32700ut_lcdpld_irq,
|
||||
.shutdown = shutdown_m32700ut_lcdpld_irq,
|
||||
.enable = enable_m32700ut_lcdpld_irq,
|
||||
.disable = disable_m32700ut_lcdpld_irq,
|
||||
.ack = mask_and_ack_m32700ut_lcdpld,
|
||||
.end = end_m32700ut_lcdpld_irq
|
||||
};
|
||||
|
||||
void __init init_IRQ(void)
|
||||
|
|
|
@ -70,13 +70,13 @@ static void shutdown_mappi_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type mappi_irq_type =
|
||||
{
|
||||
"MAPPI-IRQ",
|
||||
startup_mappi_irq,
|
||||
shutdown_mappi_irq,
|
||||
enable_mappi_irq,
|
||||
disable_mappi_irq,
|
||||
mask_and_ack_mappi,
|
||||
end_mappi_irq
|
||||
.typename = "MAPPI-IRQ",
|
||||
.startup = startup_mappi_irq,
|
||||
.shutdown = shutdown_mappi_irq,
|
||||
.enable = enable_mappi_irq,
|
||||
.disable = disable_mappi_irq,
|
||||
.ack = mask_and_ack_mappi,
|
||||
.end = end_mappi_irq
|
||||
};
|
||||
|
||||
void __init init_IRQ(void)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* linux/arch/m32r/kernel/setup_mappi.c
|
||||
* linux/arch/m32r/kernel/setup_mappi2.c
|
||||
*
|
||||
* Setup routines for Renesas MAPPI-II(M3A-ZA36) Board
|
||||
*
|
||||
|
@ -79,13 +79,13 @@ static void shutdown_mappi2_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type mappi2_irq_type =
|
||||
{
|
||||
"MAPPI2-IRQ",
|
||||
startup_mappi2_irq,
|
||||
shutdown_mappi2_irq,
|
||||
enable_mappi2_irq,
|
||||
disable_mappi2_irq,
|
||||
mask_and_ack_mappi2,
|
||||
end_mappi2_irq
|
||||
.typename = "MAPPI2-IRQ",
|
||||
.startup = startup_mappi2_irq,
|
||||
.shutdown = shutdown_mappi2_irq,
|
||||
.enable = enable_mappi2_irq,
|
||||
.disable = disable_mappi2_irq,
|
||||
.ack = mask_and_ack_mappi2,
|
||||
.end = end_mappi2_irq
|
||||
};
|
||||
|
||||
void __init init_IRQ(void)
|
||||
|
@ -156,7 +156,6 @@ void __init init_IRQ(void)
|
|||
irq_desc[PLD_IRQ_CFIREQ].handler = &mappi2_irq_type;
|
||||
irq_desc[PLD_IRQ_CFIREQ].action = 0;
|
||||
irq_desc[PLD_IRQ_CFIREQ].depth = 1; /* disable nested irq */
|
||||
// icu_data[PLD_IRQ_CFIREQ].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD00;
|
||||
icu_data[PLD_IRQ_CFIREQ].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD01;
|
||||
disable_mappi2_irq(PLD_IRQ_CFIREQ);
|
||||
|
||||
|
@ -167,7 +166,6 @@ void __init init_IRQ(void)
|
|||
irq_desc[PLD_IRQ_CFC_INSERT].action = 0;
|
||||
irq_desc[PLD_IRQ_CFC_INSERT].depth = 1; /* disable nested irq */
|
||||
icu_data[PLD_IRQ_CFC_INSERT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD00;
|
||||
// icu_data[PLD_IRQ_CFC_INSERT].icucr = 0;
|
||||
disable_mappi2_irq(PLD_IRQ_CFC_INSERT);
|
||||
|
||||
/* ICUCR42: CFC Eject */
|
||||
|
@ -176,9 +174,7 @@ void __init init_IRQ(void)
|
|||
irq_desc[PLD_IRQ_CFC_EJECT].action = 0;
|
||||
irq_desc[PLD_IRQ_CFC_EJECT].depth = 1; /* disable nested irq */
|
||||
icu_data[PLD_IRQ_CFC_EJECT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10;
|
||||
// icu_data[PLD_IRQ_CFC_EJECT].icucr = 0;
|
||||
disable_mappi2_irq(PLD_IRQ_CFC_EJECT);
|
||||
|
||||
#endif /* CONFIG_MAPPI2_CFC */
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,208 @@
|
|||
/*
|
||||
* linux/arch/m32r/kernel/setup_mappi3.c
|
||||
*
|
||||
* Setup routines for Renesas MAPPI-III(M3A-2170) Board
|
||||
*
|
||||
* Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata,
|
||||
* Hitoshi Yamamoto, Mamoru Sakugawa
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/device.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
#include <asm/m32r.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
#define irq2port(x) (M32R_ICU_CR1_PORTL + ((x - 1) * sizeof(unsigned long)))
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
typedef struct {
|
||||
unsigned long icucr; /* ICU Control Register */
|
||||
} icu_data_t;
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
icu_data_t icu_data[NR_IRQS];
|
||||
|
||||
static void disable_mappi3_irq(unsigned int irq)
|
||||
{
|
||||
unsigned long port, data;
|
||||
|
||||
if ((irq == 0) ||(irq >= NR_IRQS)) {
|
||||
printk("bad irq 0x%08x\n", irq);
|
||||
return;
|
||||
}
|
||||
port = irq2port(irq);
|
||||
data = icu_data[irq].icucr|M32R_ICUCR_ILEVEL7;
|
||||
outl(data, port);
|
||||
}
|
||||
|
||||
static void enable_mappi3_irq(unsigned int irq)
|
||||
{
|
||||
unsigned long port, data;
|
||||
|
||||
if ((irq == 0) ||(irq >= NR_IRQS)) {
|
||||
printk("bad irq 0x%08x\n", irq);
|
||||
return;
|
||||
}
|
||||
port = irq2port(irq);
|
||||
data = icu_data[irq].icucr|M32R_ICUCR_IEN|M32R_ICUCR_ILEVEL6;
|
||||
outl(data, port);
|
||||
}
|
||||
|
||||
static void mask_and_ack_mappi3(unsigned int irq)
|
||||
{
|
||||
disable_mappi3_irq(irq);
|
||||
}
|
||||
|
||||
static void end_mappi3_irq(unsigned int irq)
|
||||
{
|
||||
enable_mappi3_irq(irq);
|
||||
}
|
||||
|
||||
static unsigned int startup_mappi3_irq(unsigned int irq)
|
||||
{
|
||||
enable_mappi3_irq(irq);
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void shutdown_mappi3_irq(unsigned int irq)
|
||||
{
|
||||
unsigned long port;
|
||||
|
||||
port = irq2port(irq);
|
||||
outl(M32R_ICUCR_ILEVEL7, port);
|
||||
}
|
||||
|
||||
static struct hw_interrupt_type mappi3_irq_type =
|
||||
{
|
||||
.typename = "MAPPI3-IRQ",
|
||||
.startup = startup_mappi3_irq,
|
||||
.shutdown = shutdown_mappi3_irq,
|
||||
.enable = enable_mappi3_irq,
|
||||
.disable = disable_mappi3_irq,
|
||||
.ack = mask_and_ack_mappi3,
|
||||
.end = end_mappi3_irq
|
||||
};
|
||||
|
||||
void __init init_IRQ(void)
|
||||
{
|
||||
#if defined(CONFIG_SMC91X)
|
||||
/* INT0 : LAN controller (SMC91111) */
|
||||
irq_desc[M32R_IRQ_INT0].status = IRQ_DISABLED;
|
||||
irq_desc[M32R_IRQ_INT0].handler = &mappi3_irq_type;
|
||||
irq_desc[M32R_IRQ_INT0].action = 0;
|
||||
irq_desc[M32R_IRQ_INT0].depth = 1;
|
||||
icu_data[M32R_IRQ_INT0].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10;
|
||||
disable_mappi3_irq(M32R_IRQ_INT0);
|
||||
#endif /* CONFIG_SMC91X */
|
||||
|
||||
/* MFT2 : system timer */
|
||||
irq_desc[M32R_IRQ_MFT2].status = IRQ_DISABLED;
|
||||
irq_desc[M32R_IRQ_MFT2].handler = &mappi3_irq_type;
|
||||
irq_desc[M32R_IRQ_MFT2].action = 0;
|
||||
irq_desc[M32R_IRQ_MFT2].depth = 1;
|
||||
icu_data[M32R_IRQ_MFT2].icucr = M32R_ICUCR_IEN;
|
||||
disable_mappi3_irq(M32R_IRQ_MFT2);
|
||||
|
||||
#ifdef CONFIG_SERIAL_M32R_SIO
|
||||
/* SIO0_R : uart receive data */
|
||||
irq_desc[M32R_IRQ_SIO0_R].status = IRQ_DISABLED;
|
||||
irq_desc[M32R_IRQ_SIO0_R].handler = &mappi3_irq_type;
|
||||
irq_desc[M32R_IRQ_SIO0_R].action = 0;
|
||||
irq_desc[M32R_IRQ_SIO0_R].depth = 1;
|
||||
icu_data[M32R_IRQ_SIO0_R].icucr = 0;
|
||||
disable_mappi3_irq(M32R_IRQ_SIO0_R);
|
||||
|
||||
/* SIO0_S : uart send data */
|
||||
irq_desc[M32R_IRQ_SIO0_S].status = IRQ_DISABLED;
|
||||
irq_desc[M32R_IRQ_SIO0_S].handler = &mappi3_irq_type;
|
||||
irq_desc[M32R_IRQ_SIO0_S].action = 0;
|
||||
irq_desc[M32R_IRQ_SIO0_S].depth = 1;
|
||||
icu_data[M32R_IRQ_SIO0_S].icucr = 0;
|
||||
disable_mappi3_irq(M32R_IRQ_SIO0_S);
|
||||
/* SIO1_R : uart receive data */
|
||||
irq_desc[M32R_IRQ_SIO1_R].status = IRQ_DISABLED;
|
||||
irq_desc[M32R_IRQ_SIO1_R].handler = &mappi3_irq_type;
|
||||
irq_desc[M32R_IRQ_SIO1_R].action = 0;
|
||||
irq_desc[M32R_IRQ_SIO1_R].depth = 1;
|
||||
icu_data[M32R_IRQ_SIO1_R].icucr = 0;
|
||||
disable_mappi3_irq(M32R_IRQ_SIO1_R);
|
||||
|
||||
/* SIO1_S : uart send data */
|
||||
irq_desc[M32R_IRQ_SIO1_S].status = IRQ_DISABLED;
|
||||
irq_desc[M32R_IRQ_SIO1_S].handler = &mappi3_irq_type;
|
||||
irq_desc[M32R_IRQ_SIO1_S].action = 0;
|
||||
irq_desc[M32R_IRQ_SIO1_S].depth = 1;
|
||||
icu_data[M32R_IRQ_SIO1_S].icucr = 0;
|
||||
disable_mappi3_irq(M32R_IRQ_SIO1_S);
|
||||
#endif /* CONFIG_M32R_USE_DBG_CONSOLE */
|
||||
|
||||
#if defined(CONFIG_USB)
|
||||
/* INT1 : USB Host controller interrupt */
|
||||
irq_desc[M32R_IRQ_INT1].status = IRQ_DISABLED;
|
||||
irq_desc[M32R_IRQ_INT1].handler = &mappi3_irq_type;
|
||||
irq_desc[M32R_IRQ_INT1].action = 0;
|
||||
irq_desc[M32R_IRQ_INT1].depth = 1;
|
||||
icu_data[M32R_IRQ_INT1].icucr = M32R_ICUCR_ISMOD01;
|
||||
disable_mappi3_irq(M32R_IRQ_INT1);
|
||||
#endif /* CONFIG_USB */
|
||||
|
||||
/* ICUCR40: CFC IREQ */
|
||||
irq_desc[PLD_IRQ_CFIREQ].status = IRQ_DISABLED;
|
||||
irq_desc[PLD_IRQ_CFIREQ].handler = &mappi3_irq_type;
|
||||
irq_desc[PLD_IRQ_CFIREQ].action = 0;
|
||||
irq_desc[PLD_IRQ_CFIREQ].depth = 1; /* disable nested irq */
|
||||
icu_data[PLD_IRQ_CFIREQ].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD01;
|
||||
disable_mappi3_irq(PLD_IRQ_CFIREQ);
|
||||
|
||||
#if defined(CONFIG_M32R_CFC)
|
||||
/* ICUCR41: CFC Insert */
|
||||
irq_desc[PLD_IRQ_CFC_INSERT].status = IRQ_DISABLED;
|
||||
irq_desc[PLD_IRQ_CFC_INSERT].handler = &mappi3_irq_type;
|
||||
irq_desc[PLD_IRQ_CFC_INSERT].action = 0;
|
||||
irq_desc[PLD_IRQ_CFC_INSERT].depth = 1; /* disable nested irq */
|
||||
icu_data[PLD_IRQ_CFC_INSERT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD00;
|
||||
disable_mappi3_irq(PLD_IRQ_CFC_INSERT);
|
||||
|
||||
/* ICUCR42: CFC Eject */
|
||||
irq_desc[PLD_IRQ_CFC_EJECT].status = IRQ_DISABLED;
|
||||
irq_desc[PLD_IRQ_CFC_EJECT].handler = &mappi3_irq_type;
|
||||
irq_desc[PLD_IRQ_CFC_EJECT].action = 0;
|
||||
irq_desc[PLD_IRQ_CFC_EJECT].depth = 1; /* disable nested irq */
|
||||
icu_data[PLD_IRQ_CFC_EJECT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10;
|
||||
disable_mappi3_irq(PLD_IRQ_CFC_EJECT);
|
||||
#endif /* CONFIG_M32R_CFC */
|
||||
}
|
||||
|
||||
#define LAN_IOSTART 0x300
|
||||
#define LAN_IOEND 0x320
|
||||
static struct resource smc91x_resources[] = {
|
||||
[0] = {
|
||||
.start = (LAN_IOSTART),
|
||||
.end = (LAN_IOEND),
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = M32R_IRQ_INT0,
|
||||
.end = M32R_IRQ_INT0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device smc91x_device = {
|
||||
.name = "smc91x",
|
||||
.id = 0,
|
||||
.num_resources = ARRAY_SIZE(smc91x_resources),
|
||||
.resource = smc91x_resources,
|
||||
};
|
||||
|
||||
static int __init platform_init(void)
|
||||
{
|
||||
platform_device_register(&smc91x_device);
|
||||
return 0;
|
||||
}
|
||||
arch_initcall(platform_init);
|
|
@ -70,13 +70,13 @@ static void shutdown_oaks32r_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type oaks32r_irq_type =
|
||||
{
|
||||
"OAKS32R-IRQ",
|
||||
startup_oaks32r_irq,
|
||||
shutdown_oaks32r_irq,
|
||||
enable_oaks32r_irq,
|
||||
disable_oaks32r_irq,
|
||||
mask_and_ack_mappi,
|
||||
end_oaks32r_irq
|
||||
.typename = "OAKS32R-IRQ",
|
||||
.startup = startup_oaks32r_irq,
|
||||
.shutdown = shutdown_oaks32r_irq,
|
||||
.enable = enable_oaks32r_irq,
|
||||
.disable = disable_oaks32r_irq,
|
||||
.ack = mask_and_ack_mappi,
|
||||
.end = end_oaks32r_irq
|
||||
};
|
||||
|
||||
void __init init_IRQ(void)
|
||||
|
|
|
@ -79,13 +79,13 @@ static void shutdown_opsput_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type opsput_irq_type =
|
||||
{
|
||||
"OPSPUT-IRQ",
|
||||
startup_opsput_irq,
|
||||
shutdown_opsput_irq,
|
||||
enable_opsput_irq,
|
||||
disable_opsput_irq,
|
||||
mask_and_ack_opsput,
|
||||
end_opsput_irq
|
||||
.typename = "OPSPUT-IRQ",
|
||||
.startup = startup_opsput_irq,
|
||||
.shutdown = shutdown_opsput_irq,
|
||||
.enable = enable_opsput_irq,
|
||||
.disable = disable_opsput_irq,
|
||||
.ack = mask_and_ack_opsput,
|
||||
.end = end_opsput_irq
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -156,13 +156,13 @@ static void shutdown_opsput_pld_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type opsput_pld_irq_type =
|
||||
{
|
||||
"OPSPUT-PLD-IRQ",
|
||||
startup_opsput_pld_irq,
|
||||
shutdown_opsput_pld_irq,
|
||||
enable_opsput_pld_irq,
|
||||
disable_opsput_pld_irq,
|
||||
mask_and_ack_opsput_pld,
|
||||
end_opsput_pld_irq
|
||||
.typename = "OPSPUT-PLD-IRQ",
|
||||
.startup = startup_opsput_pld_irq,
|
||||
.shutdown = shutdown_opsput_pld_irq,
|
||||
.enable = enable_opsput_pld_irq,
|
||||
.disable = disable_opsput_pld_irq,
|
||||
.ack = mask_and_ack_opsput_pld,
|
||||
.end = end_opsput_pld_irq
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -70,13 +70,13 @@ static void shutdown_mappi_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type mappi_irq_type =
|
||||
{
|
||||
"M32700-IRQ",
|
||||
startup_mappi_irq,
|
||||
shutdown_mappi_irq,
|
||||
enable_mappi_irq,
|
||||
disable_mappi_irq,
|
||||
mask_and_ack_mappi,
|
||||
end_mappi_irq
|
||||
.typename = "M32700-IRQ",
|
||||
.startup = startup_mappi_irq,
|
||||
.shutdown = shutdown_mappi_irq,
|
||||
.enable = enable_mappi_irq,
|
||||
.disable = disable_mappi_irq,
|
||||
.ack = mask_and_ack_mappi,
|
||||
.end = end_mappi_irq
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -143,13 +143,13 @@ static void shutdown_m32700ut_pld_irq(unsigned int irq)
|
|||
|
||||
static struct hw_interrupt_type m32700ut_pld_irq_type =
|
||||
{
|
||||
"USRV-PLD-IRQ",
|
||||
startup_m32700ut_pld_irq,
|
||||
shutdown_m32700ut_pld_irq,
|
||||
enable_m32700ut_pld_irq,
|
||||
disable_m32700ut_pld_irq,
|
||||
mask_and_ack_m32700ut_pld,
|
||||
end_m32700ut_pld_irq
|
||||
.typename = "USRV-PLD-IRQ",
|
||||
.startup = startup_m32700ut_pld_irq,
|
||||
.shutdown = shutdown_m32700ut_pld_irq,
|
||||
.enable = enable_m32700ut_pld_irq,
|
||||
.disable = disable_m32700ut_pld_irq,
|
||||
.ack = mask_and_ack_m32700ut_pld,
|
||||
.end = end_m32700ut_pld_irq
|
||||
};
|
||||
|
||||
void __init init_IRQ(void)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc4
|
||||
# Wed Feb 16 21:10:50 2005
|
||||
# Linux kernel version: 2.6.12-rc5
|
||||
# Fri Jun 3 16:20:58 2005
|
||||
#
|
||||
CONFIG_M32R=y
|
||||
# CONFIG_UID16 is not set
|
||||
|
@ -15,6 +15,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -27,13 +28,16 @@ CONFIG_BSD_PROCESS_ACCT=y
|
|||
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=15
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
# CONFIG_IKCONFIG_PROC is not set
|
||||
# CONFIG_CPUSETS is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -43,6 +47,7 @@ CONFIG_CC_ALIGN_LABELS=0
|
|||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -65,6 +70,7 @@ CONFIG_PLAT_M32700UT=y
|
|||
# CONFIG_PLAT_OPSPUT is not set
|
||||
# CONFIG_PLAT_OAKS32R is not set
|
||||
# CONFIG_PLAT_MAPPI2 is not set
|
||||
# CONFIG_PLAT_MAPPI3 is not set
|
||||
CONFIG_CHIP_M32700=y
|
||||
# CONFIG_CHIP_M32102 is not set
|
||||
# CONFIG_CHIP_VDEC2 is not set
|
||||
|
@ -271,7 +277,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
|
@ -395,18 +400,6 @@ CONFIG_INPUT=y
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -416,6 +409,17 @@ CONFIG_SERIO_SERPORT=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -467,6 +471,10 @@ CONFIG_DS1302=y
|
|||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
|
@ -511,8 +519,14 @@ CONFIG_VIDEO_M32R_AR_M64278=y
|
|||
# Graphics support
|
||||
#
|
||||
CONFIG_FB=y
|
||||
# CONFIG_FB_CFB_FILLRECT is not set
|
||||
# CONFIG_FB_CFB_COPYAREA is not set
|
||||
# CONFIG_FB_CFB_IMAGEBLIT is not set
|
||||
# CONFIG_FB_SOFT_CURSOR is not set
|
||||
# CONFIG_FB_MACMODES is not set
|
||||
# CONFIG_FB_MODE_HELPERS is not set
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
|
||||
#
|
||||
|
@ -545,10 +559,6 @@ CONFIG_LOGO_LINUX_CLUT224=y
|
|||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
|
@ -722,8 +732,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_LOG_BUF_SHIFT=15
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc4
|
||||
# Wed Feb 16 21:10:54 2005
|
||||
# Linux kernel version: 2.6.12-rc5
|
||||
# Fri Jun 3 16:21:34 2005
|
||||
#
|
||||
CONFIG_M32R=y
|
||||
# CONFIG_UID16 is not set
|
||||
|
@ -16,6 +16,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -28,13 +29,15 @@ CONFIG_BSD_PROCESS_ACCT=y
|
|||
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
# CONFIG_IKCONFIG_PROC is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -44,6 +47,7 @@ CONFIG_CC_ALIGN_LABELS=0
|
|||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -65,6 +69,7 @@ CONFIG_PLAT_M32700UT=y
|
|||
# CONFIG_PLAT_OPSPUT is not set
|
||||
# CONFIG_PLAT_OAKS32R is not set
|
||||
# CONFIG_PLAT_MAPPI2 is not set
|
||||
# CONFIG_PLAT_MAPPI3 is not set
|
||||
CONFIG_CHIP_M32700=y
|
||||
# CONFIG_CHIP_M32102 is not set
|
||||
# CONFIG_CHIP_VDEC2 is not set
|
||||
|
@ -268,7 +273,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
|
@ -392,18 +396,6 @@ CONFIG_INPUT=y
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -413,6 +405,17 @@ CONFIG_SERIO_SERPORT=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -464,6 +467,10 @@ CONFIG_DS1302=y
|
|||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
|
@ -508,8 +515,14 @@ CONFIG_VIDEO_M32R_AR_M64278=y
|
|||
# Graphics support
|
||||
#
|
||||
CONFIG_FB=y
|
||||
# CONFIG_FB_CFB_FILLRECT is not set
|
||||
# CONFIG_FB_CFB_COPYAREA is not set
|
||||
# CONFIG_FB_CFB_IMAGEBLIT is not set
|
||||
# CONFIG_FB_SOFT_CURSOR is not set
|
||||
# CONFIG_FB_MACMODES is not set
|
||||
# CONFIG_FB_MODE_HELPERS is not set
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
|
||||
#
|
||||
|
@ -542,10 +555,6 @@ CONFIG_LOGO_LINUX_CLUT224=y
|
|||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
|
@ -719,8 +728,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc4
|
||||
# Wed Feb 16 21:10:57 2005
|
||||
# Linux kernel version: 2.6.12-rc5
|
||||
# Fri Jun 3 16:21:46 2005
|
||||
#
|
||||
CONFIG_M32R=y
|
||||
# CONFIG_UID16 is not set
|
||||
|
@ -16,6 +16,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -26,13 +27,15 @@ CONFIG_BSD_PROCESS_ACCT=y
|
|||
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
# CONFIG_IKCONFIG_PROC is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -41,6 +44,7 @@ CONFIG_CC_ALIGN_LABELS=0
|
|||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
CONFIG_TINY_SHMEM=y
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -62,6 +66,7 @@ CONFIG_PLAT_MAPPI=y
|
|||
# CONFIG_PLAT_OPSPUT is not set
|
||||
# CONFIG_PLAT_OAKS32R is not set
|
||||
# CONFIG_PLAT_MAPPI2 is not set
|
||||
# CONFIG_PLAT_MAPPI3 is not set
|
||||
CONFIG_CHIP_M32700=y
|
||||
# CONFIG_CHIP_M32102 is not set
|
||||
# CONFIG_CHIP_VDEC2 is not set
|
||||
|
@ -202,7 +207,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
|
@ -324,18 +328,6 @@ CONFIG_INPUT=y
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -345,6 +337,17 @@ CONFIG_SERIO_SERPORT=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -393,6 +396,10 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
|
@ -433,10 +440,6 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
|
@ -595,8 +598,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc4
|
||||
# Wed Feb 16 21:11:02 2005
|
||||
# Linux kernel version: 2.6.12-rc5
|
||||
# Fri Jun 3 16:21:52 2005
|
||||
#
|
||||
CONFIG_M32R=y
|
||||
# CONFIG_UID16 is not set
|
||||
|
@ -17,6 +17,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_BROKEN=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -28,13 +29,16 @@ CONFIG_SYSVIPC=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=15
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -44,6 +48,7 @@ CONFIG_CC_ALIGN_LABELS=0
|
|||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -66,6 +71,7 @@ CONFIG_PLAT_MAPPI=y
|
|||
# CONFIG_PLAT_OPSPUT is not set
|
||||
# CONFIG_PLAT_OAKS32R is not set
|
||||
# CONFIG_PLAT_MAPPI2 is not set
|
||||
# CONFIG_PLAT_MAPPI3 is not set
|
||||
CONFIG_CHIP_M32700=y
|
||||
# CONFIG_CHIP_M32102 is not set
|
||||
# CONFIG_CHIP_VDEC2 is not set
|
||||
|
@ -139,8 +145,8 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
|||
#
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
|
||||
# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
|
||||
|
@ -294,7 +300,6 @@ CONFIG_NET=y
|
|||
# Networking options
|
||||
#
|
||||
# CONFIG_PACKET is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
|
@ -419,18 +424,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -440,6 +433,17 @@ CONFIG_SERIO=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -488,6 +492,10 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
|
@ -528,10 +536,6 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
|
@ -708,8 +712,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_LOG_BUF_SHIFT=15
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc4
|
||||
# Wed Feb 16 21:11:07 2005
|
||||
# Linux kernel version: 2.6.12-rc5
|
||||
# Fri Jun 3 16:21:59 2005
|
||||
#
|
||||
CONFIG_M32R=y
|
||||
# CONFIG_UID16 is not set
|
||||
|
@ -17,6 +17,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_BROKEN=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -28,13 +29,15 @@ CONFIG_SYSVIPC=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -44,6 +47,7 @@ CONFIG_CC_ALIGN_LABELS=0
|
|||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -65,6 +69,7 @@ CONFIG_PLAT_MAPPI=y
|
|||
# CONFIG_PLAT_OPSPUT is not set
|
||||
# CONFIG_PLAT_OAKS32R is not set
|
||||
# CONFIG_PLAT_MAPPI2 is not set
|
||||
# CONFIG_PLAT_MAPPI3 is not set
|
||||
CONFIG_CHIP_M32700=y
|
||||
# CONFIG_CHIP_M32102 is not set
|
||||
# CONFIG_CHIP_VDEC2 is not set
|
||||
|
@ -135,8 +140,8 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
|||
#
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
|
||||
# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
|
||||
|
@ -290,7 +295,6 @@ CONFIG_NET=y
|
|||
# Networking options
|
||||
#
|
||||
# CONFIG_PACKET is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
|
@ -415,18 +419,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -436,6 +428,17 @@ CONFIG_SERIO=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -484,6 +487,10 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
|
@ -524,10 +531,6 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
|
@ -704,8 +707,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc4
|
||||
# Wed Feb 16 21:11:10 2005
|
||||
# Linux kernel version: 2.6.12-rc5
|
||||
# Fri Jun 3 16:22:02 2005
|
||||
#
|
||||
CONFIG_M32R=y
|
||||
# CONFIG_UID16 is not set
|
||||
|
@ -16,6 +16,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -28,13 +29,15 @@ CONFIG_BSD_PROCESS_ACCT=y
|
|||
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
# CONFIG_IKCONFIG_PROC is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -44,6 +47,7 @@ CONFIG_CC_ALIGN_LABELS=0
|
|||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -65,6 +69,7 @@ CONFIG_KMOD=y
|
|||
# CONFIG_PLAT_OPSPUT is not set
|
||||
# CONFIG_PLAT_OAKS32R is not set
|
||||
CONFIG_PLAT_MAPPI2=y
|
||||
# CONFIG_PLAT_MAPPI3 is not set
|
||||
# CONFIG_CHIP_M32700 is not set
|
||||
# CONFIG_CHIP_M32102 is not set
|
||||
CONFIG_CHIP_VDEC2=y
|
||||
|
@ -264,7 +269,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
|
@ -388,18 +392,6 @@ CONFIG_INPUT=y
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -409,6 +401,17 @@ CONFIG_SERIO_SERPORT=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -459,6 +462,10 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
|
@ -520,10 +527,6 @@ CONFIG_DUMMY_CONSOLE=y
|
|||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
|
@ -697,8 +700,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
|
||||
|
|
|
@ -0,0 +1,751 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc5
|
||||
# Tue May 31 17:55:34 2005
|
||||
#
|
||||
CONFIG_M32R=y
|
||||
# CONFIG_UID16 is not set
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_CLEAN_COMPILE is not set
|
||||
CONFIG_BROKEN=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
CONFIG_OBSOLETE_MODPARM=y
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_STOP_MACHINE=y
|
||||
|
||||
#
|
||||
# Processor type and features
|
||||
#
|
||||
# CONFIG_PLAT_MAPPI is not set
|
||||
# CONFIG_PLAT_USRV is not set
|
||||
# CONFIG_PLAT_M32700UT is not set
|
||||
# CONFIG_PLAT_OPSPUT is not set
|
||||
# CONFIG_PLAT_OAKS32R is not set
|
||||
# CONFIG_PLAT_MAPPI2 is not set
|
||||
CONFIG_PLAT_MAPPI3=y
|
||||
CONFIG_CHIP_M32700=y
|
||||
# CONFIG_CHIP_M32102 is not set
|
||||
# CONFIG_CHIP_VDEC2 is not set
|
||||
# CONFIG_CHIP_OPSP is not set
|
||||
CONFIG_MMU=y
|
||||
CONFIG_TLB_ENTRIES=32
|
||||
CONFIG_ISA_M32R2=y
|
||||
CONFIG_ISA_DSP_LEVEL2=y
|
||||
CONFIG_ISA_DUAL_ISSUE=y
|
||||
CONFIG_BUS_CLOCK=10000000
|
||||
CONFIG_TIMER_DIVIDE=128
|
||||
# CONFIG_CPU_LITTLE_ENDIAN is not set
|
||||
CONFIG_MEMORY_START=0x08000000
|
||||
CONFIG_MEMORY_SIZE=0x08000000
|
||||
CONFIG_NOHIGHMEM=y
|
||||
CONFIG_DISCONTIGMEM=y
|
||||
CONFIG_IRAM_START=0x00f00000
|
||||
CONFIG_IRAM_SIZE=0x00080000
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_PREEMPT=y
|
||||
# CONFIG_HAVE_DEC_LOCK is not set
|
||||
CONFIG_SMP=y
|
||||
# CONFIG_CHIP_M32700_TS1 is not set
|
||||
CONFIG_NR_CPUS=2
|
||||
# CONFIG_NUMA is not set
|
||||
|
||||
#
|
||||
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
|
||||
#
|
||||
# CONFIG_PCI is not set
|
||||
# CONFIG_ISA is not set
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
CONFIG_PCCARD=y
|
||||
# CONFIG_PCMCIA_DEBUG is not set
|
||||
CONFIG_PCMCIA=y
|
||||
|
||||
#
|
||||
# PC-card bridges
|
||||
#
|
||||
# CONFIG_TCIC is not set
|
||||
# CONFIG_M32R_PCC is not set
|
||||
# CONFIG_M32R_CFC is not set
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=y
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
|
||||
# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
|
||||
# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
|
||||
# CONFIG_MTD_CMDLINE_PARTS is not set
|
||||
|
||||
#
|
||||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
# CONFIG_FTL is not set
|
||||
# CONFIG_NFTL is not set
|
||||
# CONFIG_INFTL is not set
|
||||
|
||||
#
|
||||
# RAM/ROM/Flash chip drivers
|
||||
#
|
||||
# CONFIG_MTD_CFI is not set
|
||||
# CONFIG_MTD_JEDECPROBE is not set
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
# CONFIG_MTD_CFI_I4 is not set
|
||||
# CONFIG_MTD_CFI_I8 is not set
|
||||
# CONFIG_MTD_RAM is not set
|
||||
# CONFIG_MTD_ROM is not set
|
||||
# CONFIG_MTD_ABSENT is not set
|
||||
# CONFIG_MTD_OBSOLETE_CHIPS is not set
|
||||
|
||||
#
|
||||
# Mapping drivers for chip access
|
||||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
#
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
# CONFIG_MTD_PHRAM is not set
|
||||
# CONFIG_MTD_MTDRAM is not set
|
||||
# CONFIG_MTD_BLKMTD is not set
|
||||
# CONFIG_MTD_BLOCK2MTD is not set
|
||||
|
||||
#
|
||||
# Disk-On-Chip Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_DOC2000 is not set
|
||||
# CONFIG_MTD_DOC2001 is not set
|
||||
# CONFIG_MTD_DOC2001PLUS is not set
|
||||
|
||||
#
|
||||
# NAND Flash Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_NAND is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
#
|
||||
# CONFIG_PARPORT is not set
|
||||
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
|
||||
CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
# CONFIG_IOSCHED_AS is not set
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
#
|
||||
CONFIG_IDE=y
|
||||
CONFIG_BLK_DEV_IDE=y
|
||||
|
||||
#
|
||||
# Please see Documentation/ide.txt for help/info on IDE drives
|
||||
#
|
||||
# CONFIG_BLK_DEV_IDE_SATA is not set
|
||||
CONFIG_BLK_DEV_IDEDISK=y
|
||||
# CONFIG_IDEDISK_MULTI_MODE is not set
|
||||
CONFIG_BLK_DEV_IDECS=y
|
||||
CONFIG_BLK_DEV_IDECD=m
|
||||
# CONFIG_BLK_DEV_IDETAPE is not set
|
||||
# CONFIG_BLK_DEV_IDEFLOPPY is not set
|
||||
# CONFIG_IDE_TASK_IOCTL is not set
|
||||
|
||||
#
|
||||
# IDE chipset support/bugfixes
|
||||
#
|
||||
CONFIG_IDE_GENERIC=y
|
||||
# CONFIG_IDE_ARM is not set
|
||||
# CONFIG_BLK_DEV_IDEDMA is not set
|
||||
# CONFIG_IDEDMA_AUTO is not set
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_SCSI is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
# CONFIG_IEEE1394 is not set
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
#
|
||||
|
||||
#
|
||||
# Networking support
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
# CONFIG_PACKET is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
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_TUNNEL is not set
|
||||
CONFIG_IP_TCPDIAG=y
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP 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_NET_DIVERT 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
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_SMC91X=y
|
||||
# CONFIG_NE2000 is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
#
|
||||
|
||||
#
|
||||
# Wireless LAN (non-hamradio)
|
||||
#
|
||||
# CONFIG_NET_RADIO is not set
|
||||
|
||||
#
|
||||
# PCMCIA network device support
|
||||
#
|
||||
# CONFIG_NET_PCMCIA is not set
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
#
|
||||
# CONFIG_ISDN is not set
|
||||
|
||||
#
|
||||
# Telephony Support
|
||||
#
|
||||
# CONFIG_PHONE is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_TSDEV 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_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_SERIAL_M32R_SIO=y
|
||||
CONFIG_SERIAL_M32R_SIO_CONSOLE=y
|
||||
# CONFIG_SERIAL_M32R_PLDSIO is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
||||
#
|
||||
# IPMI
|
||||
#
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_DRM is not set
|
||||
|
||||
#
|
||||
# PCMCIA character devices
|
||||
#
|
||||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
# CONFIG_DVB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_FB is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
#
|
||||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card support
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# InfiniBand support
|
||||
#
|
||||
# CONFIG_INFINIBAND is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_XATTR=y
|
||||
# CONFIG_EXT3_FS_POSIX_ACL is not set
|
||||
# CONFIG_EXT3_FS_SECURITY is not set
|
||||
CONFIG_JBD=y
|
||||
# CONFIG_JBD_DEBUG is not set
|
||||
CONFIG_FS_MBCACHE=y
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
CONFIG_ISO9660_FS=y
|
||||
# CONFIG_JOLIET is not set
|
||||
# CONFIG_ZISOFS is not set
|
||||
# CONFIG_UDF_FS is not set
|
||||
|
||||
#
|
||||
# DOS/FAT/NT Filesystems
|
||||
#
|
||||
CONFIG_FAT_FS=m
|
||||
CONFIG_MSDOS_FS=m
|
||||
CONFIG_VFAT_FS=m
|
||||
CONFIG_FAT_DEFAULT_CODEPAGE=437
|
||||
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
# CONFIG_NTFS_FS is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_DEVFS_FS=y
|
||||
CONFIG_DEVFS_MOUNT=y
|
||||
# CONFIG_DEVFS_DEBUG is not set
|
||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_XATTR is not set
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
|
||||
#
|
||||
# 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_JFFS_FS=y
|
||||
CONFIG_JFFS_FS_VERBOSE=0
|
||||
CONFIG_JFFS_PROC_FS=y
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
# CONFIG_JFFS2_FS_NAND is not set
|
||||
# CONFIG_JFFS2_FS_NOR_ECC is not set
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN 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
|
||||
|
||||
#
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
# CONFIG_NFS_V4 is not set
|
||||
# CONFIG_NFS_DIRECTIO is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
# CONFIG_CIFS is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
# 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
|
||||
# CONFIG_NLS_CODEPAGE_737 is not set
|
||||
# CONFIG_NLS_CODEPAGE_775 is not set
|
||||
# CONFIG_NLS_CODEPAGE_850 is not set
|
||||
# CONFIG_NLS_CODEPAGE_852 is not set
|
||||
# CONFIG_NLS_CODEPAGE_855 is not set
|
||||
# CONFIG_NLS_CODEPAGE_857 is not set
|
||||
# CONFIG_NLS_CODEPAGE_860 is not set
|
||||
# CONFIG_NLS_CODEPAGE_861 is not set
|
||||
# CONFIG_NLS_CODEPAGE_862 is not set
|
||||
# CONFIG_NLS_CODEPAGE_863 is not set
|
||||
# CONFIG_NLS_CODEPAGE_864 is not set
|
||||
# CONFIG_NLS_CODEPAGE_865 is not set
|
||||
# CONFIG_NLS_CODEPAGE_866 is not set
|
||||
# CONFIG_NLS_CODEPAGE_869 is not set
|
||||
# CONFIG_NLS_CODEPAGE_936 is not set
|
||||
# CONFIG_NLS_CODEPAGE_950 is not set
|
||||
# CONFIG_NLS_CODEPAGE_932 is not set
|
||||
# CONFIG_NLS_CODEPAGE_949 is not set
|
||||
# CONFIG_NLS_CODEPAGE_874 is not set
|
||||
# CONFIG_NLS_ISO8859_8 is not set
|
||||
# CONFIG_NLS_CODEPAGE_1250 is not set
|
||||
# CONFIG_NLS_CODEPAGE_1251 is not set
|
||||
# CONFIG_NLS_ASCII is not set
|
||||
# CONFIG_NLS_ISO8859_1 is not set
|
||||
# CONFIG_NLS_ISO8859_2 is not set
|
||||
# CONFIG_NLS_ISO8859_3 is not set
|
||||
# CONFIG_NLS_ISO8859_4 is not set
|
||||
# CONFIG_NLS_ISO8859_5 is not set
|
||||
# CONFIG_NLS_ISO8859_6 is not set
|
||||
# CONFIG_NLS_ISO8859_7 is not set
|
||||
# CONFIG_NLS_ISO8859_9 is not set
|
||||
# CONFIG_NLS_ISO8859_13 is not set
|
||||
# CONFIG_NLS_ISO8859_14 is not set
|
||||
# CONFIG_NLS_ISO8859_15 is not set
|
||||
# CONFIG_NLS_KOI8_R is not set
|
||||
# CONFIG_NLS_KOI8_U is not set
|
||||
# CONFIG_NLS_UTF8 is not set
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
#
|
||||
# CONFIG_PROFILING is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_LOG_BUF_SHIFT=15
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
|
@ -0,0 +1,224 @@
|
|||
# .gdbinit file
|
||||
# $Id: dot.gdbinit,v 1.1 2005/04/11 02:21:08 sakugawa Exp $
|
||||
|
||||
# setting
|
||||
set width 0d70
|
||||
set radix 0d16
|
||||
use_debug_dma
|
||||
|
||||
# Initialize SDRAM controller for Mappi
|
||||
define sdram_init
|
||||
# SDIR0
|
||||
set *(unsigned long *)0x00ef6008 = 0x00000182
|
||||
# SDIR1
|
||||
set *(unsigned long *)0x00ef600c = 0x00000001
|
||||
# Initialize wait
|
||||
shell sleep 0.1
|
||||
# MOD
|
||||
set *(unsigned long *)0x00ef602c = 0x00000020
|
||||
set *(unsigned long *)0x00ef604c = 0x00000020
|
||||
# TR
|
||||
set *(unsigned long *)0x00ef6028 = 0x00051502
|
||||
set *(unsigned long *)0x00ef6048 = 0x00051502
|
||||
# ADR
|
||||
set *(unsigned long *)0x00ef6020 = 0x08000004
|
||||
set *(unsigned long *)0x00ef6040 = 0x0c000004
|
||||
# AutoRef On
|
||||
set *(unsigned long *)0x00ef6004 = 0x00010517
|
||||
# Access enable
|
||||
set *(unsigned long *)0x00ef6024 = 0x00000001
|
||||
set *(unsigned long *)0x00ef6044 = 0x00000001
|
||||
end
|
||||
|
||||
# Initialize LAN controller for Mappi
|
||||
define lanc_init
|
||||
# Set BSEL4
|
||||
#set *(unsigned long *)0x00ef5004 = 0x0fff330f
|
||||
#set *(unsigned long *)0x00ef5004 = 0x01113301
|
||||
|
||||
# set *(unsigned long *)0x00ef5004 = 0x02011101
|
||||
# set *(unsigned long *)0x00ef5004 = 0x04441104
|
||||
end
|
||||
|
||||
define clock_init
|
||||
set *(unsigned long *)0x00ef4010 = 2
|
||||
set *(unsigned long *)0x00ef4014 = 2
|
||||
set *(unsigned long *)0x00ef4020 = 3
|
||||
set *(unsigned long *)0x00ef4024 = 3
|
||||
set *(unsigned long *)0x00ef4004 = 0x7
|
||||
# shell sleep 0.1
|
||||
# set *(unsigned long *)0x00ef4004 = 0x5
|
||||
shell sleep 0.1
|
||||
set *(unsigned long *)0x00ef4008 = 0x0200
|
||||
end
|
||||
|
||||
define port_init
|
||||
set $sfrbase = 0x00ef0000
|
||||
set *(unsigned short *)0x00ef1060 = 0x5555
|
||||
set *(unsigned short *)0x00ef1062 = 0x5555
|
||||
set *(unsigned short *)0x00ef1064 = 0x5555
|
||||
set *(unsigned short *)0x00ef1066 = 0x5555
|
||||
set *(unsigned short *)0x00ef1068 = 0x5555
|
||||
set *(unsigned short *)0x00ef106a = 0x0000
|
||||
set *(unsigned short *)0x00ef106e = 0x5555
|
||||
set *(unsigned short *)0x00ef1070 = 0x5555
|
||||
end
|
||||
|
||||
# MMU enable
|
||||
define mmu_enable
|
||||
set $evb=0x88000000
|
||||
set *(unsigned long *)0xffff0024=1
|
||||
end
|
||||
|
||||
# MMU disable
|
||||
define mmu_disable
|
||||
set $evb=0
|
||||
set *(unsigned long *)0xffff0024=0
|
||||
end
|
||||
|
||||
# Show TLB entries
|
||||
define show_tlb_entries
|
||||
set $i = 0
|
||||
set $addr = $arg0
|
||||
while ($i < 0d16 )
|
||||
set $tlb_tag = *(unsigned long*)$addr
|
||||
set $tlb_data = *(unsigned long*)($addr + 4)
|
||||
printf " [%2d] 0x%08lx : 0x%08lx - 0x%08lx\n", $i, $addr, $tlb_tag, $tlb_data
|
||||
set $i = $i + 1
|
||||
set $addr = $addr + 8
|
||||
end
|
||||
end
|
||||
define itlb
|
||||
set $itlb=0xfe000000
|
||||
show_tlb_entries $itlb
|
||||
end
|
||||
define dtlb
|
||||
set $dtlb=0xfe000800
|
||||
show_tlb_entries $dtlb
|
||||
end
|
||||
|
||||
# Cache ON
|
||||
define set_cache_type
|
||||
set $mctype = (void*)0xfffffff8
|
||||
# chaos
|
||||
# set *(unsigned long *)($mctype) = 0x0000c000
|
||||
# m32102 i-cache only
|
||||
set *(unsigned long *)($mctype) = 0x00008000
|
||||
# m32102 d-cache only
|
||||
# set *(unsigned long *)($mctype) = 0x00004000
|
||||
end
|
||||
define cache_on
|
||||
set $param = (void*)0x08001000
|
||||
set *(unsigned long *)($param) = 0x60ff6102
|
||||
end
|
||||
|
||||
|
||||
# Show current task structure
|
||||
define show_current
|
||||
set $current = $spi & 0xffffe000
|
||||
printf "$current=0x%08lX\n",$current
|
||||
print *(struct task_struct *)$current
|
||||
end
|
||||
|
||||
# Show user assigned task structure
|
||||
define show_task
|
||||
set $task = $arg0 & 0xffffe000
|
||||
printf "$task=0x%08lX\n",$task
|
||||
print *(struct task_struct *)$task
|
||||
end
|
||||
document show_task
|
||||
Show user assigned task structure
|
||||
arg0 : task structure address
|
||||
end
|
||||
|
||||
# Show M32R registers
|
||||
define show_regs
|
||||
printf " R0[0x%08lX] R1[0x%08lX] R2[0x%08lX] R3[0x%08lX]\n",$r0,$r1,$r2,$r3
|
||||
printf " R4[0x%08lX] R5[0x%08lX] R6[0x%08lX] R7[0x%08lX]\n",$r4,$r5,$r6,$r7
|
||||
printf " R8[0x%08lX] R9[0x%08lX] R10[0x%08lX] R11[0x%08lX]\n",$r8,$r9,$r10,$r11
|
||||
printf "R12[0x%08lX] FP[0x%08lX] LR[0x%08lX] SP[0x%08lX]\n",$r12,$fp,$lr,$sp
|
||||
printf "PSW[0x%08lX] CBR[0x%08lX] SPI[0x%08lX] SPU[0x%08lX]\n",$psw,$cbr,$spi,$spu
|
||||
printf "BPC[0x%08lX] PC[0x%08lX] ACCL[0x%08lX] ACCH[0x%08lX]\n",$bpc,$pc,$accl,$acch
|
||||
printf "EVB[0x%08lX]\n",$evb
|
||||
|
||||
set $mests = *(unsigned long *)0xffff000c
|
||||
set $mdeva = *(unsigned long *)0xffff0010
|
||||
printf "MESTS[0x%08lX] MDEVA[0x%08lX]\n",$mests,$mdeva
|
||||
end
|
||||
|
||||
|
||||
# Setup all
|
||||
define setup
|
||||
clock_init
|
||||
shell sleep 0.1
|
||||
port_init
|
||||
sdram_init
|
||||
# lanc_init
|
||||
# dispc_init
|
||||
# set $evb=0x08000000
|
||||
end
|
||||
|
||||
# Load modules
|
||||
define load_modules
|
||||
use_debug_dma
|
||||
load
|
||||
# load busybox.mot
|
||||
end
|
||||
|
||||
# Set kernel parameters
|
||||
define set_kernel_parameters
|
||||
set $param = (void*)0x08001000
|
||||
|
||||
## MOUNT_ROOT_RDONLY
|
||||
set {long}($param+0x00)=0
|
||||
## RAMDISK_FLAGS
|
||||
#set {long}($param+0x04)=0
|
||||
## ORIG_ROOT_DEV
|
||||
#set {long}($param+0x08)=0x00000100
|
||||
## LOADER_TYPE
|
||||
#set {long}($param+0x0C)=0
|
||||
## INITRD_START
|
||||
set {long}($param+0x10)=0x082a0000
|
||||
## INITRD_SIZE
|
||||
set {long}($param+0x14)=0d6200000
|
||||
|
||||
# M32R_CPUCLK
|
||||
set *(unsigned long *)($param + 0x0018) = 0d100000000
|
||||
# M32R_BUSCLK
|
||||
set *(unsigned long *)($param + 0x001c) = 0d50000000
|
||||
# M32R_TIMER_DIVIDE
|
||||
set *(unsigned long *)($param + 0x0020) = 0d128
|
||||
|
||||
|
||||
set {char[0x200]}($param + 0x100) = "console=ttyS0,115200n8x root=/dev/nfsroot nfsroot=192.168.0.1:/project/m32r-linux/export/root.2.6_04 nfsaddrs=192.168.0.102:192.168.0.1:192.168.0.1:255.255.255.0:mappi: \0"
|
||||
|
||||
|
||||
end
|
||||
|
||||
# Boot
|
||||
define boot
|
||||
set_kernel_parameters
|
||||
debug_chaos
|
||||
set *(unsigned long *)0x00f00000=0x08002000
|
||||
set $pc=0x08002000
|
||||
set $fp=0
|
||||
del b
|
||||
si
|
||||
end
|
||||
|
||||
# Restart
|
||||
define restart
|
||||
sdireset
|
||||
sdireset
|
||||
setup
|
||||
load_modules
|
||||
boot
|
||||
end
|
||||
|
||||
sdireset
|
||||
sdireset
|
||||
file vmlinux
|
||||
target m32rsdi
|
||||
|
||||
restart
|
||||
boot
|
|
@ -1,10 +1,8 @@
|
|||
/*
|
||||
* linux/arch/i386/mm/extable.c
|
||||
* linux/arch/m32r/mm/extable.c
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
int fixup_exception(struct pt_regs *regs)
|
||||
|
@ -19,4 +17,3 @@ int fixup_exception(struct pt_regs *regs)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc4
|
||||
# Wed Feb 16 21:11:13 2005
|
||||
# Linux kernel version: 2.6.12-rc5
|
||||
# Fri Jun 3 16:22:04 2005
|
||||
#
|
||||
CONFIG_M32R=y
|
||||
# CONFIG_UID16 is not set
|
||||
|
@ -16,6 +16,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -26,12 +27,14 @@ CONFIG_BSD_PROCESS_ACCT=y
|
|||
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -40,6 +43,7 @@ CONFIG_CC_ALIGN_LABELS=0
|
|||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
CONFIG_TINY_SHMEM=y
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -61,6 +65,7 @@ CONFIG_KMOD=y
|
|||
# CONFIG_PLAT_OPSPUT is not set
|
||||
CONFIG_PLAT_OAKS32R=y
|
||||
# CONFIG_PLAT_MAPPI2 is not set
|
||||
# CONFIG_PLAT_MAPPI3 is not set
|
||||
# CONFIG_CHIP_M32700 is not set
|
||||
CONFIG_CHIP_M32102=y
|
||||
# CONFIG_CHIP_VDEC2 is not set
|
||||
|
@ -91,10 +96,6 @@ CONFIG_PREEMPT=y
|
|||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# PC-card bridges
|
||||
#
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
|
@ -193,7 +194,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
|
@ -310,18 +310,6 @@ CONFIG_INPUT=y
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -331,6 +319,17 @@ CONFIG_SERIO_SERPORT=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -374,6 +373,10 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_DRM is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
|
@ -414,10 +417,6 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
|
@ -574,8 +573,9 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc4
|
||||
# Wed Feb 16 21:11:41 2005
|
||||
# Linux kernel version: 2.6.12-rc5
|
||||
# Fri Jun 3 16:22:06 2005
|
||||
#
|
||||
CONFIG_M32R=y
|
||||
# CONFIG_UID16 is not set
|
||||
|
@ -15,6 +15,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -27,13 +28,15 @@ CONFIG_BSD_PROCESS_ACCT=y
|
|||
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
# CONFIG_IKCONFIG_PROC is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -43,6 +46,7 @@ CONFIG_CC_ALIGN_LABELS=0
|
|||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -64,6 +68,7 @@ CONFIG_KMOD=y
|
|||
CONFIG_PLAT_OPSPUT=y
|
||||
# CONFIG_PLAT_OAKS32R is not set
|
||||
# CONFIG_PLAT_MAPPI2 is not set
|
||||
# CONFIG_PLAT_MAPPI3 is not set
|
||||
# CONFIG_CHIP_M32700 is not set
|
||||
# CONFIG_CHIP_M32102 is not set
|
||||
# CONFIG_CHIP_VDEC2 is not set
|
||||
|
@ -243,7 +248,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
|
@ -367,18 +371,6 @@ CONFIG_INPUT=y
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -388,6 +380,17 @@ CONFIG_SERIO_SERPORT=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -437,6 +440,10 @@ CONFIG_DS1302=y
|
|||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
|
@ -477,10 +484,6 @@ CONFIG_DS1302=y
|
|||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
|
@ -654,8 +657,10 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
|
|
|
@ -232,7 +232,6 @@ void __init mem_init(void)
|
|||
#ifdef CONFIG_LIMITED_DMA
|
||||
set_page_address(page, lowmem_page_address(page));
|
||||
#endif
|
||||
set_bit(PG_highmem, &page->flags);
|
||||
set_page_count(page, 1);
|
||||
__free_page(page);
|
||||
totalhigh_pages++;
|
||||
|
|
|
@ -826,11 +826,6 @@ config MPC10X_BRIDGE
|
|||
depends on PCORE || POWERPMC250 || LOPEC || SANDPOINT
|
||||
default y
|
||||
|
||||
config FSL_OCP
|
||||
bool
|
||||
depends on MPC10X_BRIDGE
|
||||
default y
|
||||
|
||||
config MPC10X_OPENPIC
|
||||
bool
|
||||
depends on POWERPMC250 || LOPEC || SANDPOINT
|
||||
|
|
|
@ -58,9 +58,6 @@ SECTIONS
|
|||
*(.ramdisk)
|
||||
__ramdisk_end = .;
|
||||
. = ALIGN(4096);
|
||||
__sysmap_begin = .;
|
||||
*(.sysmap)
|
||||
__sysmap_end = .;
|
||||
CONSTRUCTORS
|
||||
}
|
||||
_edata = .;
|
||||
|
|
|
@ -54,13 +54,10 @@ $(images)/ramdisk.image.gz:
|
|||
@echo ' RAM disk image must be provided separately'
|
||||
@/bin/false
|
||||
|
||||
objcpxmon-$(CONFIG_XMON) := --add-section=.sysmap=System.map \
|
||||
--set-section-flags=.sysmap=contents,alloc,load,readonly,data
|
||||
quiet_cmd_genimage = GEN $@
|
||||
cmd_genimage = $(OBJCOPY) -R .comment \
|
||||
--add-section=.image=$(images)/vmlinux.gz \
|
||||
--set-section-flags=.image=contents,alloc,load,readonly,data \
|
||||
$(objcpxmon-y) $< $@
|
||||
--set-section-flags=.image=contents,alloc,load,readonly,data $< $@
|
||||
|
||||
targets += image.o
|
||||
$(obj)/image.o: $(obj)/dummy.o $(images)/vmlinux.gz FORCE
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
#include <asm/page.h>
|
||||
|
||||
/* Information from the linker */
|
||||
extern char __sysmap_begin, __sysmap_end;
|
||||
|
||||
extern int strcmp(const char *s1, const char *s2);
|
||||
extern char *avail_ram, *avail_high;
|
||||
|
@ -116,14 +115,8 @@ void gunzip(void *dst, int dstlen, unsigned char *src, int *lenp)
|
|||
void make_bi_recs(unsigned long addr, char *name, unsigned int mach,
|
||||
unsigned long progend)
|
||||
{
|
||||
unsigned long sysmap_size;
|
||||
struct bi_record *rec;
|
||||
|
||||
/* Figure out the size of a possible System.map we're going to
|
||||
* pass along.
|
||||
* */
|
||||
sysmap_size = (unsigned long)(&__sysmap_end) -
|
||||
(unsigned long)(&__sysmap_begin);
|
||||
|
||||
/* leave a 1MB gap then align to the next 1MB boundary */
|
||||
addr = _ALIGN(addr+ (1<<20) - 1, (1<<20));
|
||||
|
@ -147,15 +140,6 @@ void make_bi_recs(unsigned long addr, char *name, unsigned int mach,
|
|||
rec->size = sizeof(struct bi_record) + 2 * sizeof(unsigned long);
|
||||
rec = (struct bi_record *)((unsigned long)rec + rec->size);
|
||||
|
||||
if (sysmap_size) {
|
||||
rec->tag = BI_SYSMAP;
|
||||
rec->data[0] = (unsigned long)(&__sysmap_begin);
|
||||
rec->data[1] = sysmap_size;
|
||||
rec->size = sizeof(struct bi_record) + 2 *
|
||||
sizeof(unsigned long);
|
||||
rec = (struct bi_record *)((unsigned long)rec + rec->size);
|
||||
}
|
||||
|
||||
rec->tag = BI_LAST;
|
||||
rec->size = sizeof(struct bi_record);
|
||||
rec = (struct bi_record *)((unsigned long)rec + rec->size);
|
||||
|
|
|
@ -203,7 +203,7 @@ $(obj)/zvmlinux: $(OBJS) $(LIBS) $(srctree)/$(boot)/ld.script \
|
|||
$(obj)/dummy.o $(obj)/image.o
|
||||
$(LD) $(LD_ARGS) -o $@ $(OBJS) $(obj)/image.o $(LIBS)
|
||||
$(OBJCOPY) $(OBJCOPY_ARGS) $@ $@ -R .comment -R .stab \
|
||||
-R .stabstr -R .ramdisk -R .sysmap
|
||||
-R .stabstr -R .ramdisk
|
||||
|
||||
$(obj)/zvmlinux.initrd: $(OBJS) $(LIBS) $(srctree)/$(boot)/ld.script \
|
||||
$(images)/vmlinux.gz $(obj)/dummy.o
|
||||
|
@ -215,7 +215,7 @@ $(obj)/zvmlinux.initrd: $(OBJS) $(LIBS) $(srctree)/$(boot)/ld.script \
|
|||
$(obj)/dummy.o $(obj)/image.o
|
||||
$(LD) $(LD_ARGS) -o $@ $(OBJS) $(obj)/image.o $(LIBS)
|
||||
$(OBJCOPY) $(OBJCOPY_ARGS) $@ $@ -R .comment -R .stab \
|
||||
-R .stabstr -R .sysmap
|
||||
-R .stabstr
|
||||
|
||||
# Sort-of dummy rules, that let us format the image we want.
|
||||
zImage: $(images)/$(zimage-y) $(obj)/zvmlinux
|
||||
|
|
|
@ -1,186 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <byteswap.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
void xlate( char * inb, char * trb, unsigned len )
|
||||
{
|
||||
unsigned i;
|
||||
for ( i=0; i<len; ++i ) {
|
||||
char c = *inb++;
|
||||
char c1 = c >> 4;
|
||||
char c2 = c & 0xf;
|
||||
if ( c1 > 9 )
|
||||
c1 = c1 + 'A' - 10;
|
||||
else
|
||||
c1 = c1 + '0';
|
||||
if ( c2 > 9 )
|
||||
c2 = c2 + 'A' - 10;
|
||||
else
|
||||
c2 = c2 + '0';
|
||||
*trb++ = c1;
|
||||
*trb++ = c2;
|
||||
}
|
||||
*trb = 0;
|
||||
}
|
||||
|
||||
#define ElfHeaderSize (64 * 1024)
|
||||
#define ElfPages (ElfHeaderSize / 4096)
|
||||
#define KERNELBASE (0xc0000000)
|
||||
|
||||
void get4k( /*istream *inf*/FILE *file, char *buf )
|
||||
{
|
||||
unsigned j;
|
||||
unsigned num = fread(buf, 1, 4096, file);
|
||||
for ( j=num; j<4096; ++j )
|
||||
buf[j] = 0;
|
||||
}
|
||||
|
||||
void put4k( /*ostream *outf*/FILE *file, char *buf )
|
||||
{
|
||||
fwrite(buf, 1, 4096, file);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char inbuf[4096];
|
||||
FILE *ramDisk = NULL;
|
||||
FILE *inputVmlinux = NULL;
|
||||
FILE *outputVmlinux = NULL;
|
||||
unsigned i = 0;
|
||||
unsigned long ramFileLen = 0;
|
||||
unsigned long ramLen = 0;
|
||||
unsigned long roundR = 0;
|
||||
unsigned long kernelLen = 0;
|
||||
unsigned long actualKernelLen = 0;
|
||||
unsigned long round = 0;
|
||||
unsigned long roundedKernelLen = 0;
|
||||
unsigned long ramStartOffs = 0;
|
||||
unsigned long ramPages = 0;
|
||||
unsigned long roundedKernelPages = 0;
|
||||
if ( argc < 2 ) {
|
||||
printf("Name of System Map file missing.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ( argc < 3 ) {
|
||||
printf("Name of vmlinux file missing.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ( argc < 4 ) {
|
||||
printf("Name of vmlinux output file missing.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ramDisk = fopen(argv[1], "r");
|
||||
if ( ! ramDisk ) {
|
||||
printf("System Map file \"%s\" failed to open.\n", argv[1]);
|
||||
exit(1);
|
||||
}
|
||||
inputVmlinux = fopen(argv[2], "r");
|
||||
if ( ! inputVmlinux ) {
|
||||
printf("vmlinux file \"%s\" failed to open.\n", argv[2]);
|
||||
exit(1);
|
||||
}
|
||||
outputVmlinux = fopen(argv[3], "w");
|
||||
if ( ! outputVmlinux ) {
|
||||
printf("output vmlinux file \"%s\" failed to open.\n", argv[3]);
|
||||
exit(1);
|
||||
}
|
||||
fseek(ramDisk, 0, SEEK_END);
|
||||
ramFileLen = ftell(ramDisk);
|
||||
fseek(ramDisk, 0, SEEK_SET);
|
||||
printf("%s file size = %ld\n", argv[1], ramFileLen);
|
||||
|
||||
ramLen = ramFileLen;
|
||||
|
||||
roundR = 4096 - (ramLen % 4096);
|
||||
if ( roundR ) {
|
||||
printf("Rounding System Map file up to a multiple of 4096, adding %ld\n", roundR);
|
||||
ramLen += roundR;
|
||||
}
|
||||
|
||||
printf("Rounded System Map size is %ld\n", ramLen);
|
||||
fseek(inputVmlinux, 0, SEEK_END);
|
||||
kernelLen = ftell(inputVmlinux);
|
||||
fseek(inputVmlinux, 0, SEEK_SET);
|
||||
printf("kernel file size = %ld\n", kernelLen);
|
||||
if ( kernelLen == 0 ) {
|
||||
printf("You must have a linux kernel specified as argv[2]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
actualKernelLen = kernelLen - ElfHeaderSize;
|
||||
|
||||
printf("actual kernel length (minus ELF header) = %ld\n", actualKernelLen);
|
||||
|
||||
round = actualKernelLen % 4096;
|
||||
roundedKernelLen = actualKernelLen;
|
||||
if ( round )
|
||||
roundedKernelLen += (4096 - round);
|
||||
|
||||
printf("actual kernel length rounded up to a 4k multiple = %ld\n", roundedKernelLen);
|
||||
|
||||
ramStartOffs = roundedKernelLen;
|
||||
ramPages = ramLen / 4096;
|
||||
|
||||
printf("System map pages to copy = %ld\n", ramPages);
|
||||
|
||||
// Copy 64K ELF header
|
||||
for (i=0; i<(ElfPages); ++i) {
|
||||
get4k( inputVmlinux, inbuf );
|
||||
put4k( outputVmlinux, inbuf );
|
||||
}
|
||||
|
||||
|
||||
|
||||
roundedKernelPages = roundedKernelLen / 4096;
|
||||
|
||||
fseek(inputVmlinux, ElfHeaderSize, SEEK_SET);
|
||||
|
||||
{
|
||||
for ( i=0; i<roundedKernelPages; ++i ) {
|
||||
get4k( inputVmlinux, inbuf );
|
||||
if ( i == 0 ) {
|
||||
unsigned long * p;
|
||||
printf("Storing embedded_sysmap_start at 0x3c\n");
|
||||
p = (unsigned long *)(inbuf + 0x3c);
|
||||
|
||||
#if (BYTE_ORDER == __BIG_ENDIAN)
|
||||
*p = ramStartOffs;
|
||||
#else
|
||||
*p = bswap_32(ramStartOffs);
|
||||
#endif
|
||||
|
||||
printf("Storing embedded_sysmap_end at 0x44\n");
|
||||
p = (unsigned long *)(inbuf + 0x44);
|
||||
#if (BYTE_ORDER == __BIG_ENDIAN)
|
||||
*p = ramStartOffs + ramFileLen;
|
||||
#else
|
||||
*p = bswap_32(ramStartOffs + ramFileLen);
|
||||
#endif
|
||||
}
|
||||
put4k( outputVmlinux, inbuf );
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
for ( i=0; i<ramPages; ++i ) {
|
||||
get4k( ramDisk, inbuf );
|
||||
put4k( outputVmlinux, inbuf );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fclose(ramDisk);
|
||||
fclose(inputVmlinux);
|
||||
fclose(outputVmlinux);
|
||||
/* Set permission to executable */
|
||||
chmod(argv[3], S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,659 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc4
|
||||
# Tue May 24 22:36:27 2005
|
||||
#
|
||||
CONFIG_MMU=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_PPC=y
|
||||
CONFIG_PPC32=y
|
||||
CONFIG_GENERIC_NVRAM=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
# CONFIG_MODULES is not set
|
||||
|
||||
#
|
||||
# Processor
|
||||
#
|
||||
# CONFIG_6xx is not set
|
||||
# CONFIG_40x is not set
|
||||
# CONFIG_44x is not set
|
||||
# CONFIG_POWER3 is not set
|
||||
# CONFIG_POWER4 is not set
|
||||
# CONFIG_8xx is not set
|
||||
CONFIG_E500=y
|
||||
CONFIG_BOOKE=y
|
||||
CONFIG_FSL_BOOKE=y
|
||||
# CONFIG_PHYS_64BIT is not set
|
||||
CONFIG_SPE=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
# CONFIG_PM is not set
|
||||
CONFIG_85xx=y
|
||||
CONFIG_PPC_INDIRECT_PCI_BE=y
|
||||
|
||||
#
|
||||
# Freescale 85xx options
|
||||
#
|
||||
# CONFIG_MPC8540_ADS is not set
|
||||
CONFIG_MPC8548_CDS=y
|
||||
# CONFIG_MPC8555_CDS is not set
|
||||
# CONFIG_MPC8560_ADS is not set
|
||||
# CONFIG_SBC8560 is not set
|
||||
# CONFIG_STX_GP3 is not set
|
||||
CONFIG_MPC8548=y
|
||||
|
||||
#
|
||||
# Platform options
|
||||
#
|
||||
# CONFIG_SMP is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_HIGHMEM is not set
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# Bus options
|
||||
#
|
||||
# CONFIG_PCI is not set
|
||||
# CONFIG_PCI_DOMAINS is not set
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# Advanced setup
|
||||
#
|
||||
# CONFIG_ADVANCED_OPTIONS is not set
|
||||
|
||||
#
|
||||
# Default settings for advanced configuration options are used
|
||||
#
|
||||
CONFIG_HIGHMEM_START=0xfe000000
|
||||
CONFIG_LOWMEM_SIZE=0x30000000
|
||||
CONFIG_KERNEL_START=0xc0000000
|
||||
CONFIG_TASK_SIZE=0x80000000
|
||||
CONFIG_BOOT_LOAD=0x00800000
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
# CONFIG_MTD is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
#
|
||||
# CONFIG_PARPORT is not set
|
||||
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
# CONFIG_BLK_DEV_CRYPTOLOOP 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=32768
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
#
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_SCSI is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
#
|
||||
|
||||
#
|
||||
# Macintosh device drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Networking support
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_IP_MROUTE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_IP_TCPDIAG=y
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP 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_NET_DIVERT 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
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
#
|
||||
CONFIG_GIANFAR=y
|
||||
CONFIG_GFAR_NAPI=y
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
#
|
||||
|
||||
#
|
||||
# Wireless LAN (non-hamradio)
|
||||
#
|
||||
# CONFIG_NET_RADIO is not set
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
#
|
||||
# CONFIG_ISDN is not set
|
||||
|
||||
#
|
||||
# Telephony Support
|
||||
#
|
||||
# CONFIG_PHONE is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
# 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
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_INPUT_JOYSTICK 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
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
# CONFIG_SERIAL_8250_EXTENDED is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
||||
#
|
||||
# IPMI
|
||||
#
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
CONFIG_GEN_RTC=y
|
||||
# CONFIG_GEN_RTC_X is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_AGP is not set
|
||||
# CONFIG_DRM is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
|
||||
#
|
||||
# I2C Algorithms
|
||||
#
|
||||
# CONFIG_I2C_ALGOBIT is not set
|
||||
# CONFIG_I2C_ALGOPCF is not set
|
||||
# CONFIG_I2C_ALGOPCA is not set
|
||||
|
||||
#
|
||||
# I2C Hardware Bus support
|
||||
#
|
||||
# CONFIG_I2C_ISA is not set
|
||||
CONFIG_I2C_MPC=y
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
|
||||
#
|
||||
# Hardware Sensors Chip support
|
||||
#
|
||||
# CONFIG_I2C_SENSOR is not set
|
||||
# CONFIG_SENSORS_ADM1021 is not set
|
||||
# CONFIG_SENSORS_ADM1025 is not set
|
||||
# CONFIG_SENSORS_ADM1026 is not set
|
||||
# CONFIG_SENSORS_ADM1031 is not set
|
||||
# CONFIG_SENSORS_ASB100 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_FSCHER is not set
|
||||
# CONFIG_SENSORS_FSCPOS is not set
|
||||
# CONFIG_SENSORS_GL518SM is not set
|
||||
# CONFIG_SENSORS_GL520SM is not set
|
||||
# CONFIG_SENSORS_IT87 is not set
|
||||
# CONFIG_SENSORS_LM63 is not set
|
||||
# CONFIG_SENSORS_LM75 is not set
|
||||
# CONFIG_SENSORS_LM77 is not set
|
||||
# CONFIG_SENSORS_LM78 is not set
|
||||
# CONFIG_SENSORS_LM80 is not set
|
||||
# CONFIG_SENSORS_LM83 is not set
|
||||
# CONFIG_SENSORS_LM85 is not set
|
||||
# CONFIG_SENSORS_LM87 is not set
|
||||
# CONFIG_SENSORS_LM90 is not set
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
|
||||
#
|
||||
# Other I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_M41T00 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
# CONFIG_DVB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_FB is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
#
|
||||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card support
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# InfiniBand support
|
||||
#
|
||||
# CONFIG_INFINIBAND is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_XATTR=y
|
||||
# CONFIG_EXT3_FS_POSIX_ACL is not set
|
||||
# CONFIG_EXT3_FS_SECURITY is not set
|
||||
CONFIG_JBD=y
|
||||
# CONFIG_JBD_DEBUG is not set
|
||||
CONFIG_FS_MBCACHE=y
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_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_SYSFS=y
|
||||
# CONFIG_DEVFS_FS is not set
|
||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_XATTR is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
|
||||
#
|
||||
# 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
|
||||
|
||||
#
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NFS_FS=y
|
||||
# CONFIG_NFS_V3 is not set
|
||||
# CONFIG_NFS_V4 is not set
|
||||
# CONFIG_NFS_DIRECTIO is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
# CONFIG_CIFS is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
# CONFIG_ACORN_PARTITION is not set
|
||||
# CONFIG_OSF_PARTITION is not set
|
||||
# CONFIG_AMIGA_PARTITION is not set
|
||||
# CONFIG_ATARI_PARTITION is not set
|
||||
# CONFIG_MAC_PARTITION is not set
|
||||
# CONFIG_MSDOS_PARTITION is not set
|
||||
# CONFIG_LDM_PARTITION is not set
|
||||
# CONFIG_SGI_PARTITION is not set
|
||||
# CONFIG_ULTRIX_PARTITION is not set
|
||||
# CONFIG_SUN_PARTITION is not set
|
||||
# CONFIG_EFI_PARTITION is not set
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
# CONFIG_NLS is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
#
|
||||
# CONFIG_PROFILING is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
|
@ -918,6 +918,20 @@ struct cpu_spec cpu_specs[] = {
|
|||
.dcache_bsize = 32,
|
||||
.num_pmcs = 4,
|
||||
},
|
||||
{ /* e500v2 */
|
||||
.pvr_mask = 0xffff0000,
|
||||
.pvr_value = 0x80210000,
|
||||
.cpu_name = "e500v2",
|
||||
/* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
|
||||
.cpu_features = CPU_FTR_SPLIT_ID_CACHE |
|
||||
CPU_FTR_USE_TB | CPU_FTR_BIG_PHYS,
|
||||
.cpu_user_features = PPC_FEATURE_32 |
|
||||
PPC_FEATURE_HAS_MMU | PPC_FEATURE_SPE_COMP |
|
||||
PPC_FEATURE_HAS_EFP_SINGLE | PPC_FEATURE_HAS_EFP_DOUBLE,
|
||||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.num_pmcs = 4,
|
||||
},
|
||||
#endif
|
||||
#if !CLASSIC_PPC
|
||||
{ /* default match */
|
||||
|
|
|
@ -46,26 +46,23 @@
|
|||
|
||||
#ifdef CONFIG_BOOKE
|
||||
#include "head_booke.h"
|
||||
#define TRANSFER_TO_HANDLER_EXC_LEVEL(exc_level) \
|
||||
mtspr exc_level##_SPRG,r8; \
|
||||
BOOKE_LOAD_EXC_LEVEL_STACK(exc_level); \
|
||||
lwz r0,GPR10-INT_FRAME_SIZE(r8); \
|
||||
stw r0,GPR10(r11); \
|
||||
lwz r0,GPR11-INT_FRAME_SIZE(r8); \
|
||||
stw r0,GPR11(r11); \
|
||||
mfspr r8,exc_level##_SPRG
|
||||
|
||||
.globl mcheck_transfer_to_handler
|
||||
mcheck_transfer_to_handler:
|
||||
mtspr MCHECK_SPRG,r8
|
||||
BOOKE_LOAD_MCHECK_STACK
|
||||
lwz r0,GPR10-INT_FRAME_SIZE(r8)
|
||||
stw r0,GPR10(r11)
|
||||
lwz r0,GPR11-INT_FRAME_SIZE(r8)
|
||||
stw r0,GPR11(r11)
|
||||
mfspr r8,MCHECK_SPRG
|
||||
TRANSFER_TO_HANDLER_EXC_LEVEL(MCHECK)
|
||||
b transfer_to_handler_full
|
||||
|
||||
.globl crit_transfer_to_handler
|
||||
crit_transfer_to_handler:
|
||||
mtspr CRIT_SPRG,r8
|
||||
BOOKE_LOAD_CRIT_STACK
|
||||
lwz r0,GPR10-INT_FRAME_SIZE(r8)
|
||||
stw r0,GPR10(r11)
|
||||
lwz r0,GPR11-INT_FRAME_SIZE(r8)
|
||||
stw r0,GPR11(r11)
|
||||
mfspr r8,CRIT_SPRG
|
||||
TRANSFER_TO_HANDLER_EXC_LEVEL(CRIT)
|
||||
/* fall through */
|
||||
#endif
|
||||
|
||||
|
@ -783,99 +780,64 @@ exc_exit_restart_end:
|
|||
* time of the critical interrupt.
|
||||
*
|
||||
*/
|
||||
#ifdef CONFIG_40x
|
||||
#define PPC_40x_TURN_OFF_MSR_DR \
|
||||
/* avoid any possible TLB misses here by turning off MSR.DR, we \
|
||||
* assume the instructions here are mapped by a pinned TLB entry */ \
|
||||
li r10,MSR_IR; \
|
||||
mtmsr r10; \
|
||||
isync; \
|
||||
tophys(r1, r1);
|
||||
#else
|
||||
#define PPC_40x_TURN_OFF_MSR_DR
|
||||
#endif
|
||||
|
||||
#define RET_FROM_EXC_LEVEL(exc_lvl_srr0, exc_lvl_srr1, exc_lvl_rfi) \
|
||||
REST_NVGPRS(r1); \
|
||||
lwz r3,_MSR(r1); \
|
||||
andi. r3,r3,MSR_PR; \
|
||||
LOAD_MSR_KERNEL(r10,MSR_KERNEL); \
|
||||
bne user_exc_return; \
|
||||
lwz r0,GPR0(r1); \
|
||||
lwz r2,GPR2(r1); \
|
||||
REST_4GPRS(3, r1); \
|
||||
REST_2GPRS(7, r1); \
|
||||
lwz r10,_XER(r1); \
|
||||
lwz r11,_CTR(r1); \
|
||||
mtspr SPRN_XER,r10; \
|
||||
mtctr r11; \
|
||||
PPC405_ERR77(0,r1); \
|
||||
stwcx. r0,0,r1; /* to clear the reservation */ \
|
||||
lwz r11,_LINK(r1); \
|
||||
mtlr r11; \
|
||||
lwz r10,_CCR(r1); \
|
||||
mtcrf 0xff,r10; \
|
||||
PPC_40x_TURN_OFF_MSR_DR; \
|
||||
lwz r9,_DEAR(r1); \
|
||||
lwz r10,_ESR(r1); \
|
||||
mtspr SPRN_DEAR,r9; \
|
||||
mtspr SPRN_ESR,r10; \
|
||||
lwz r11,_NIP(r1); \
|
||||
lwz r12,_MSR(r1); \
|
||||
mtspr exc_lvl_srr0,r11; \
|
||||
mtspr exc_lvl_srr1,r12; \
|
||||
lwz r9,GPR9(r1); \
|
||||
lwz r12,GPR12(r1); \
|
||||
lwz r10,GPR10(r1); \
|
||||
lwz r11,GPR11(r1); \
|
||||
lwz r1,GPR1(r1); \
|
||||
PPC405_ERR77_SYNC; \
|
||||
exc_lvl_rfi; \
|
||||
b .; /* prevent prefetch past exc_lvl_rfi */
|
||||
|
||||
.globl ret_from_crit_exc
|
||||
ret_from_crit_exc:
|
||||
REST_NVGPRS(r1)
|
||||
lwz r3,_MSR(r1)
|
||||
andi. r3,r3,MSR_PR
|
||||
LOAD_MSR_KERNEL(r10,MSR_KERNEL)
|
||||
bne user_exc_return
|
||||
|
||||
lwz r0,GPR0(r1)
|
||||
lwz r2,GPR2(r1)
|
||||
REST_4GPRS(3, r1)
|
||||
REST_2GPRS(7, r1)
|
||||
|
||||
lwz r10,_XER(r1)
|
||||
lwz r11,_CTR(r1)
|
||||
mtspr SPRN_XER,r10
|
||||
mtctr r11
|
||||
|
||||
PPC405_ERR77(0,r1)
|
||||
stwcx. r0,0,r1 /* to clear the reservation */
|
||||
|
||||
lwz r11,_LINK(r1)
|
||||
mtlr r11
|
||||
lwz r10,_CCR(r1)
|
||||
mtcrf 0xff,r10
|
||||
#ifdef CONFIG_40x
|
||||
/* avoid any possible TLB misses here by turning off MSR.DR, we
|
||||
* assume the instructions here are mapped by a pinned TLB entry */
|
||||
li r10,MSR_IR
|
||||
mtmsr r10
|
||||
isync
|
||||
tophys(r1, r1)
|
||||
#endif
|
||||
lwz r9,_DEAR(r1)
|
||||
lwz r10,_ESR(r1)
|
||||
mtspr SPRN_DEAR,r9
|
||||
mtspr SPRN_ESR,r10
|
||||
lwz r11,_NIP(r1)
|
||||
lwz r12,_MSR(r1)
|
||||
mtspr SPRN_CSRR0,r11
|
||||
mtspr SPRN_CSRR1,r12
|
||||
lwz r9,GPR9(r1)
|
||||
lwz r12,GPR12(r1)
|
||||
lwz r10,GPR10(r1)
|
||||
lwz r11,GPR11(r1)
|
||||
lwz r1,GPR1(r1)
|
||||
PPC405_ERR77_SYNC
|
||||
rfci
|
||||
b . /* prevent prefetch past rfci */
|
||||
RET_FROM_EXC_LEVEL(SPRN_CSRR0, SPRN_CSRR1, RFCI)
|
||||
|
||||
#ifdef CONFIG_BOOKE
|
||||
/*
|
||||
* Return from a machine check interrupt, similar to a critical
|
||||
* interrupt.
|
||||
*/
|
||||
.globl ret_from_mcheck_exc
|
||||
ret_from_mcheck_exc:
|
||||
REST_NVGPRS(r1)
|
||||
lwz r3,_MSR(r1)
|
||||
andi. r3,r3,MSR_PR
|
||||
LOAD_MSR_KERNEL(r10,MSR_KERNEL)
|
||||
bne user_exc_return
|
||||
|
||||
lwz r0,GPR0(r1)
|
||||
lwz r2,GPR2(r1)
|
||||
REST_4GPRS(3, r1)
|
||||
REST_2GPRS(7, r1)
|
||||
|
||||
lwz r10,_XER(r1)
|
||||
lwz r11,_CTR(r1)
|
||||
mtspr SPRN_XER,r10
|
||||
mtctr r11
|
||||
|
||||
stwcx. r0,0,r1 /* to clear the reservation */
|
||||
|
||||
lwz r11,_LINK(r1)
|
||||
mtlr r11
|
||||
lwz r10,_CCR(r1)
|
||||
mtcrf 0xff,r10
|
||||
lwz r9,_DEAR(r1)
|
||||
lwz r10,_ESR(r1)
|
||||
mtspr SPRN_DEAR,r9
|
||||
mtspr SPRN_ESR,r10
|
||||
lwz r11,_NIP(r1)
|
||||
lwz r12,_MSR(r1)
|
||||
mtspr SPRN_MCSRR0,r11
|
||||
mtspr SPRN_MCSRR1,r12
|
||||
lwz r9,GPR9(r1)
|
||||
lwz r12,GPR12(r1)
|
||||
lwz r10,GPR10(r1)
|
||||
lwz r11,GPR11(r1)
|
||||
lwz r1,GPR1(r1)
|
||||
RFMCI
|
||||
RET_FROM_EXC_LEVEL(SPRN_MCSRR0, SPRN_MCSRR1, RFMCI)
|
||||
#endif /* CONFIG_BOOKE */
|
||||
|
||||
/*
|
||||
|
|
|
@ -291,8 +291,9 @@ label:
|
|||
/* If we are faulting a kernel address, we have to use the
|
||||
* kernel page tables.
|
||||
*/
|
||||
andis. r11, r10, 0x8000
|
||||
beq 3f
|
||||
lis r11, TASK_SIZE@h
|
||||
cmplw r10, r11
|
||||
blt+ 3f
|
||||
lis r11, swapper_pg_dir@h
|
||||
ori r11, r11, swapper_pg_dir@l
|
||||
li r9, 0
|
||||
|
@ -479,8 +480,9 @@ label:
|
|||
/* If we are faulting a kernel address, we have to use the
|
||||
* kernel page tables.
|
||||
*/
|
||||
andis. r11, r10, 0x8000
|
||||
beq 3f
|
||||
lis r11, TASK_SIZE@h
|
||||
cmplw r10, r11
|
||||
blt+ 3f
|
||||
lis r11, swapper_pg_dir@h
|
||||
ori r11, r11, swapper_pg_dir@l
|
||||
li r9, 0
|
||||
|
@ -578,8 +580,9 @@ label:
|
|||
/* If we are faulting a kernel address, we have to use the
|
||||
* kernel page tables.
|
||||
*/
|
||||
andis. r11, r10, 0x8000
|
||||
beq 3f
|
||||
lis r11, TASK_SIZE@h
|
||||
cmplw r10, r11
|
||||
blt+ 3f
|
||||
lis r11, swapper_pg_dir@h
|
||||
ori r11, r11, swapper_pg_dir@l
|
||||
li r9, 0
|
||||
|
|
|
@ -67,46 +67,36 @@
|
|||
#define CRIT_STACK_TOP (exception_stack_top)
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
#define BOOKE_LOAD_CRIT_STACK \
|
||||
#define BOOKE_LOAD_EXC_LEVEL_STACK(level) \
|
||||
mfspr r8,SPRN_PIR; \
|
||||
mulli r8,r8,BOOKE_EXCEPTION_STACK_SIZE; \
|
||||
neg r8,r8; \
|
||||
addis r8,r8,CRIT_STACK_TOP@ha; \
|
||||
addi r8,r8,CRIT_STACK_TOP@l
|
||||
#define BOOKE_LOAD_MCHECK_STACK \
|
||||
mfspr r8,SPRN_PIR; \
|
||||
mulli r8,r8,BOOKE_EXCEPTION_STACK_SIZE; \
|
||||
neg r8,r8; \
|
||||
addis r8,r8,MCHECK_STACK_TOP@ha; \
|
||||
addi r8,r8,MCHECK_STACK_TOP@l
|
||||
addis r8,r8,level##_STACK_TOP@ha; \
|
||||
addi r8,r8,level##_STACK_TOP@l
|
||||
#else
|
||||
#define BOOKE_LOAD_CRIT_STACK \
|
||||
lis r8,CRIT_STACK_TOP@h; \
|
||||
ori r8,r8,CRIT_STACK_TOP@l
|
||||
#define BOOKE_LOAD_MCHECK_STACK \
|
||||
lis r8,MCHECK_STACK_TOP@h; \
|
||||
ori r8,r8,MCHECK_STACK_TOP@l
|
||||
#define BOOKE_LOAD_EXC_LEVEL_STACK(level) \
|
||||
lis r8,level##_STACK_TOP@h; \
|
||||
ori r8,r8,level##_STACK_TOP@l
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Exception prolog for critical exceptions. This is a little different
|
||||
* from the normal exception prolog above since a critical exception
|
||||
* can potentially occur at any point during normal exception processing.
|
||||
* Thus we cannot use the same SPRG registers as the normal prolog above.
|
||||
* Instead we use a portion of the critical exception stack at low physical
|
||||
* addresses.
|
||||
* Exception prolog for critical/machine check exceptions. This is a
|
||||
* little different from the normal exception prolog above since a
|
||||
* critical/machine check exception can potentially occur at any point
|
||||
* during normal exception processing. Thus we cannot use the same SPRG
|
||||
* registers as the normal prolog above. Instead we use a portion of the
|
||||
* critical/machine check exception stack at low physical addresses.
|
||||
*/
|
||||
|
||||
#define CRITICAL_EXCEPTION_PROLOG \
|
||||
mtspr CRIT_SPRG,r8; \
|
||||
BOOKE_LOAD_CRIT_STACK; /* r8 points to the crit stack */ \
|
||||
#define EXC_LEVEL_EXCEPTION_PROLOG(exc_level, exc_level_srr0, exc_level_srr1) \
|
||||
mtspr exc_level##_SPRG,r8; \
|
||||
BOOKE_LOAD_EXC_LEVEL_STACK(exc_level);/* r8 points to the exc_level stack*/ \
|
||||
stw r10,GPR10-INT_FRAME_SIZE(r8); \
|
||||
stw r11,GPR11-INT_FRAME_SIZE(r8); \
|
||||
mfcr r10; /* save CR in r10 for now */\
|
||||
mfspr r11,SPRN_CSRR1; /* check whether user or kernel */\
|
||||
mfspr r11,exc_level_srr1; /* check whether user or kernel */\
|
||||
andi. r11,r11,MSR_PR; \
|
||||
mr r11,r8; \
|
||||
mfspr r8,CRIT_SPRG; \
|
||||
mfspr r8,exc_level##_SPRG; \
|
||||
beq 1f; \
|
||||
/* COMING FROM USER MODE */ \
|
||||
mfspr r11,SPRN_SPRG3; /* if from user, start at top of */\
|
||||
|
@ -122,9 +112,9 @@
|
|||
stw r12,_DEAR(r11); /* since they may have had stuff */\
|
||||
mfspr r9,SPRN_ESR; /* in them at the point where the */\
|
||||
stw r9,_ESR(r11); /* exception was taken */\
|
||||
mfspr r12,SPRN_CSRR0; \
|
||||
mfspr r12,exc_level_srr0; \
|
||||
stw r1,GPR1(r11); \
|
||||
mfspr r9,SPRN_CSRR1; \
|
||||
mfspr r9,exc_level_srr1; \
|
||||
stw r1,0(r11); \
|
||||
mr r1,r11; \
|
||||
rlwinm r9,r9,0,14,12; /* clear MSR_WE (necessary?) */\
|
||||
|
@ -132,45 +122,10 @@
|
|||
SAVE_4GPRS(3, r11); \
|
||||
SAVE_2GPRS(7, r11)
|
||||
|
||||
/*
|
||||
* Exception prolog for machine check exceptions. This is similar to
|
||||
* the critical exception prolog, except that machine check exceptions
|
||||
* have their stack.
|
||||
*/
|
||||
#define MCHECK_EXCEPTION_PROLOG \
|
||||
mtspr MCHECK_SPRG,r8; \
|
||||
BOOKE_LOAD_MCHECK_STACK; /* r8 points to the mcheck stack */\
|
||||
stw r10,GPR10-INT_FRAME_SIZE(r8); \
|
||||
stw r11,GPR11-INT_FRAME_SIZE(r8); \
|
||||
mfcr r10; /* save CR in r10 for now */\
|
||||
mfspr r11,SPRN_MCSRR1; /* check whether user or kernel */\
|
||||
andi. r11,r11,MSR_PR; \
|
||||
mr r11,r8; \
|
||||
mfspr r8,MCHECK_SPRG; \
|
||||
beq 1f; \
|
||||
/* COMING FROM USER MODE */ \
|
||||
mfspr r11,SPRN_SPRG3; /* if from user, start at top of */\
|
||||
lwz r11,THREAD_INFO-THREAD(r11); /* this thread's kernel stack */\
|
||||
addi r11,r11,THREAD_SIZE; \
|
||||
1: subi r11,r11,INT_FRAME_SIZE; /* Allocate an exception frame */\
|
||||
stw r10,_CCR(r11); /* save various registers */\
|
||||
stw r12,GPR12(r11); \
|
||||
stw r9,GPR9(r11); \
|
||||
mflr r10; \
|
||||
stw r10,_LINK(r11); \
|
||||
mfspr r12,SPRN_DEAR; /* save DEAR and ESR in the frame */\
|
||||
stw r12,_DEAR(r11); /* since they may have had stuff */\
|
||||
mfspr r9,SPRN_ESR; /* in them at the point where the */\
|
||||
stw r9,_ESR(r11); /* exception was taken */\
|
||||
mfspr r12,SPRN_MCSRR0; \
|
||||
stw r1,GPR1(r11); \
|
||||
mfspr r9,SPRN_MCSRR1; \
|
||||
stw r1,0(r11); \
|
||||
mr r1,r11; \
|
||||
rlwinm r9,r9,0,14,12; /* clear MSR_WE (necessary?) */\
|
||||
stw r0,GPR0(r11); \
|
||||
SAVE_4GPRS(3, r11); \
|
||||
SAVE_2GPRS(7, r11)
|
||||
#define CRITICAL_EXCEPTION_PROLOG \
|
||||
EXC_LEVEL_EXCEPTION_PROLOG(CRIT, SPRN_CSRR0, SPRN_CSRR1)
|
||||
#define MCHECK_EXCEPTION_PROLOG \
|
||||
EXC_LEVEL_EXCEPTION_PROLOG(MCHECK, SPRN_MCSRR0, SPRN_MCSRR1)
|
||||
|
||||
/*
|
||||
* Exception vectors.
|
||||
|
@ -237,7 +192,6 @@ label:
|
|||
EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, COPY_EE, transfer_to_handler, \
|
||||
ret_from_except)
|
||||
|
||||
|
||||
/* Check for a single step debug exception while in an exception
|
||||
* handler before state has been saved. This is to catch the case
|
||||
* where an instruction that we are trying to single step causes
|
||||
|
@ -291,7 +245,7 @@ label:
|
|||
lwz r9,GPR9(r11); \
|
||||
lwz r12,GPR12(r11); \
|
||||
mtspr CRIT_SPRG,r8; \
|
||||
BOOKE_LOAD_CRIT_STACK; /* r8 points to the crit stack */ \
|
||||
BOOKE_LOAD_EXC_LEVEL_STACK(CRIT); /* r8 points to the debug stack */ \
|
||||
lwz r10,GPR10-INT_FRAME_SIZE(r8); \
|
||||
lwz r11,GPR11-INT_FRAME_SIZE(r8); \
|
||||
mfspr r8,CRIT_SPRG; \
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
#include <asm/xmon.h>
|
||||
#include <asm/ocp.h>
|
||||
|
||||
#if defined(CONFIG_85xx) || defined(CONFIG_83xx)
|
||||
#if defined(CONFIG_85xx) || defined(CONFIG_83xx) || defined(CONFIG_MPC10X_BRIDGE)
|
||||
#include <asm/ppc_sys.h>
|
||||
#endif
|
||||
|
||||
|
@ -61,8 +61,6 @@ extern void power4_idle(void);
|
|||
|
||||
extern boot_infos_t *boot_infos;
|
||||
struct ide_machdep_calls ppc_ide_md;
|
||||
char *sysmap;
|
||||
unsigned long sysmap_size;
|
||||
|
||||
/* Used with the BI_MEMSIZE bootinfo parameter to store the memory
|
||||
size value reported by the boot loader. */
|
||||
|
@ -249,7 +247,7 @@ int show_cpuinfo(struct seq_file *m, void *v)
|
|||
seq_printf(m, "bogomips\t: %lu.%02lu\n",
|
||||
lpj / (500000/HZ), (lpj / (5000/HZ)) % 100);
|
||||
|
||||
#if defined(CONFIG_85xx) || defined(CONFIG_83xx)
|
||||
#if defined(CONFIG_85xx) || defined(CONFIG_83xx) || defined(CONFIG_MPC10X_BRIDGE)
|
||||
if (cur_ppc_sys_spec->ppc_sys_name)
|
||||
seq_printf(m, "chipset\t\t: %s\n",
|
||||
cur_ppc_sys_spec->ppc_sys_name);
|
||||
|
@ -578,11 +576,6 @@ void parse_bootinfo(struct bi_record *rec)
|
|||
case BI_CMD_LINE:
|
||||
strlcpy(cmd_line, (void *)data, sizeof(cmd_line));
|
||||
break;
|
||||
case BI_SYSMAP:
|
||||
sysmap = (char *)((data[0] >= (KERNELBASE)) ? data[0] :
|
||||
(data[0]+KERNELBASE));
|
||||
sysmap_size = data[1];
|
||||
break;
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
case BI_INITRD:
|
||||
initrd_start = data[0] + KERNELBASE;
|
||||
|
|
|
@ -81,8 +81,10 @@ void die(const char * str, struct pt_regs * fp, long err)
|
|||
console_verbose();
|
||||
spin_lock_irq(&die_lock);
|
||||
#ifdef CONFIG_PMAC_BACKLIGHT
|
||||
set_backlight_enable(1);
|
||||
set_backlight_level(BACKLIGHT_MAX);
|
||||
if (_machine == _MACH_Pmac) {
|
||||
set_backlight_enable(1);
|
||||
set_backlight_level(BACKLIGHT_MAX);
|
||||
}
|
||||
#endif
|
||||
printk("Oops: %s, sig: %ld [#%d]\n", str, err, ++die_counter);
|
||||
#ifdef CONFIG_PREEMPT
|
||||
|
|
|
@ -130,7 +130,7 @@ void _raw_read_lock(rwlock_t *rw)
|
|||
while (!read_can_lock(rw)) {
|
||||
if (--stuck == 0) {
|
||||
printk("_read_lock(%p) CPU#%d lock %d\n",
|
||||
rw, _smp_processor_id(), rw->lock);
|
||||
rw, raw_smp_processor_id(), rw->lock);
|
||||
stuck = INIT_STUCK;
|
||||
}
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ void _raw_write_lock(rwlock_t *rw)
|
|||
while (!write_can_lock(rw)) {
|
||||
if (--stuck == 0) {
|
||||
printk("write_lock(%p) CPU#%d lock %d)\n",
|
||||
rw, _smp_processor_id(), rw->lock);
|
||||
rw, raw_smp_processor_id(), rw->lock);
|
||||
stuck = INIT_STUCK;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -64,6 +64,8 @@ extern unsigned long total_lowmem;
|
|||
extern unsigned long __max_low_memory;
|
||||
#define MAX_LOW_MEM CONFIG_LOWMEM_SIZE
|
||||
|
||||
#define NUM_TLBCAMS (16)
|
||||
|
||||
struct tlbcam {
|
||||
u32 MAS0;
|
||||
u32 MAS1;
|
||||
|
|
|
@ -96,9 +96,6 @@ extern struct task_struct *current_set[NR_CPUS];
|
|||
char *klimit = _end;
|
||||
struct mem_pieces phys_avail;
|
||||
|
||||
extern char *sysmap;
|
||||
extern unsigned long sysmap_size;
|
||||
|
||||
/*
|
||||
* this tells the system to map all of ram with the segregs
|
||||
* (i.e. page tables) instead of the bats.
|
||||
|
@ -442,12 +439,6 @@ void __init mem_init(void)
|
|||
if (agp_special_page)
|
||||
SetPageReserved(virt_to_page(agp_special_page));
|
||||
#endif
|
||||
if ( sysmap )
|
||||
for (addr = (unsigned long)sysmap;
|
||||
addr < PAGE_ALIGN((unsigned long)sysmap+sysmap_size) ;
|
||||
addr += PAGE_SIZE)
|
||||
SetPageReserved(virt_to_page(addr));
|
||||
|
||||
for (addr = PAGE_OFFSET; addr < (unsigned long)high_memory;
|
||||
addr += PAGE_SIZE) {
|
||||
if (!PageReserved(virt_to_page(addr)))
|
||||
|
@ -469,7 +460,6 @@ void __init mem_init(void)
|
|||
struct page *page = mem_map + pfn;
|
||||
|
||||
ClearPageReserved(page);
|
||||
set_bit(PG_highmem, &page->flags);
|
||||
set_page_count(page, 1);
|
||||
__free_page(page);
|
||||
totalhigh_pages++;
|
||||
|
@ -483,9 +473,7 @@ void __init mem_init(void)
|
|||
codepages<< (PAGE_SHIFT-10), datapages<< (PAGE_SHIFT-10),
|
||||
initpages<< (PAGE_SHIFT-10),
|
||||
(unsigned long) (totalhigh_pages << (PAGE_SHIFT-10)));
|
||||
if (sysmap)
|
||||
printk("System.map loaded at 0x%08x for debugger, size: %ld bytes\n",
|
||||
(unsigned int)sysmap, sysmap_size);
|
||||
|
||||
#ifdef CONFIG_PPC_PMAC
|
||||
if (agp_special_page)
|
||||
printk(KERN_INFO "AGP special page: 0x%08lx\n", agp_special_page);
|
||||
|
@ -535,9 +523,6 @@ set_phys_avail(unsigned long total_memory)
|
|||
if (rtas_data)
|
||||
mem_pieces_remove(&phys_avail, rtas_data, rtas_size, 1);
|
||||
#endif
|
||||
/* remove the sysmap pages from the available memory */
|
||||
if (sysmap)
|
||||
mem_pieces_remove(&phys_avail, __pa(sysmap), sysmap_size, 1);
|
||||
#ifdef CONFIG_PPC_PMAC
|
||||
/* Because of some uninorth weirdness, we need a page of
|
||||
* memory as high as possible (it must be outside of the
|
||||
|
|
|
@ -43,6 +43,8 @@ extern int mem_init_done;
|
|||
extern PTE *Hash, *Hash_end;
|
||||
extern unsigned long Hash_size, Hash_mask;
|
||||
|
||||
extern unsigned int num_tlbcam_entries;
|
||||
|
||||
/* ...and now those things that may be slightly different between processor
|
||||
* architectures. -- Dan
|
||||
*/
|
||||
|
|
|
@ -66,7 +66,6 @@ void setbat(int index, unsigned long virt, unsigned long phys,
|
|||
|
||||
#ifdef HAVE_TLBCAM
|
||||
extern unsigned int tlbcam_index;
|
||||
extern unsigned int num_tlbcam_entries;
|
||||
extern unsigned long v_mapped_by_tlbcam(unsigned long va);
|
||||
extern unsigned long p_mapped_by_tlbcam(unsigned long pa);
|
||||
#else /* !HAVE_TLBCAM */
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
#include <asm/time.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/ipic.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/pci-bridge.h>
|
||||
|
|
|
@ -21,6 +21,11 @@ config MPC8540_ADS
|
|||
help
|
||||
This option enables support for the MPC 8540 ADS evaluation board.
|
||||
|
||||
config MPC8548_CDS
|
||||
bool "Freescale MPC8548 CDS"
|
||||
help
|
||||
This option enablese support for the MPC8548 CDS evaluation board.
|
||||
|
||||
config MPC8555_CDS
|
||||
bool "Freescale MPC8555 CDS"
|
||||
help
|
||||
|
@ -53,6 +58,11 @@ config MPC8540
|
|||
depends on MPC8540_ADS
|
||||
default y
|
||||
|
||||
config MPC8548
|
||||
bool
|
||||
depends on MPC8548_CDS
|
||||
default y
|
||||
|
||||
config MPC8555
|
||||
bool
|
||||
depends on MPC8555_CDS
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# Makefile for the PowerPC 85xx linux kernel.
|
||||
#
|
||||
obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads_common.o mpc8540_ads.o
|
||||
obj-$(CONFIG_MPC8548_CDS) += mpc85xx_cds_common.o
|
||||
obj-$(CONFIG_MPC8555_CDS) += mpc85xx_cds_common.o
|
||||
obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads_common.o mpc8560_ads.o
|
||||
obj-$(CONFIG_SBC8560) += sbc85xx.o sbc8560.o
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
#include <asm/time.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/open_pic.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/pci-bridge.h>
|
||||
|
@ -88,7 +87,7 @@ mpc8540ads_setup_arch(void)
|
|||
#ifdef CONFIG_SERIAL_TEXT_DEBUG
|
||||
/* Invalidate the entry we stole earlier the serial ports
|
||||
* should be properly mapped */
|
||||
invalidate_tlbcam_entry(NUM_TLBCAMS - 1);
|
||||
invalidate_tlbcam_entry(num_tlbcam_entries - 1);
|
||||
#endif
|
||||
|
||||
/* setup the board related information for the enet controllers */
|
||||
|
@ -150,7 +149,7 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
|
|||
struct uart_port p;
|
||||
|
||||
/* Use the last TLB entry to map CCSRBAR to allow access to DUART regs */
|
||||
settlbcam(NUM_TLBCAMS - 1, binfo->bi_immr_base,
|
||||
settlbcam(num_tlbcam_entries - 1, binfo->bi_immr_base,
|
||||
binfo->bi_immr_base, MPC85xx_CCSRBAR_SIZE, _PAGE_IO, 0);
|
||||
|
||||
memset(&p, 0, sizeof (p));
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
#include <asm/time.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/open_pic.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/pci-bridge.h>
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
#include <asm/time.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/open_pic.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/pci-bridge.h>
|
||||
|
@ -59,40 +58,8 @@ extern unsigned long total_memory; /* in mm/init */
|
|||
unsigned char __res[sizeof (bd_t)];
|
||||
|
||||
/* Internal interrupts are all Level Sensitive, and Positive Polarity */
|
||||
|
||||
static u_char mpc85xx_ads_openpic_initsenses[] __initdata = {
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 0: L2 Cache */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 1: ECM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 2: DDR DRAM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 3: LBIU */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 4: DMA 0 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 5: DMA 1 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 6: DMA 2 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 7: DMA 3 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 8: PCI/PCI-X */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 9: RIO Inbound Port Write Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 10: RIO Doorbell Inbound */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 11: RIO Outbound Message */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 12: RIO Inbound Message */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 13: TSEC 0 Transmit */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 14: TSEC 0 Receive */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 15: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 16: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 17: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 18: TSEC 0 Receive/Transmit Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 19: TSEC 1 Transmit */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 20: TSEC 1 Receive */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 21: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 22: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 23: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 24: TSEC 1 Receive/Transmit Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 25: Fast Ethernet */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 26: DUART */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 27: I2C */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 28: Performance Monitor */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 29: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 30: CPM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 31: Unused */
|
||||
MPC85XX_INTERNAL_IRQ_SENSES,
|
||||
0x0, /* External 0: */
|
||||
#if defined(CONFIG_PCI)
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 1: PCI slot 0 */
|
||||
|
@ -159,7 +126,7 @@ mpc85xx_ads_init_IRQ(void)
|
|||
/* Skip reserved space and internal sources */
|
||||
openpic_set_sources(0, 32, OpenPIC_Addr + 0x10200);
|
||||
/* Map PIC IRQs 0-11 */
|
||||
openpic_set_sources(32, 12, OpenPIC_Addr + 0x10000);
|
||||
openpic_set_sources(48, 12, OpenPIC_Addr + 0x10000);
|
||||
|
||||
/* we let openpic interrupts starting from an offset, to
|
||||
* leave space for cascading interrupts underneath.
|
||||
|
|
|
@ -42,7 +42,6 @@
|
|||
#include <asm/todc.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/open_pic.h>
|
||||
#include <asm/i8259.h>
|
||||
#include <asm/bootinfo.h>
|
||||
|
@ -73,40 +72,8 @@ static int cds_pci_slot = 2;
|
|||
static volatile u8 * cadmus;
|
||||
|
||||
/* Internal interrupts are all Level Sensitive, and Positive Polarity */
|
||||
|
||||
static u_char mpc85xx_cds_openpic_initsenses[] __initdata = {
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 0: L2 Cache */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 1: ECM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 2: DDR DRAM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 3: LBIU */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 4: DMA 0 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 5: DMA 1 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 6: DMA 2 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 7: DMA 3 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 8: PCI/PCI-X */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 9: RIO Inbound Port Write Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 10: RIO Doorbell Inbound */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 11: RIO Outbound Message */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 12: RIO Inbound Message */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 13: TSEC 0 Transmit */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 14: TSEC 0 Receive */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 15: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 16: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 17: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 18: TSEC 0 Receive/Transmit Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 19: TSEC 1 Transmit */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 20: TSEC 1 Receive */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 21: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 22: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 23: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 24: TSEC 1 Receive/Transmit Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 25: Fast Ethernet */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 26: DUART */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 27: I2C */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 28: Performance Monitor */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 29: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 30: CPM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 31: Unused */
|
||||
MPC85XX_INTERNAL_IRQ_SENSES,
|
||||
#if defined(CONFIG_PCI)
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 0: PCI1 slot */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 1: PCI1 slot */
|
||||
|
@ -182,7 +149,6 @@ void __init
|
|||
mpc85xx_cds_init_IRQ(void)
|
||||
{
|
||||
bd_t *binfo = (bd_t *) __res;
|
||||
int i;
|
||||
|
||||
/* Determine the Physical Address of the OpenPIC regs */
|
||||
phys_addr_t OpenPIC_PAddr = binfo->bi_immr_base + MPC85xx_OPENPIC_OFFSET;
|
||||
|
@ -191,9 +157,13 @@ mpc85xx_cds_init_IRQ(void)
|
|||
OpenPIC_NumInitSenses = sizeof (mpc85xx_cds_openpic_initsenses);
|
||||
|
||||
/* Skip reserved space and internal sources */
|
||||
#ifdef CONFIG_MPC8548
|
||||
openpic_set_sources(0, 48, OpenPIC_Addr + 0x10200);
|
||||
#else
|
||||
openpic_set_sources(0, 32, OpenPIC_Addr + 0x10200);
|
||||
#endif
|
||||
/* Map PIC IRQs 0-11 */
|
||||
openpic_set_sources(32, 12, OpenPIC_Addr + 0x10000);
|
||||
openpic_set_sources(48, 12, OpenPIC_Addr + 0x10000);
|
||||
|
||||
/* we let openpic interrupts starting from an offset, to
|
||||
* leave space for cascading interrupts underneath.
|
||||
|
@ -475,26 +445,52 @@ mpc85xx_cds_setup_arch(void)
|
|||
#ifdef CONFIG_SERIAL_TEXT_DEBUG
|
||||
/* Invalidate the entry we stole earlier the serial ports
|
||||
* should be properly mapped */
|
||||
invalidate_tlbcam_entry(NUM_TLBCAMS - 1);
|
||||
invalidate_tlbcam_entry(num_tlbcam_entries - 1);
|
||||
#endif
|
||||
|
||||
/* setup the board related information for the enet controllers */
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1);
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 0;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 0;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
}
|
||||
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC2);
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 1;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 1;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
}
|
||||
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_eTSEC1);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 0;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
}
|
||||
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_eTSEC2);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 1;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
}
|
||||
|
||||
ppc_sys_device_remove(MPC85xx_eTSEC3);
|
||||
ppc_sys_device_remove(MPC85xx_eTSEC4);
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
if (initrd_start)
|
||||
|
@ -531,7 +527,7 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
|
|||
struct uart_port p;
|
||||
|
||||
/* Use the last TLB entry to map CCSRBAR to allow access to DUART regs */
|
||||
settlbcam(NUM_TLBCAMS - 1, binfo->bi_immr_base,
|
||||
settlbcam(num_tlbcam_entries - 1, binfo->bi_immr_base,
|
||||
binfo->bi_immr_base, MPC85xx_CCSRBAR_SIZE, _PAGE_IO, 0);
|
||||
|
||||
memset(&p, 0, sizeof (p));
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
#include <asm/time.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/open_pic.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/pci-bridge.h>
|
||||
|
@ -125,7 +124,7 @@ sbc8560_setup_arch(void)
|
|||
#ifdef CONFIG_SERIAL_TEXT_DEBUG
|
||||
/* Invalidate the entry we stole earlier the serial ports
|
||||
* should be properly mapped */
|
||||
invalidate_tlbcam_entry(NUM_TLBCAMS - 1);
|
||||
invalidate_tlbcam_entry(num_tlbcam_entries - 1);
|
||||
#endif
|
||||
|
||||
/* setup the board related information for the enet controllers */
|
||||
|
@ -176,7 +175,7 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
|
|||
|
||||
#ifdef CONFIG_SERIAL_TEXT_DEBUG
|
||||
/* Use the last TLB entry to map CCSRBAR to allow access to DUART regs */
|
||||
settlbcam(NUM_TLBCAMS - 1, UARTA_ADDR,
|
||||
settlbcam(num_tlbcam_entries - 1, UARTA_ADDR,
|
||||
UARTA_ADDR, 0x1000, _PAGE_IO, 0);
|
||||
#endif
|
||||
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
#include <asm/time.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/open_pic.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/pci-bridge.h>
|
||||
|
@ -59,40 +58,8 @@ unsigned long pci_dram_offset = 0;
|
|||
extern unsigned long total_memory; /* in mm/init */
|
||||
|
||||
/* Internal interrupts are all Level Sensitive, and Positive Polarity */
|
||||
|
||||
static u_char sbc8560_openpic_initsenses[] __initdata = {
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 0: L2 Cache */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 1: ECM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 2: DDR DRAM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 3: LBIU */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 4: DMA 0 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 5: DMA 1 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 6: DMA 2 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 7: DMA 3 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 8: PCI/PCI-X */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 9: RIO Inbound Port Write Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 10: RIO Doorbell Inbound */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 11: RIO Outbound Message */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 12: RIO Inbound Message */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 13: TSEC 0 Transmit */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 14: TSEC 0 Receive */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 15: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 16: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 17: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 18: TSEC 0 Receive/Transmit Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 19: TSEC 1 Transmit */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 20: TSEC 1 Receive */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 21: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 22: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 23: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 24: TSEC 1 Receive/Transmit Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 25: Fast Ethernet */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 26: DUART */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 27: I2C */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 28: Performance Monitor */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 29: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 30: CPM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 31: Unused */
|
||||
MPC85XX_INTERNAL_IRQ_SENSES,
|
||||
0x0, /* External 0: */
|
||||
0x0, /* External 1: */
|
||||
#if defined(CONFIG_PCI)
|
||||
|
@ -159,7 +126,7 @@ sbc8560_init_IRQ(void)
|
|||
/* Skip reserved space and internal sources */
|
||||
openpic_set_sources(0, 32, OpenPIC_Addr + 0x10200);
|
||||
/* Map PIC IRQs 0-11 */
|
||||
openpic_set_sources(32, 12, OpenPIC_Addr + 0x10000);
|
||||
openpic_set_sources(48, 12, OpenPIC_Addr + 0x10000);
|
||||
|
||||
/* we let openpic interrupts starting from an offset, to
|
||||
* leave space for cascading interrupts underneath.
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include <asm/time.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/open_pic.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/pci-bridge.h>
|
||||
|
@ -72,38 +71,7 @@ unsigned long pci_dram_offset = 0;
|
|||
|
||||
/* Internal interrupts are all Level Sensitive, and Positive Polarity */
|
||||
static u8 gp3_openpic_initsenses[] __initdata = {
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 0: L2 Cache */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 1: ECM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 2: DDR DRAM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 3: LBIU */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 4: DMA 0 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 5: DMA 1 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 6: DMA 2 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 7: DMA 3 */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 8: PCI/PCI-X */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 9: RIO Inbound Port Write Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 10: RIO Doorbell Inbound */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 11: RIO Outbound Message */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 12: RIO Inbound Message */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 13: TSEC 0 Transmit */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 14: TSEC 0 Receive */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 15: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 16: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 17: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 18: TSEC 0 Receive/Transmit Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 19: TSEC 1 Transmit */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 20: TSEC 1 Receive */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 21: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 22: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 23: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 24: TSEC 1 Receive/Transmit Error */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 25: Fast Ethernet */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 26: DUART */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 27: I2C */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 28: Performance Monitor */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 29: Unused */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 30: CPM */
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Internal 31: Unused */
|
||||
MPC85XX_INTERNAL_IRQ_SENSES,
|
||||
0x0, /* External 0: */
|
||||
#if defined(CONFIG_PCI)
|
||||
(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 1: PCI slot 0 */
|
||||
|
@ -200,7 +168,6 @@ static struct irqaction cpm2_irqaction = {
|
|||
static void __init
|
||||
gp3_init_IRQ(void)
|
||||
{
|
||||
int i;
|
||||
bd_t *binfo = (bd_t *) __res;
|
||||
|
||||
/*
|
||||
|
@ -218,7 +185,7 @@ gp3_init_IRQ(void)
|
|||
openpic_set_sources(0, 32, OpenPIC_Addr + 0x10200);
|
||||
|
||||
/* Map PIC IRQs 0-11 */
|
||||
openpic_set_sources(32, 12, OpenPIC_Addr + 0x10000);
|
||||
openpic_set_sources(48, 12, OpenPIC_Addr + 0x10000);
|
||||
|
||||
/*
|
||||
* Let openpic interrupts starting from an offset, to
|
||||
|
|
|
@ -81,6 +81,7 @@
|
|||
#include <linux/serial.h>
|
||||
#include <linux/tty.h> /* for linux/serial_core.h */
|
||||
#include <linux/serial_core.h>
|
||||
#include <linux/serial_8250.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
#include <asm/pgtable.h>
|
||||
|
@ -99,6 +100,7 @@
|
|||
#include <asm/mpc10x.h>
|
||||
#include <asm/pci-bridge.h>
|
||||
#include <asm/kgdb.h>
|
||||
#include <asm/ppc_sys.h>
|
||||
|
||||
#include "sandpoint.h"
|
||||
|
||||
|
@ -305,6 +307,24 @@ sandpoint_setup_arch(void)
|
|||
/* Lookup PCI host bridges */
|
||||
sandpoint_find_bridges();
|
||||
|
||||
if (strncmp (cur_ppc_sys_spec->ppc_sys_name, "8245", 4) == 0)
|
||||
{
|
||||
bd_t *bp = (bd_t *)__res;
|
||||
struct plat_serial8250_port *pdata;
|
||||
pdata = (struct plat_serial8250_port *) ppc_sys_get_pdata(MPC10X_DUART);
|
||||
|
||||
if (pdata)
|
||||
{
|
||||
pdata[0].uartclk = bp->bi_busfreq;
|
||||
pdata[0].membase = ioremap(pdata[0].mapbase, 0x100);
|
||||
|
||||
/* this disables the 2nd serial port on the DUART
|
||||
* since the sandpoint does not have it connected */
|
||||
pdata[1].uartclk = 0;
|
||||
pdata[1].irq = 0;
|
||||
pdata[1].mapbase = 0;
|
||||
}
|
||||
|
||||
printk(KERN_INFO "Motorola SPS Sandpoint Test Platform\n");
|
||||
printk(KERN_INFO "Port by MontaVista Software, Inc. (source@mvista.com)\n");
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ ifeq ($(CONFIG_SERIAL_MPSC_CONSOLE),y)
|
|||
obj-$(CONFIG_SERIAL_TEXT_DEBUG) += mv64x60_dbg.o
|
||||
endif
|
||||
obj-$(CONFIG_BOOTX_TEXT) += btext.o
|
||||
obj-$(CONFIG_MPC10X_BRIDGE) += mpc10x_common.o indirect_pci.o
|
||||
obj-$(CONFIG_MPC10X_BRIDGE) += mpc10x_common.o indirect_pci.o ppc_sys.o
|
||||
obj-$(CONFIG_MPC10X_OPENPIC) += open_pic.o
|
||||
obj-$(CONFIG_40x) += dcr.o
|
||||
obj-$(CONFIG_BOOKE) += dcr.o
|
||||
|
@ -107,6 +107,7 @@ obj-$(CONFIG_83xx) += ipic.o ppc83xx_setup.o ppc_sys.o \
|
|||
ifeq ($(CONFIG_83xx),y)
|
||||
obj-$(CONFIG_PCI) += indirect_pci.o pci_auto.o
|
||||
endif
|
||||
obj-$(CONFIG_MPC8548_CDS) += todc_time.o
|
||||
obj-$(CONFIG_MPC8555_CDS) += todc_time.o
|
||||
obj-$(CONFIG_PPC_MPC52xx) += mpc52xx_setup.o mpc52xx_pic.o \
|
||||
mpc52xx_sys.o mpc52xx_devices.o ppc_sys.o
|
||||
|
|
|
@ -21,6 +21,9 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/serial_8250.h>
|
||||
#include <linux/fsl_devices.h>
|
||||
#include <linux/device.h>
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/io.h>
|
||||
|
@ -30,16 +33,7 @@
|
|||
#include <asm/pci-bridge.h>
|
||||
#include <asm/open_pic.h>
|
||||
#include <asm/mpc10x.h>
|
||||
#include <asm/ocp.h>
|
||||
|
||||
/* The OCP structure is fixed by code below, before OCP initialises.
|
||||
paddr depends on where the board places the EUMB.
|
||||
- fixed in mpc10x_bridge_init().
|
||||
irq depends on two things:
|
||||
> does the board use the EPIC at all? (PCORE does not).
|
||||
> is the EPIC in serial or parallel mode?
|
||||
- fixed in mpc10x_set_openpic().
|
||||
*/
|
||||
#include <asm/ppc_sys.h>
|
||||
|
||||
#ifdef CONFIG_MPC10X_OPENPIC
|
||||
#ifdef CONFIG_EPIC_SERIAL_MODE
|
||||
|
@ -50,35 +44,140 @@
|
|||
#define MPC10X_I2C_IRQ (EPIC_IRQ_BASE + NUM_8259_INTERRUPTS)
|
||||
#define MPC10X_DMA0_IRQ (EPIC_IRQ_BASE + 1 + NUM_8259_INTERRUPTS)
|
||||
#define MPC10X_DMA1_IRQ (EPIC_IRQ_BASE + 2 + NUM_8259_INTERRUPTS)
|
||||
#define MPC10X_UART0_IRQ (EPIC_IRQ_BASE + 4 + NUM_8259_INTERRUPTS)
|
||||
#else
|
||||
#define MPC10X_I2C_IRQ OCP_IRQ_NA
|
||||
#define MPC10X_DMA0_IRQ OCP_IRQ_NA
|
||||
#define MPC10X_DMA1_IRQ OCP_IRQ_NA
|
||||
#define MPC10X_I2C_IRQ -1
|
||||
#define MPC10X_DMA0_IRQ -1
|
||||
#define MPC10X_DMA1_IRQ -1
|
||||
#define MPC10X_UART0_IRQ -1
|
||||
#endif
|
||||
|
||||
|
||||
struct ocp_def core_ocp[] = {
|
||||
{ .vendor = OCP_VENDOR_INVALID
|
||||
}
|
||||
static struct fsl_i2c_platform_data mpc10x_i2c_pdata = {
|
||||
.device_flags = 0,
|
||||
};
|
||||
|
||||
static struct ocp_fs_i2c_data mpc10x_i2c_data = {
|
||||
.flags = 0
|
||||
};
|
||||
static struct ocp_def mpc10x_i2c_ocp = {
|
||||
.vendor = OCP_VENDOR_MOTOROLA,
|
||||
.function = OCP_FUNC_IIC,
|
||||
.index = 0,
|
||||
.additions = &mpc10x_i2c_data
|
||||
static struct plat_serial8250_port serial_platform_data[] = {
|
||||
[0] = {
|
||||
.mapbase = 0x4500,
|
||||
.iotype = UPIO_MEM,
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
|
||||
},
|
||||
[1] = {
|
||||
.mapbase = 0x4600,
|
||||
.iotype = UPIO_MEM,
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
|
||||
},
|
||||
{ },
|
||||
};
|
||||
|
||||
static struct ocp_def mpc10x_dma_ocp[2] = {
|
||||
{ .vendor = OCP_VENDOR_MOTOROLA,
|
||||
.function = OCP_FUNC_DMA,
|
||||
.index = 0 },
|
||||
{ .vendor = OCP_VENDOR_MOTOROLA,
|
||||
.function = OCP_FUNC_DMA,
|
||||
.index = 1 }
|
||||
struct platform_device ppc_sys_platform_devices[] = {
|
||||
[MPC10X_IIC1] = {
|
||||
.name = "fsl-i2c",
|
||||
.id = 1,
|
||||
.dev.platform_data = &mpc10x_i2c_pdata,
|
||||
.num_resources = 2,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.start = MPC10X_EUMB_I2C_OFFSET,
|
||||
.end = MPC10X_EUMB_I2C_OFFSET +
|
||||
MPC10X_EUMB_I2C_SIZE - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.flags = IORESOURCE_IRQ
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC10X_DMA0] = {
|
||||
.name = "fsl-dma",
|
||||
.id = 0,
|
||||
.num_resources = 2,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.start = MPC10X_EUMB_DMA_OFFSET + 0x10,
|
||||
.end = MPC10X_EUMB_DMA_OFFSET + 0x1f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC10X_DMA1] = {
|
||||
.name = "fsl-dma",
|
||||
.id = 1,
|
||||
.num_resources = 2,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.start = MPC10X_EUMB_DMA_OFFSET + 0x20,
|
||||
.end = MPC10X_EUMB_DMA_OFFSET + 0x2f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC10X_DMA1] = {
|
||||
.name = "fsl-dma",
|
||||
.id = 1,
|
||||
.num_resources = 2,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.start = MPC10X_EUMB_DMA_OFFSET + 0x20,
|
||||
.end = MPC10X_EUMB_DMA_OFFSET + 0x2f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC10X_DUART] = {
|
||||
.name = "serial8250",
|
||||
.id = 0,
|
||||
.dev.platform_data = serial_platform_data,
|
||||
},
|
||||
};
|
||||
|
||||
/* We use the PCI ID to match on */
|
||||
struct ppc_sys_spec *cur_ppc_sys_spec;
|
||||
struct ppc_sys_spec ppc_sys_specs[] = {
|
||||
{
|
||||
.ppc_sys_name = "8245",
|
||||
.mask = 0xFFFFFFFF,
|
||||
.value = MPC10X_BRIDGE_8245,
|
||||
.num_devices = 4,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC10X_IIC1, MPC10X_DMA0, MPC10X_DMA1, MPC10X_DUART,
|
||||
},
|
||||
},
|
||||
{
|
||||
.ppc_sys_name = "8240",
|
||||
.mask = 0xFFFFFFFF,
|
||||
.value = MPC10X_BRIDGE_8240,
|
||||
.num_devices = 3,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC10X_IIC1, MPC10X_DMA0, MPC10X_DMA1,
|
||||
},
|
||||
},
|
||||
{
|
||||
.ppc_sys_name = "107",
|
||||
.mask = 0xFFFFFFFF,
|
||||
.value = MPC10X_BRIDGE_107,
|
||||
.num_devices = 3,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC10X_IIC1, MPC10X_DMA0, MPC10X_DMA1,
|
||||
},
|
||||
},
|
||||
{ /* default match */
|
||||
.ppc_sys_name = "",
|
||||
.mask = 0x00000000,
|
||||
.value = 0x00000000,
|
||||
},
|
||||
};
|
||||
|
||||
/* Set resources to match bridge memory map */
|
||||
|
@ -132,7 +231,7 @@ mpc10x_bridge_init(struct pci_controller *hose,
|
|||
uint new_map,
|
||||
uint phys_eumb_base)
|
||||
{
|
||||
int host_bridge, picr1, picr1_bit;
|
||||
int host_bridge, picr1, picr1_bit, i;
|
||||
ulong pci_config_addr, pci_config_data;
|
||||
u_char pir, byte;
|
||||
|
||||
|
@ -273,7 +372,7 @@ mpc10x_bridge_init(struct pci_controller *hose,
|
|||
printk("Host bridge in Agent mode\n");
|
||||
/* Read or Set LMBAR & PCSRBAR? */
|
||||
}
|
||||
|
||||
|
||||
/* Set base addr of the 8240/107 EUMB. */
|
||||
early_write_config_dword(hose,
|
||||
0,
|
||||
|
@ -287,17 +386,6 @@ mpc10x_bridge_init(struct pci_controller *hose,
|
|||
ioremap(phys_eumb_base + MPC10X_EUMB_EPIC_OFFSET,
|
||||
MPC10X_EUMB_EPIC_SIZE);
|
||||
#endif
|
||||
mpc10x_i2c_ocp.paddr = phys_eumb_base + MPC10X_EUMB_I2C_OFFSET;
|
||||
mpc10x_i2c_ocp.irq = MPC10X_I2C_IRQ;
|
||||
ocp_add_one_device(&mpc10x_i2c_ocp);
|
||||
mpc10x_dma_ocp[0].paddr = phys_eumb_base +
|
||||
MPC10X_EUMB_DMA_OFFSET + 0x100;
|
||||
mpc10x_dma_ocp[0].irq = MPC10X_DMA0_IRQ;
|
||||
ocp_add_one_device(&mpc10x_dma_ocp[0]);
|
||||
mpc10x_dma_ocp[1].paddr = phys_eumb_base +
|
||||
MPC10X_EUMB_DMA_OFFSET + 0x200;
|
||||
mpc10x_dma_ocp[1].irq = MPC10X_DMA1_IRQ;
|
||||
ocp_add_one_device(&mpc10x_dma_ocp[1]);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MPC10X_STORE_GATHERING
|
||||
|
@ -306,6 +394,29 @@ mpc10x_bridge_init(struct pci_controller *hose,
|
|||
mpc10x_disable_store_gathering(hose);
|
||||
#endif
|
||||
|
||||
/* setup platform devices for MPC10x bridges */
|
||||
identify_ppc_sys_by_id (host_bridge);
|
||||
|
||||
for (i = 0; i < cur_ppc_sys_spec->num_devices; i++) {
|
||||
unsigned int dev_id = cur_ppc_sys_spec->device_list[i];
|
||||
ppc_sys_fixup_mem_resource(&ppc_sys_platform_devices[dev_id],
|
||||
phys_eumb_base);
|
||||
}
|
||||
|
||||
/* IRQ's are determined at runtime */
|
||||
ppc_sys_platform_devices[MPC10X_IIC1].resource[1].start = MPC10X_I2C_IRQ;
|
||||
ppc_sys_platform_devices[MPC10X_IIC1].resource[1].end = MPC10X_I2C_IRQ;
|
||||
ppc_sys_platform_devices[MPC10X_DMA0].resource[1].start = MPC10X_DMA0_IRQ;
|
||||
ppc_sys_platform_devices[MPC10X_DMA0].resource[1].end = MPC10X_DMA0_IRQ;
|
||||
ppc_sys_platform_devices[MPC10X_DMA1].resource[1].start = MPC10X_DMA1_IRQ;
|
||||
ppc_sys_platform_devices[MPC10X_DMA1].resource[1].end = MPC10X_DMA1_IRQ;
|
||||
|
||||
serial_platform_data[0].mapbase += phys_eumb_base;
|
||||
serial_platform_data[0].irq = MPC10X_UART0_IRQ;
|
||||
|
||||
serial_platform_data[1].mapbase += phys_eumb_base;
|
||||
serial_platform_data[1].irq = MPC10X_UART0_IRQ + 1;
|
||||
|
||||
/*
|
||||
* 8240 erratum 26, 8241/8245 erratum 29, 107 erratum 23: speculative
|
||||
* PCI reads may return stale data so turn off.
|
||||
|
@ -330,7 +441,7 @@ mpc10x_bridge_init(struct pci_controller *hose,
|
|||
* 8245 (Rev 2., dated 10/2003) says PICR2[0] is reserverd.
|
||||
*/
|
||||
if (host_bridge == MPC10X_BRIDGE_8245) {
|
||||
ulong picr2;
|
||||
u32 picr2;
|
||||
|
||||
early_read_config_dword(hose, 0, PCI_DEVFN(0,0),
|
||||
MPC10X_CFG_PICR2_REG, &picr2);
|
||||
|
@ -504,6 +615,8 @@ void __init mpc10x_set_openpic(void)
|
|||
openpic_set_sources(EPIC_IRQ_BASE, 3, OpenPIC_Addr + 0x11020);
|
||||
/* Skip reserved space and map Message Unit Interrupt (I2O) */
|
||||
openpic_set_sources(EPIC_IRQ_BASE + 3, 1, OpenPIC_Addr + 0x110C0);
|
||||
/* Skip reserved space and map Serial Interupts */
|
||||
openpic_set_sources(EPIC_IRQ_BASE + 4, 2, OpenPIC_Addr + 0x11120);
|
||||
|
||||
openpic_init(NUM_8259_INTERRUPTS);
|
||||
}
|
||||
|
|
|
@ -40,6 +40,42 @@ static struct gianfar_platform_data mpc85xx_tsec2_pdata = {
|
|||
.phy_reg_addr = MPC85xx_ENET1_OFFSET,
|
||||
};
|
||||
|
||||
static struct gianfar_platform_data mpc85xx_etsec1_pdata = {
|
||||
.device_flags = FSL_GIANFAR_DEV_HAS_GIGABIT |
|
||||
FSL_GIANFAR_DEV_HAS_COALESCE | FSL_GIANFAR_DEV_HAS_RMON |
|
||||
FSL_GIANFAR_DEV_HAS_MULTI_INTR |
|
||||
FSL_GIANFAR_DEV_HAS_CSUM | FSL_GIANFAR_DEV_HAS_VLAN |
|
||||
FSL_GIANFAR_DEV_HAS_EXTENDED_HASH,
|
||||
.phy_reg_addr = MPC85xx_ENET1_OFFSET,
|
||||
};
|
||||
|
||||
static struct gianfar_platform_data mpc85xx_etsec2_pdata = {
|
||||
.device_flags = FSL_GIANFAR_DEV_HAS_GIGABIT |
|
||||
FSL_GIANFAR_DEV_HAS_COALESCE | FSL_GIANFAR_DEV_HAS_RMON |
|
||||
FSL_GIANFAR_DEV_HAS_MULTI_INTR |
|
||||
FSL_GIANFAR_DEV_HAS_CSUM | FSL_GIANFAR_DEV_HAS_VLAN |
|
||||
FSL_GIANFAR_DEV_HAS_EXTENDED_HASH,
|
||||
.phy_reg_addr = MPC85xx_ENET1_OFFSET,
|
||||
};
|
||||
|
||||
static struct gianfar_platform_data mpc85xx_etsec3_pdata = {
|
||||
.device_flags = FSL_GIANFAR_DEV_HAS_GIGABIT |
|
||||
FSL_GIANFAR_DEV_HAS_COALESCE | FSL_GIANFAR_DEV_HAS_RMON |
|
||||
FSL_GIANFAR_DEV_HAS_MULTI_INTR |
|
||||
FSL_GIANFAR_DEV_HAS_CSUM | FSL_GIANFAR_DEV_HAS_VLAN |
|
||||
FSL_GIANFAR_DEV_HAS_EXTENDED_HASH,
|
||||
.phy_reg_addr = MPC85xx_ENET1_OFFSET,
|
||||
};
|
||||
|
||||
static struct gianfar_platform_data mpc85xx_etsec4_pdata = {
|
||||
.device_flags = FSL_GIANFAR_DEV_HAS_GIGABIT |
|
||||
FSL_GIANFAR_DEV_HAS_COALESCE | FSL_GIANFAR_DEV_HAS_RMON |
|
||||
FSL_GIANFAR_DEV_HAS_MULTI_INTR |
|
||||
FSL_GIANFAR_DEV_HAS_CSUM | FSL_GIANFAR_DEV_HAS_VLAN |
|
||||
FSL_GIANFAR_DEV_HAS_EXTENDED_HASH,
|
||||
.phy_reg_addr = MPC85xx_ENET1_OFFSET,
|
||||
};
|
||||
|
||||
static struct gianfar_platform_data mpc85xx_fec_pdata = {
|
||||
.phy_reg_addr = MPC85xx_ENET1_OFFSET,
|
||||
};
|
||||
|
@ -48,6 +84,10 @@ static struct fsl_i2c_platform_data mpc85xx_fsl_i2c_pdata = {
|
|||
.device_flags = FSL_I2C_DEV_SEPARATE_DFSRR,
|
||||
};
|
||||
|
||||
static struct fsl_i2c_platform_data mpc85xx_fsl_i2c2_pdata = {
|
||||
.device_flags = FSL_I2C_DEV_SEPARATE_DFSRR,
|
||||
};
|
||||
|
||||
static struct plat_serial8250_port serial_platform_data[] = {
|
||||
[0] = {
|
||||
.mapbase = 0x4500,
|
||||
|
@ -281,7 +321,6 @@ struct platform_device ppc_sys_platform_devices[] = {
|
|||
},
|
||||
},
|
||||
},
|
||||
#ifdef CONFIG_CPM2
|
||||
[MPC85xx_CPM_FCC1] = {
|
||||
.name = "fsl-cpm-fcc",
|
||||
.id = 1,
|
||||
|
@ -535,7 +574,151 @@ struct platform_device ppc_sys_platform_devices[] = {
|
|||
},
|
||||
},
|
||||
},
|
||||
#endif /* CONFIG_CPM2 */
|
||||
[MPC85xx_eTSEC1] = {
|
||||
.name = "fsl-gianfar",
|
||||
.id = 1,
|
||||
.dev.platform_data = &mpc85xx_etsec1_pdata,
|
||||
.num_resources = 4,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.start = MPC85xx_ENET1_OFFSET,
|
||||
.end = MPC85xx_ENET1_OFFSET +
|
||||
MPC85xx_ENET1_SIZE - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "tx",
|
||||
.start = MPC85xx_IRQ_TSEC1_TX,
|
||||
.end = MPC85xx_IRQ_TSEC1_TX,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.name = "rx",
|
||||
.start = MPC85xx_IRQ_TSEC1_RX,
|
||||
.end = MPC85xx_IRQ_TSEC1_RX,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.name = "error",
|
||||
.start = MPC85xx_IRQ_TSEC1_ERROR,
|
||||
.end = MPC85xx_IRQ_TSEC1_ERROR,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC85xx_eTSEC2] = {
|
||||
.name = "fsl-gianfar",
|
||||
.id = 2,
|
||||
.dev.platform_data = &mpc85xx_etsec2_pdata,
|
||||
.num_resources = 4,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.start = MPC85xx_ENET2_OFFSET,
|
||||
.end = MPC85xx_ENET2_OFFSET +
|
||||
MPC85xx_ENET2_SIZE - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "tx",
|
||||
.start = MPC85xx_IRQ_TSEC2_TX,
|
||||
.end = MPC85xx_IRQ_TSEC2_TX,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.name = "rx",
|
||||
.start = MPC85xx_IRQ_TSEC2_RX,
|
||||
.end = MPC85xx_IRQ_TSEC2_RX,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.name = "error",
|
||||
.start = MPC85xx_IRQ_TSEC2_ERROR,
|
||||
.end = MPC85xx_IRQ_TSEC2_ERROR,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC85xx_eTSEC3] = {
|
||||
.name = "fsl-gianfar",
|
||||
.id = 3,
|
||||
.dev.platform_data = &mpc85xx_etsec3_pdata,
|
||||
.num_resources = 4,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.start = MPC85xx_ENET3_OFFSET,
|
||||
.end = MPC85xx_ENET3_OFFSET +
|
||||
MPC85xx_ENET3_SIZE - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "tx",
|
||||
.start = MPC85xx_IRQ_TSEC3_TX,
|
||||
.end = MPC85xx_IRQ_TSEC3_TX,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.name = "rx",
|
||||
.start = MPC85xx_IRQ_TSEC3_RX,
|
||||
.end = MPC85xx_IRQ_TSEC3_RX,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.name = "error",
|
||||
.start = MPC85xx_IRQ_TSEC3_ERROR,
|
||||
.end = MPC85xx_IRQ_TSEC3_ERROR,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC85xx_eTSEC4] = {
|
||||
.name = "fsl-gianfar",
|
||||
.id = 4,
|
||||
.dev.platform_data = &mpc85xx_etsec4_pdata,
|
||||
.num_resources = 4,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.start = 0x27000,
|
||||
.end = 0x27fff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "tx",
|
||||
.start = MPC85xx_IRQ_TSEC4_TX,
|
||||
.end = MPC85xx_IRQ_TSEC4_TX,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.name = "rx",
|
||||
.start = MPC85xx_IRQ_TSEC4_RX,
|
||||
.end = MPC85xx_IRQ_TSEC4_RX,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.name = "error",
|
||||
.start = MPC85xx_IRQ_TSEC4_ERROR,
|
||||
.end = MPC85xx_IRQ_TSEC4_ERROR,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC85xx_IIC2] = {
|
||||
.name = "fsl-i2c",
|
||||
.id = 2,
|
||||
.dev.platform_data = &mpc85xx_fsl_i2c2_pdata,
|
||||
.num_resources = 2,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.start = 0x03100,
|
||||
.end = 0x031ff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = MPC85xx_IRQ_IIC1,
|
||||
.end = MPC85xx_IRQ_IIC1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static int __init mach_mpc85xx_fixup(struct platform_device *pdev)
|
||||
|
|
|
@ -110,6 +110,111 @@ struct ppc_sys_spec ppc_sys_specs[] = {
|
|||
MPC85xx_CPM_USB,
|
||||
},
|
||||
},
|
||||
/* SVRs on 8548 rev1.0 matches for 8548/8547/8545 */
|
||||
{
|
||||
.ppc_sys_name = "8548E",
|
||||
.mask = 0xFFFF00F0,
|
||||
.value = 0x80390010,
|
||||
.num_devices = 13,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
|
||||
MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
|
||||
MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
|
||||
MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
|
||||
},
|
||||
},
|
||||
{
|
||||
.ppc_sys_name = "8548",
|
||||
.mask = 0xFFFF00F0,
|
||||
.value = 0x80310010,
|
||||
.num_devices = 12,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
|
||||
MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
|
||||
MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
|
||||
MPC85xx_PERFMON, MPC85xx_DUART,
|
||||
},
|
||||
},
|
||||
{
|
||||
.ppc_sys_name = "8547E",
|
||||
.mask = 0xFFFF00F0,
|
||||
.value = 0x80390010,
|
||||
.num_devices = 13,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
|
||||
MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
|
||||
MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
|
||||
MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
|
||||
},
|
||||
},
|
||||
{
|
||||
.ppc_sys_name = "8547",
|
||||
.mask = 0xFFFF00F0,
|
||||
.value = 0x80310010,
|
||||
.num_devices = 12,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
|
||||
MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
|
||||
MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
|
||||
MPC85xx_PERFMON, MPC85xx_DUART,
|
||||
},
|
||||
},
|
||||
{
|
||||
.ppc_sys_name = "8545E",
|
||||
.mask = 0xFFFF00F0,
|
||||
.value = 0x80390010,
|
||||
.num_devices = 11,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC85xx_eTSEC1, MPC85xx_eTSEC2,
|
||||
MPC85xx_IIC1, MPC85xx_IIC2,
|
||||
MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
|
||||
MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
|
||||
},
|
||||
},
|
||||
{
|
||||
.ppc_sys_name = "8545",
|
||||
.mask = 0xFFFF00F0,
|
||||
.value = 0x80310010,
|
||||
.num_devices = 10,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC85xx_eTSEC1, MPC85xx_eTSEC2,
|
||||
MPC85xx_IIC1, MPC85xx_IIC2,
|
||||
MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
|
||||
MPC85xx_PERFMON, MPC85xx_DUART,
|
||||
},
|
||||
},
|
||||
{
|
||||
.ppc_sys_name = "8543E",
|
||||
.mask = 0xFFFF00F0,
|
||||
.value = 0x803A0010,
|
||||
.num_devices = 11,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC85xx_eTSEC1, MPC85xx_eTSEC2,
|
||||
MPC85xx_IIC1, MPC85xx_IIC2,
|
||||
MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
|
||||
MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
|
||||
},
|
||||
},
|
||||
{
|
||||
.ppc_sys_name = "8543",
|
||||
.mask = 0xFFFF00F0,
|
||||
.value = 0x80320010,
|
||||
.num_devices = 10,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC85xx_eTSEC1, MPC85xx_eTSEC2,
|
||||
MPC85xx_IIC1, MPC85xx_IIC2,
|
||||
MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
|
||||
MPC85xx_PERFMON, MPC85xx_DUART,
|
||||
},
|
||||
},
|
||||
{ /* default match */
|
||||
.ppc_sys_name = "",
|
||||
.mask = 0x00000000,
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include <asm/signal.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/open_pic.h>
|
||||
#include <asm/i8259.h>
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include <asm/signal.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/open_pic.h>
|
||||
#include <asm/i8259.h>
|
||||
|
|
|
@ -1,124 +0,0 @@
|
|||
#include <linux/config.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/ibm4xx.h>
|
||||
#include <linux/kernel.h>
|
||||
|
||||
|
||||
|
||||
#define LSR_DR 0x01 /* Data ready */
|
||||
#define LSR_OE 0x02 /* Overrun */
|
||||
#define LSR_PE 0x04 /* Parity error */
|
||||
#define LSR_FE 0x08 /* Framing error */
|
||||
#define LSR_BI 0x10 /* Break */
|
||||
#define LSR_THRE 0x20 /* Xmit holding register empty */
|
||||
#define LSR_TEMT 0x40 /* Xmitter empty */
|
||||
#define LSR_ERR 0x80 /* Error */
|
||||
|
||||
#include <platforms/4xx/ibm_ocp.h>
|
||||
|
||||
extern struct NS16550* COM_PORTS[];
|
||||
#ifndef NULL
|
||||
#define NULL 0x00
|
||||
#endif
|
||||
|
||||
static volatile struct NS16550 *kgdb_debugport = NULL;
|
||||
|
||||
volatile struct NS16550 *
|
||||
NS16550_init(int chan)
|
||||
{
|
||||
volatile struct NS16550 *com_port;
|
||||
int quot;
|
||||
#ifdef BASE_BAUD
|
||||
quot = BASE_BAUD / 9600;
|
||||
#else
|
||||
quot = 0x000c; /* 0xc = 9600 baud (on a pc) */
|
||||
#endif
|
||||
|
||||
com_port = (struct NS16550 *) COM_PORTS[chan];
|
||||
|
||||
com_port->lcr = 0x00;
|
||||
com_port->ier = 0xFF;
|
||||
com_port->ier = 0x00;
|
||||
com_port->lcr = com_port->lcr | 0x80; /* Access baud rate */
|
||||
com_port->dll = ( quot & 0x00ff ); /* 0xc = 9600 baud */
|
||||
com_port->dlm = ( quot & 0xff00 ) >> 8;
|
||||
com_port->lcr = 0x03; /* 8 data, 1 stop, no parity */
|
||||
com_port->mcr = 0x00; /* RTS/DTR */
|
||||
com_port->fcr = 0x07; /* Clear & enable FIFOs */
|
||||
|
||||
return( com_port );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
NS16550_putc(volatile struct NS16550 *com_port, unsigned char c)
|
||||
{
|
||||
while ((com_port->lsr & LSR_THRE) == 0)
|
||||
;
|
||||
com_port->thr = c;
|
||||
return;
|
||||
}
|
||||
|
||||
unsigned char
|
||||
NS16550_getc(volatile struct NS16550 *com_port)
|
||||
{
|
||||
while ((com_port->lsr & LSR_DR) == 0)
|
||||
;
|
||||
return (com_port->rbr);
|
||||
}
|
||||
|
||||
unsigned char
|
||||
NS16550_tstc(volatile struct NS16550 *com_port)
|
||||
{
|
||||
return ((com_port->lsr & LSR_DR) != 0);
|
||||
}
|
||||
|
||||
|
||||
#if defined(CONFIG_KGDB_TTYS0)
|
||||
#define KGDB_PORT 0
|
||||
#elif defined(CONFIG_KGDB_TTYS1)
|
||||
#define KGDB_PORT 1
|
||||
#elif defined(CONFIG_KGDB_TTYS2)
|
||||
#define KGDB_PORT 2
|
||||
#elif defined(CONFIG_KGDB_TTYS3)
|
||||
#define KGDB_PORT 3
|
||||
#else
|
||||
#error "invalid kgdb_tty port"
|
||||
#endif
|
||||
|
||||
void putDebugChar( unsigned char c )
|
||||
{
|
||||
if ( kgdb_debugport == NULL )
|
||||
kgdb_debugport = NS16550_init(KGDB_PORT);
|
||||
NS16550_putc( kgdb_debugport, c );
|
||||
}
|
||||
|
||||
int getDebugChar( void )
|
||||
{
|
||||
if (kgdb_debugport == NULL)
|
||||
kgdb_debugport = NS16550_init(KGDB_PORT);
|
||||
|
||||
return(NS16550_getc(kgdb_debugport));
|
||||
}
|
||||
|
||||
void kgdb_interruptible(int enable)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void putDebugString(char* str)
|
||||
{
|
||||
while (*str != '\0') {
|
||||
putDebugChar(*str);
|
||||
str++;
|
||||
}
|
||||
putDebugChar('\r');
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
kgdb_map_scc(void)
|
||||
{
|
||||
printk("kgdb init \n");
|
||||
kgdb_debugport = NS16550_init(KGDB_PORT);
|
||||
}
|
|
@ -23,7 +23,6 @@
|
|||
#include <linux/serial_core.h>
|
||||
#include <linux/serial_8250.h>
|
||||
|
||||
#include <asm/prom.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/mpc83xx.h>
|
||||
#include <asm/mmu.h>
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
#include <linux/serial_core.h>
|
||||
#include <linux/serial_8250.h>
|
||||
|
||||
#include <asm/prom.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/mpc85xx.h>
|
||||
#include <asm/immap_85xx.h>
|
||||
|
@ -33,6 +32,8 @@
|
|||
|
||||
#include <syslib/ppc85xx_setup.h>
|
||||
|
||||
extern void abort(void);
|
||||
|
||||
/* Return the amount of memory */
|
||||
unsigned long __init
|
||||
mpc85xx_find_end_of_memory(void)
|
||||
|
@ -133,7 +134,7 @@ mpc85xx_halt(void)
|
|||
|
||||
#ifdef CONFIG_PCI
|
||||
|
||||
#if defined(CONFIG_MPC8555_CDS)
|
||||
#if defined(CONFIG_MPC8555_CDS) || defined(CONFIG_MPC8548_CDS)
|
||||
extern void mpc85xx_cds_enable_via(struct pci_controller *hose);
|
||||
extern void mpc85xx_cds_fixup_via(struct pci_controller *hose);
|
||||
#endif
|
||||
|
@ -308,14 +309,14 @@ mpc85xx_setup_hose(void)
|
|||
|
||||
ppc_md.pci_exclude_device = mpc85xx_exclude_device;
|
||||
|
||||
#if defined(CONFIG_MPC8555_CDS)
|
||||
#if defined(CONFIG_MPC8555_CDS) || defined(CONFIG_MPC8548_CDS)
|
||||
/* Pre pciauto_bus_scan VIA init */
|
||||
mpc85xx_cds_enable_via(hose_a);
|
||||
#endif
|
||||
|
||||
hose_a->last_busno = pciauto_bus_scan(hose_a, hose_a->first_busno);
|
||||
|
||||
#if defined(CONFIG_MPC8555_CDS)
|
||||
#if defined(CONFIG_MPC8555_CDS) || defined(CONFIG_MPC8548_CDS)
|
||||
/* Post pciauto_bus_scan VIA fixup */
|
||||
mpc85xx_cds_fixup_via(hose_a);
|
||||
#endif
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <linux/smp.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/kallsyms.h>
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/string.h>
|
||||
#include <asm/prom.h>
|
||||
|
@ -93,8 +94,7 @@ static void take_input(char *);
|
|||
static unsigned read_spr(int);
|
||||
static void write_spr(int, unsigned);
|
||||
static void super_regs(void);
|
||||
static void print_sysmap(void);
|
||||
static void sysmap_lookup(void);
|
||||
static void symbol_lookup(void);
|
||||
static void remove_bpts(void);
|
||||
static void insert_bpts(void);
|
||||
static struct bpt *at_breakpoint(unsigned pc);
|
||||
|
@ -103,7 +103,6 @@ static void cacheflush(void);
|
|||
#ifdef CONFIG_SMP
|
||||
static void cpu_cmd(void);
|
||||
#endif /* CONFIG_SMP */
|
||||
static int pretty_print_addr(unsigned long addr);
|
||||
static void csum(void);
|
||||
#ifdef CONFIG_BOOTX_TEXT
|
||||
static void vidcmds(void);
|
||||
|
@ -120,8 +119,6 @@ extern void longjmp(u_int *, int);
|
|||
|
||||
extern void xmon_enter(void);
|
||||
extern void xmon_leave(void);
|
||||
extern char* xmon_find_symbol(unsigned long addr, unsigned long* saddr);
|
||||
extern unsigned long xmon_symbol_to_addr(char* symbol);
|
||||
|
||||
static unsigned start_tb[NR_CPUS][2];
|
||||
static unsigned stop_tb[NR_CPUS][2];
|
||||
|
@ -148,7 +145,6 @@ Commands:\n\
|
|||
mm move a block of memory\n\
|
||||
ms set a block of memory\n\
|
||||
md compare two blocks of memory\n\
|
||||
M print System.map\n\
|
||||
r print registers\n\
|
||||
S print special registers\n\
|
||||
t print backtrace\n\
|
||||
|
@ -175,6 +171,35 @@ extern inline void __delay(unsigned int loops)
|
|||
"r" (loops) : "ctr");
|
||||
}
|
||||
|
||||
/* Print an address in numeric and symbolic form (if possible) */
|
||||
static void xmon_print_symbol(unsigned long address, const char *mid,
|
||||
const char *after)
|
||||
{
|
||||
char *modname;
|
||||
const char *name = NULL;
|
||||
unsigned long offset, size;
|
||||
static char tmpstr[128];
|
||||
|
||||
printf("%.8lx", address);
|
||||
if (setjmp(bus_error_jmp) == 0) {
|
||||
debugger_fault_handler = handle_fault;
|
||||
sync();
|
||||
name = kallsyms_lookup(address, &size, &offset, &modname,
|
||||
tmpstr);
|
||||
sync();
|
||||
/* wait a little while to see if we get a machine check */
|
||||
__delay(200);
|
||||
}
|
||||
debugger_fault_handler = NULL;
|
||||
|
||||
if (name) {
|
||||
printf("%s%s+%#lx/%#lx", mid, name, offset, size);
|
||||
if (modname)
|
||||
printf(" [%s]", modname);
|
||||
}
|
||||
printf("%s", after);
|
||||
}
|
||||
|
||||
static void get_tb(unsigned *p)
|
||||
{
|
||||
unsigned hi, lo, hiagain;
|
||||
|
@ -454,7 +479,7 @@ cmds(struct pt_regs *excp)
|
|||
dump();
|
||||
break;
|
||||
case 'l':
|
||||
sysmap_lookup();
|
||||
symbol_lookup();
|
||||
break;
|
||||
case 'r':
|
||||
if (excp != NULL)
|
||||
|
@ -466,9 +491,6 @@ cmds(struct pt_regs *excp)
|
|||
else
|
||||
excprint(excp);
|
||||
break;
|
||||
case 'M':
|
||||
print_sysmap();
|
||||
break;
|
||||
case 'S':
|
||||
super_regs();
|
||||
break;
|
||||
|
@ -825,20 +847,19 @@ backtrace(struct pt_regs *excp)
|
|||
for (; sp != 0; sp = stack[0]) {
|
||||
if (mread(sp, stack, sizeof(stack)) != sizeof(stack))
|
||||
break;
|
||||
pretty_print_addr(stack[1]);
|
||||
printf(" ");
|
||||
printf("[%.8lx] ", stack);
|
||||
xmon_print_symbol(stack[1], " ", "\n");
|
||||
if (stack[1] == (unsigned) &ret_from_except
|
||||
|| stack[1] == (unsigned) &ret_from_except_full
|
||||
|| stack[1] == (unsigned) &ret_from_syscall) {
|
||||
if (mread(sp+16, ®s, sizeof(regs)) != sizeof(regs))
|
||||
break;
|
||||
printf("\nexception:%x [%x] %x ", regs.trap, sp+16,
|
||||
printf("exception:%x [%x] %x\n", regs.trap, sp+16,
|
||||
regs.nip);
|
||||
sp = regs.gpr[1];
|
||||
if (mread(sp, stack, sizeof(stack)) != sizeof(stack))
|
||||
break;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -859,11 +880,10 @@ excprint(struct pt_regs *fp)
|
|||
#ifdef CONFIG_SMP
|
||||
printf("cpu %d: ", smp_processor_id());
|
||||
#endif /* CONFIG_SMP */
|
||||
printf("vector: %x at pc = ", fp->trap);
|
||||
pretty_print_addr(fp->nip);
|
||||
printf(", lr = ");
|
||||
pretty_print_addr(fp->link);
|
||||
printf("\nmsr = %x, sp = %x [%x]\n", fp->msr, fp->gpr[1], fp);
|
||||
printf("vector: %x at pc=", fp->trap);
|
||||
xmon_print_symbol(fp->nip, ": ", ", lr=");
|
||||
xmon_print_symbol(fp->link, ": ", "\n");
|
||||
printf("msr = %x, sp = %x [%x]\n", fp->msr, fp->gpr[1], fp);
|
||||
trap = TRAP(fp);
|
||||
if (trap == 0x300 || trap == 0x600)
|
||||
printf("dar = %x, dsisr = %x\n", fp->dar, fp->dsisr);
|
||||
|
@ -950,24 +970,6 @@ static unsigned int regno;
|
|||
extern char exc_prolog;
|
||||
extern char dec_exc;
|
||||
|
||||
void
|
||||
print_sysmap(void)
|
||||
{
|
||||
extern char *sysmap;
|
||||
if ( sysmap ) {
|
||||
printf("System.map: \n");
|
||||
if( setjmp(bus_error_jmp) == 0 ) {
|
||||
debugger_fault_handler = handle_fault;
|
||||
sync();
|
||||
xmon_puts(sysmap);
|
||||
sync();
|
||||
}
|
||||
debugger_fault_handler = NULL;
|
||||
}
|
||||
else
|
||||
printf("No System.map\n");
|
||||
}
|
||||
|
||||
void
|
||||
super_regs(void)
|
||||
{
|
||||
|
@ -1738,7 +1740,7 @@ scanhex(unsigned *vp)
|
|||
printf("invalid register name '%%%s'\n", regname);
|
||||
return 0;
|
||||
} else if (c == '$') {
|
||||
static char symname[64];
|
||||
static char symname[128];
|
||||
int i;
|
||||
for (i=0; i<63; i++) {
|
||||
c = inchar();
|
||||
|
@ -1749,7 +1751,14 @@ scanhex(unsigned *vp)
|
|||
symname[i] = c;
|
||||
}
|
||||
symname[i++] = 0;
|
||||
*vp = xmon_symbol_to_addr(symname);
|
||||
*vp = 0;
|
||||
if (setjmp(bus_error_jmp) == 0) {
|
||||
debugger_fault_handler = handle_fault;
|
||||
sync();
|
||||
*vp = kallsyms_lookup_name(symname);
|
||||
sync();
|
||||
}
|
||||
debugger_fault_handler = NULL;
|
||||
if (!(*vp)) {
|
||||
printf("unknown symbol\n");
|
||||
return 0;
|
||||
|
@ -1840,169 +1849,34 @@ take_input(char *str)
|
|||
lineptr = str;
|
||||
}
|
||||
|
||||
void
|
||||
sysmap_lookup(void)
|
||||
static void
|
||||
symbol_lookup(void)
|
||||
{
|
||||
int type = inchar();
|
||||
unsigned addr;
|
||||
static char tmp[64];
|
||||
char* cur;
|
||||
static char tmp[128];
|
||||
|
||||
extern char *sysmap;
|
||||
extern unsigned long sysmap_size;
|
||||
if ( !sysmap || !sysmap_size )
|
||||
return;
|
||||
|
||||
switch(type) {
|
||||
case 'a':
|
||||
if (scanhex(&addr)) {
|
||||
pretty_print_addr(addr);
|
||||
printf("\n");
|
||||
}
|
||||
termch = 0;
|
||||
break;
|
||||
case 's':
|
||||
getstring(tmp, 64);
|
||||
if( setjmp(bus_error_jmp) == 0 ) {
|
||||
debugger_fault_handler = handle_fault;
|
||||
sync();
|
||||
cur = sysmap;
|
||||
do {
|
||||
cur = strstr(cur, tmp);
|
||||
if (cur) {
|
||||
static char res[64];
|
||||
char *p, *d;
|
||||
p = cur;
|
||||
while(p > sysmap && *p != 10)
|
||||
p--;
|
||||
if (*p == 10) p++;
|
||||
d = res;
|
||||
while(*p && p < (sysmap + sysmap_size) && *p != 10)
|
||||
*(d++) = *(p++);
|
||||
*(d++) = 0;
|
||||
printf("%s\n", res);
|
||||
cur++;
|
||||
}
|
||||
} while (cur);
|
||||
sync();
|
||||
}
|
||||
debugger_fault_handler = NULL;
|
||||
termch = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
pretty_print_addr(unsigned long addr)
|
||||
{
|
||||
char *sym;
|
||||
unsigned long saddr;
|
||||
|
||||
printf("%08x", addr);
|
||||
sym = xmon_find_symbol(addr, &saddr);
|
||||
if (sym)
|
||||
printf(" (%s+0x%x)", sym, addr-saddr);
|
||||
return (sym != 0);
|
||||
}
|
||||
|
||||
char*
|
||||
xmon_find_symbol(unsigned long addr, unsigned long* saddr)
|
||||
{
|
||||
static char rbuffer[64];
|
||||
char *p, *ep, *limit;
|
||||
unsigned long prev, next;
|
||||
char* psym;
|
||||
|
||||
extern char *sysmap;
|
||||
extern unsigned long sysmap_size;
|
||||
if ( !sysmap || !sysmap_size )
|
||||
return NULL;
|
||||
|
||||
prev = 0;
|
||||
psym = NULL;
|
||||
p = sysmap;
|
||||
limit = p + sysmap_size;
|
||||
if( setjmp(bus_error_jmp) == 0 ) {
|
||||
debugger_fault_handler = handle_fault;
|
||||
sync();
|
||||
do {
|
||||
next = simple_strtoul(p, &p, 16);
|
||||
if (next > addr && prev <= addr) {
|
||||
if (!psym)
|
||||
goto bail;
|
||||
ep = rbuffer;
|
||||
p = psym;
|
||||
while(*p && p < limit && *p == 32)
|
||||
p++;
|
||||
while(*p && p < limit && *p != 10 && (ep - rbuffer) < 63)
|
||||
*(ep++) = *(p++);
|
||||
*(ep++) = 0;
|
||||
if (saddr)
|
||||
*saddr = prev;
|
||||
debugger_fault_handler = NULL;
|
||||
return rbuffer;
|
||||
}
|
||||
prev = next;
|
||||
psym = p;
|
||||
while(*p && p < limit && *p != 10)
|
||||
p++;
|
||||
if (*p) p++;
|
||||
} while(*p && p < limit && next);
|
||||
bail:
|
||||
sync();
|
||||
}
|
||||
debugger_fault_handler = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
unsigned long
|
||||
xmon_symbol_to_addr(char* symbol)
|
||||
{
|
||||
char *p, *cur;
|
||||
char *match = NULL;
|
||||
int goodness = 0;
|
||||
int result = 0;
|
||||
|
||||
extern char *sysmap;
|
||||
extern unsigned long sysmap_size;
|
||||
if ( !sysmap || !sysmap_size )
|
||||
return 0;
|
||||
|
||||
if( setjmp(bus_error_jmp) == 0 ) {
|
||||
debugger_fault_handler = handle_fault;
|
||||
sync();
|
||||
cur = sysmap;
|
||||
while(cur) {
|
||||
cur = strstr(cur, symbol);
|
||||
if (cur) {
|
||||
int gd = 1;
|
||||
|
||||
/* best match if equal, better match if
|
||||
* begins with
|
||||
*/
|
||||
if (cur == sysmap || *(cur-1) == ' ') {
|
||||
gd++;
|
||||
if (cur[strlen(symbol)] == 10)
|
||||
gd++;
|
||||
}
|
||||
if (gd > goodness) {
|
||||
match = cur;
|
||||
goodness = gd;
|
||||
if (gd == 3)
|
||||
break;
|
||||
}
|
||||
cur++;
|
||||
}
|
||||
}
|
||||
if (goodness) {
|
||||
p = match;
|
||||
while(p > sysmap && *p != 10)
|
||||
p--;
|
||||
if (*p == 10) p++;
|
||||
result = simple_strtoul(p, &p, 16);
|
||||
switch (type) {
|
||||
case 'a':
|
||||
if (scanhex(&addr))
|
||||
xmon_print_symbol(addr, ": ", "\n");
|
||||
termch = 0;
|
||||
break;
|
||||
case 's':
|
||||
getstring(tmp, 64);
|
||||
if (setjmp(bus_error_jmp) == 0) {
|
||||
debugger_fault_handler = handle_fault;
|
||||
sync();
|
||||
addr = kallsyms_lookup_name(tmp);
|
||||
if (addr)
|
||||
printf("%s: %lx\n", tmp, addr);
|
||||
else
|
||||
printf("Symbol '%s' not found.\n", tmp);
|
||||
sync();
|
||||
}
|
||||
sync();
|
||||
debugger_fault_handler = NULL;
|
||||
termch = 0;
|
||||
break;
|
||||
}
|
||||
debugger_fault_handler = NULL;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -323,7 +323,7 @@ config EISA
|
|||
bool
|
||||
|
||||
config PCI
|
||||
bool
|
||||
bool "support for PCI devices" if (EMBEDDED && PPC_ISERIES)
|
||||
default y
|
||||
help
|
||||
Find out whether your system includes a PCI bus. PCI is the name of
|
||||
|
|
|
@ -35,9 +35,9 @@ CROSS32AS := $(AS) -a32
|
|||
CROSS32LD := $(LD) -m elf32ppc
|
||||
CROSS32OBJCOPY := $(OBJCOPY)
|
||||
endif
|
||||
AS := $(AS) -a64
|
||||
LD := $(LD) -m elf64ppc
|
||||
CC := $(CC) -m64
|
||||
override AS += -a64
|
||||
override LD += -m elf64ppc
|
||||
override CC += -m64
|
||||
endif
|
||||
|
||||
export CROSS32CC CROSS32AS CROSS32LD CROSS32OBJCOPY
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include <asm/system.h>
|
||||
#include <asm/iSeries/HvLpEvent.h>
|
||||
#include <asm/iSeries/HvCallEvent.h>
|
||||
#include <asm/iSeries/LparData.h>
|
||||
#include <asm/iSeries/ItLpNaca.h>
|
||||
|
||||
/* Array of LpEvent handler functions */
|
||||
LpEventHandler lpEventHandler[HvLpEvent_Type_NumTypes];
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include <asm/iSeries/ItLpQueue.h>
|
||||
#include <asm/iSeries/HvLpEvent.h>
|
||||
#include <asm/iSeries/HvCallEvent.h>
|
||||
#include <asm/iSeries/LparData.h>
|
||||
|
||||
static __inline__ int set_inUse( struct ItLpQueue * lpQueue )
|
||||
{
|
||||
|
|
|
@ -16,14 +16,13 @@ obj-y += vdso32/ vdso64/
|
|||
|
||||
obj-$(CONFIG_PPC_OF) += of_device.o
|
||||
|
||||
pci-obj-$(CONFIG_PPC_ISERIES) += iSeries_pci.o iSeries_pci_reset.o
|
||||
pci-obj-$(CONFIG_PPC_ISERIES) += iSeries_pci.o iSeries_irq.o \
|
||||
iSeries_VpdInfo.o
|
||||
pci-obj-$(CONFIG_PPC_MULTIPLATFORM) += pci_dn.o pci_direct_iommu.o
|
||||
|
||||
obj-$(CONFIG_PCI) += pci.o pci_iommu.o iomap.o $(pci-obj-y)
|
||||
|
||||
obj-$(CONFIG_PPC_ISERIES) += iSeries_irq.o \
|
||||
iSeries_VpdInfo.o XmPciLpEvent.o \
|
||||
HvCall.o HvLpConfig.o LparData.o \
|
||||
obj-$(CONFIG_PPC_ISERIES) += HvCall.o HvLpConfig.o LparData.o \
|
||||
iSeries_setup.o ItLpQueue.o hvCall.o \
|
||||
mf.o HvLpEvent.o iSeries_proc.o iSeries_htab.o \
|
||||
iSeries_iommu.o
|
||||
|
|
|
@ -1,190 +0,0 @@
|
|||
/*
|
||||
* File XmPciLpEvent.h created by Wayne Holm on Mon Jan 15 2001.
|
||||
*
|
||||
* This module handles PCI interrupt events sent by the iSeries Hypervisor.
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/threads.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/param.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/bootmem.h>
|
||||
#include <linux/ide.h>
|
||||
|
||||
#include <asm/iSeries/HvTypes.h>
|
||||
#include <asm/iSeries/HvLpEvent.h>
|
||||
#include <asm/iSeries/HvCallPci.h>
|
||||
#include <asm/iSeries/XmPciLpEvent.h>
|
||||
#include <asm/ppcdebug.h>
|
||||
|
||||
static long Pci_Interrupt_Count;
|
||||
static long Pci_Event_Count;
|
||||
|
||||
enum XmPciLpEvent_Subtype {
|
||||
XmPciLpEvent_BusCreated = 0, // PHB has been created
|
||||
XmPciLpEvent_BusError = 1, // PHB has failed
|
||||
XmPciLpEvent_BusFailed = 2, // Msg to Secondary, Primary failed bus
|
||||
XmPciLpEvent_NodeFailed = 4, // Multi-adapter bridge has failed
|
||||
XmPciLpEvent_NodeRecovered = 5, // Multi-adapter bridge has recovered
|
||||
XmPciLpEvent_BusRecovered = 12, // PHB has been recovered
|
||||
XmPciLpEvent_UnQuiesceBus = 18, // Secondary bus unqiescing
|
||||
XmPciLpEvent_BridgeError = 21, // Bridge Error
|
||||
XmPciLpEvent_SlotInterrupt = 22 // Slot interrupt
|
||||
};
|
||||
|
||||
struct XmPciLpEvent_BusInterrupt {
|
||||
HvBusNumber busNumber;
|
||||
HvSubBusNumber subBusNumber;
|
||||
};
|
||||
|
||||
struct XmPciLpEvent_NodeInterrupt {
|
||||
HvBusNumber busNumber;
|
||||
HvSubBusNumber subBusNumber;
|
||||
HvAgentId deviceId;
|
||||
};
|
||||
|
||||
struct XmPciLpEvent {
|
||||
struct HvLpEvent hvLpEvent;
|
||||
|
||||
union {
|
||||
u64 alignData; // Align on an 8-byte boundary
|
||||
|
||||
struct {
|
||||
u32 fisr;
|
||||
HvBusNumber busNumber;
|
||||
HvSubBusNumber subBusNumber;
|
||||
HvAgentId deviceId;
|
||||
} slotInterrupt;
|
||||
|
||||
struct XmPciLpEvent_BusInterrupt busFailed;
|
||||
struct XmPciLpEvent_BusInterrupt busRecovered;
|
||||
struct XmPciLpEvent_BusInterrupt busCreated;
|
||||
|
||||
struct XmPciLpEvent_NodeInterrupt nodeFailed;
|
||||
struct XmPciLpEvent_NodeInterrupt nodeRecovered;
|
||||
|
||||
} eventData;
|
||||
|
||||
};
|
||||
|
||||
static void intReceived(struct XmPciLpEvent *eventParm,
|
||||
struct pt_regs *regsParm);
|
||||
|
||||
static void XmPciLpEvent_handler(struct HvLpEvent *eventParm,
|
||||
struct pt_regs *regsParm)
|
||||
{
|
||||
#ifdef CONFIG_PCI
|
||||
#if 0
|
||||
PPCDBG(PPCDBG_BUSWALK, "XmPciLpEvent_handler, type 0x%x\n",
|
||||
eventParm->xType);
|
||||
#endif
|
||||
++Pci_Event_Count;
|
||||
|
||||
if (eventParm && (eventParm->xType == HvLpEvent_Type_PciIo)) {
|
||||
switch (eventParm->xFlags.xFunction) {
|
||||
case HvLpEvent_Function_Int:
|
||||
intReceived((struct XmPciLpEvent *)eventParm, regsParm);
|
||||
break;
|
||||
case HvLpEvent_Function_Ack:
|
||||
printk(KERN_ERR
|
||||
"XmPciLpEvent.c: unexpected ack received\n");
|
||||
break;
|
||||
default:
|
||||
printk(KERN_ERR
|
||||
"XmPciLpEvent.c: unexpected event function %d\n",
|
||||
(int)eventParm->xFlags.xFunction);
|
||||
break;
|
||||
}
|
||||
} else if (eventParm)
|
||||
printk(KERN_ERR
|
||||
"XmPciLpEvent.c: Unrecognized PCI event type 0x%x\n",
|
||||
(int)eventParm->xType);
|
||||
else
|
||||
printk(KERN_ERR "XmPciLpEvent.c: NULL event received\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
static void intReceived(struct XmPciLpEvent *eventParm,
|
||||
struct pt_regs *regsParm)
|
||||
{
|
||||
int irq;
|
||||
|
||||
++Pci_Interrupt_Count;
|
||||
#if 0
|
||||
PPCDBG(PPCDBG_BUSWALK, "PCI: XmPciLpEvent.c: intReceived\n");
|
||||
#endif
|
||||
|
||||
switch (eventParm->hvLpEvent.xSubtype) {
|
||||
case XmPciLpEvent_SlotInterrupt:
|
||||
irq = eventParm->hvLpEvent.xCorrelationToken;
|
||||
/* Dispatch the interrupt handlers for this irq */
|
||||
ppc_irq_dispatch_handler(regsParm, irq);
|
||||
HvCallPci_eoi(eventParm->eventData.slotInterrupt.busNumber,
|
||||
eventParm->eventData.slotInterrupt.subBusNumber,
|
||||
eventParm->eventData.slotInterrupt.deviceId);
|
||||
break;
|
||||
/* Ignore error recovery events for now */
|
||||
case XmPciLpEvent_BusCreated:
|
||||
printk(KERN_INFO "XmPciLpEvent.c: system bus %d created\n",
|
||||
eventParm->eventData.busCreated.busNumber);
|
||||
break;
|
||||
case XmPciLpEvent_BusError:
|
||||
case XmPciLpEvent_BusFailed:
|
||||
printk(KERN_INFO "XmPciLpEvent.c: system bus %d failed\n",
|
||||
eventParm->eventData.busFailed.busNumber);
|
||||
break;
|
||||
case XmPciLpEvent_BusRecovered:
|
||||
case XmPciLpEvent_UnQuiesceBus:
|
||||
printk(KERN_INFO "XmPciLpEvent.c: system bus %d recovered\n",
|
||||
eventParm->eventData.busRecovered.busNumber);
|
||||
break;
|
||||
case XmPciLpEvent_NodeFailed:
|
||||
case XmPciLpEvent_BridgeError:
|
||||
printk(KERN_INFO
|
||||
"XmPciLpEvent.c: multi-adapter bridge %d/%d/%d failed\n",
|
||||
eventParm->eventData.nodeFailed.busNumber,
|
||||
eventParm->eventData.nodeFailed.subBusNumber,
|
||||
eventParm->eventData.nodeFailed.deviceId);
|
||||
break;
|
||||
case XmPciLpEvent_NodeRecovered:
|
||||
printk(KERN_INFO
|
||||
"XmPciLpEvent.c: multi-adapter bridge %d/%d/%d recovered\n",
|
||||
eventParm->eventData.nodeRecovered.busNumber,
|
||||
eventParm->eventData.nodeRecovered.subBusNumber,
|
||||
eventParm->eventData.nodeRecovered.deviceId);
|
||||
break;
|
||||
default:
|
||||
printk(KERN_ERR
|
||||
"XmPciLpEvent.c: unrecognized event subtype 0x%x\n",
|
||||
eventParm->hvLpEvent.xSubtype);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* This should be called sometime prior to buswalk (init_IRQ would be good) */
|
||||
int XmPciLpEvent_init()
|
||||
{
|
||||
int xRc;
|
||||
|
||||
PPCDBG(PPCDBG_BUSWALK,
|
||||
"XmPciLpEvent_init, Register Event type 0x%04X\n",
|
||||
HvLpEvent_Type_PciIo);
|
||||
|
||||
xRc = HvLpEvent_registerHandler(HvLpEvent_Type_PciIo,
|
||||
&XmPciLpEvent_handler);
|
||||
if (xRc == 0) {
|
||||
xRc = HvLpEvent_openPath(HvLpEvent_Type_PciIo, 0);
|
||||
if (xRc != 0)
|
||||
printk(KERN_ERR
|
||||
"XmPciLpEvent.c: open event path failed with rc 0x%x\n",
|
||||
xRc);
|
||||
} else
|
||||
printk(KERN_ERR
|
||||
"XmPciLpEvent.c: register handler failed with rc 0x%x\n",
|
||||
xRc);
|
||||
return xRc;
|
||||
}
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче