Commit 70a8be47 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

v2.4.9.5 -> v2.4.9.6

  - Jens Axboe: remove trivially dead io_request_lock usage
  - Andrea Arcangeli: softirq cleanup and ARM fixes. Slab cleanups
  - Christoph Hellwig: gendisk handling helper functions/cleanups
  - Nikita Danilov: reiserfs dead code pruning
  - Anton Altaparmakov: NTFS update to 1.1.18
  - firestream network driver: patch reverted on authors request
  - NIIBE Yutaka: SH architecture update
  - Paul Mackerras: PPC cleanups, PPC8xx update.
  - me: reverse broken bootdata allocation patch that went into pre5
parent 1c3cefa5
......@@ -17055,12 +17055,12 @@ CONFIG_6xx
 
Motorola MPC8260 CPM support
CONFIG_8260
The MPC8260 CPM (Communications Processor Module) is a typically
embedded CPU made by Motorola. Selecting this option means that
you wish to build a kernel for a machine with specifically an 8260
for a CPU.
The MPC8260 CPM (Communications Processor Module) is a typical
embedded CPU made by Motorola. Selecting this option means that you
wish to build a kernel for a machine with specifically an 8260 for
a CPU.
 
If in doubt, say N.
If in doubt, say N.
 
Workarounds for PPC601 bugs
CONFIG_PPC601_SYNC_FIX
......@@ -17085,6 +17085,121 @@ CONFIG_ALL_PPC
7xx, 8xx, 74xx, and 82xx processors. Currently, the default option
is to build a kernel which works on the first three.
 
Embedded 8xx Board Type
CONFIG_RPXLITE
RPX-Lite:
Embedded Planet RPX Lite
RPX-Classic:
Embedded Planet RPX Classic Low-fat.
BSE-IP:
Bright Star Engineering ip-Engine.
TQM823L:
TQM850L:
TQM855L:
TQM860L:
MPC8xx based family of mini modules, half credit card size,
up to 64 MB of RAM, 8 MB Flash, (Fast) Ethernet, 2 x serial ports,
2 x CAN bus interface, ...
Manufacturer: TQ Components, www.tq-group.de
Date of Release: October (?) 1999
End of Life: not yet :-)
URL:
- module: http://www.denx.de/PDF/TQM8xxLHWM201.pdf
- starter kit: http://www.denx.de/PDF/STK8xxLHWM201.pdf
- images: http://www.denx.de/embedded-ppc-en.html
FPS850L:
FingerPrint Sensor System (based on TQM850L)
Manufacturer: IKENDI AG, http://www.ikendi.com/
Date of Release: November 1999
End of life: end 2000 ?
URL: see TQM850L
SPD823TS:
MPC823 based board used in the "Tele Server" product
Manufacturer: Speech Design, http://www.speech-design.de/
Date of Release: Mid 2000 (?)
End of life: -
URL: http://www.speech-design.de/
select "English", then "Teleteam Solutions", then "TeleServer"
IVMS8:
MPC860 based board used in the "Integrated Voice Mail System",
Small Version (8 voice channels)
Manufacturer: Speech Design, http://www.speech-design.de/
Date of Release: December 2000 (?)
End of life: -
URL: http://www.speech-design.de/
IVML24:
MPC860 based board used in the "Integrated Voice Mail System",
Large Version (24 voice channels)
Manufacturer: Speech Design, http://www.speech-design.de/
Date of Release: March 2001 (?)
End of life: -
URL: http://www.speech-design.de/
SM850:
Service Module (based on TQM850L)
Manufacturer: Dependable Computer Systems, http://www.decomsys.com/
Date of Release: end 2000 (?)
End of life: mid 2001 (?)
URL: http://www.tz-mikroelektronik.de/ServiceModule/index.html
HERMES:
Hermes-Pro ISDN/LAN router with integrated 8 x hub
Manufacturer: Multidata Gesellschaft fr Datentechnik und Informatik
http://www.multidata.de/
Date of Release: 2000 (?)
End of life: -
URL: http://www.multidata.de/english/products/hpro.htm
IP860:
VMEBus IP (Industry Pack) carrier board with MPC860
Manufacturer: MicroSys GmbH, http://www.microsys.de/
Date of Release: ?
End of life: -
URL: http://www.microsys.de/html/ip860.html
PCU_E:
PCU = Peripheral Controller Unit, Extended
Manufacturer: Siemens AG, ICN (Information and Communication Networks)
http://www.siemens.de/page/1,3771,224315-1-999_2_226207-0,00.html
Date of Release: April 2001
End of life: August 2001
URL: n. a.
Embedded 82xx Board Type
CONFIG_EST8260
EST8260: Wind River System, Inc. EST SBC8260
TQM8260:
MPC8260 based module, little larger than credit card,
up to 128 MB global + 64 MB local RAM, 32 MB Flash,
32 kB EEPROM, 256 kB L@ Cache, 10baseT + 100baseT Ethernet,
2 x serial ports, ...
Manufacturer: TQ Components, www.tq-group.de
Date of Release: June 2001
End of Life: not yet :-)
URL: http://www.denx.de/PDF/TQM82xx_SPEC_Rev005.pdf
PM826:
Modular system with MPC8260 CPU
Manufacturer: MicroSys GmbH, http://www.microsys.de/
Date of Release: mid 2001
End of life: -
URL: http://www.microsys.de/html/pm826.html
CU824:
VMEBus Board with PCI extension with MPC8240 CPU
Manufacturer: MicroSys GmbH, http://www.microsys.de/
Date of Release: early 2001 (?)
End of life: -
URL: http://www.microsys.de/html/cu824.html
AltiVec Kernel Support
CONFIG_ALTIVEC
This option enables kernel support for the Altivec extensions to the
......
......@@ -207,7 +207,7 @@
will return <constant>NULL</constant>. <xref
linkend="userland"> describes how to do something useful with
regular files.
<para>
</para>
<para>
Note that it is specifically supported that you can pass a
......@@ -577,7 +577,7 @@ int foo_read_func(char *page, char **start, off_t off,
the <structfield>owner</structfield> field in the
<structname>struct proc_dir_entry</structname> to
<constant>THIS_MODULE</constant>.
<para>
</para>
<programlisting>
struct proc_dir_entry* entry;
......
......@@ -82,7 +82,6 @@ mft_zone_multiplier= Set the MFT zone multiplier for the volume (this
2 25%
3 37.5%
4 50%
NOTE: This is currently ignored! Work in progress.
Known bugs and (mis-)features
=============================
......@@ -93,14 +92,62 @@ Known bugs and (mis-)features
- Writing of extension records is not supported properly.
- $MFT extension is badly broken and really needs rewriting.
Please send bug reports/comments/feed back/abuse to the Linux-NTFS development
list at sourceforge: linux-ntfs-dev@lists.sourceforge.net
ChangeLog
=========
NTFS 1.1.18:
- Enhanced & bug fixed cluster deallocation (race fixes, etc.)
- Complete rewrite of cluster allocation, now race free.
- Fixed several bugs in the attribute modification codepaths.
- Hopefully fixed bug where the first sectors of some people's
partitions would be overwritten by the mft. And in general fixed up
mft extension code a bit (still incomplete though).
- Introduce splice_runlist() to allow generic splicing of two run
lists into one.
- MFT zone is now implemented. [Stage 2 of 3; only lack dynamic
growing of mft zone but that is AFAIK not even done by Windows, and
the overhead would be so large that it is probably not worth doing
at all, so Stage 3 might never happen...]
- Complete rewrite of $MFT extension and ntfs inode allocation code.
- Made the NTFS driver initialization string show the compile options
used (i.e. whether read-only or read-write, whether a module, and
whether with debug support).
- Modify ntfs_fill_mft_header() to set all fields and to accept more
arguments.
- Get rid of superfluous add_mft_header().
- Get rid of some unused code.
- Fixed several bugs in and generally cleaned up ntfs_readdir,
ntfs_getdir_unsorted(), and ntfs_printcb. Now they spew out huge
amounts of debug output if debugging is enabled. This will be
removed once I know that this works for everyone.
- ntfs_readdir now shows hidden files. The only files that are now
hidden are the first 16 inodes (i.e. the hard coded system files),
which is consistent with Windows NT4. Using the show_sys_files mount
option, these files are then shown, too.
- Fixed the displaying of the "." and ".." directories. We still cannot
cope with more than 65536 files in a directory index block which is
not a problem and we now cannot cope with more than 32766 directory
index blocks which should not be a problem unless you have a
directory with an insanely large number of files in it. The exact
number depends on the length of the file names of the directory
entries and on the size of the dircetory index blocks.
- Fixed all problems with the last file in a directory (e.g. the last
file should no longer disappear and tab completion should work). If
there are still disappearing files or any other problems with the
last file in a directory, please report them! Thanks.
- Rewrote ntfs_extend_attr() to use the new cluster allocator and the
freshly introduced splice_runlists() function. This simplified
ntfs_extend_attr() a lot which in turn seems to have removed one or
more bugs from it.
- Probably other things I have forgotten... (-;
- Removed dollar signs from the names in the system file enumeration.
Apparently gcc doesn't support dollar signs on PPC architecture.
(Andrzej Krzysztofowicz)
NTFS 1.1.17:
- Fixed system file handling. No longer need to use show_sys_files
......
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 10
EXTRAVERSION =-pre5
EXTRAVERSION =-pre6
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
......
......@@ -38,7 +38,7 @@ static void intel_machine_check(struct pt_regs * regs, long error_code)
high&=~(1<<31);
if(high&(1<<27))
{
rdmsr(MSR_IA32_MC0_ADDR+i*4, alow, ahigh);
rdmsr(MSR_IA32_MC0_MISC+i*4, alow, ahigh);
printk("[%08x%08x]", alow, ahigh);
}
if(high&(1<<26))
......
......@@ -621,12 +621,6 @@ ENTRY(sys_call_table)
.long SYMBOL_NAME(sys_fcntl64)
.long SYMBOL_NAME(sys_ni_syscall) /* reserved for TUX */
/*
* NOTE!! This doesn't have to be exact - we just have
* to make sure we have _enough_ of the "sys_ni_syscall"
* entries. Don't panic if you notice that this hasn't
* been shrunk every time we add a new system call.
*/
.rept NR_syscalls-221
.rept NR_syscalls-(.-sys_call_table)/4
.long SYMBOL_NAME(sys_ni_syscall)
.endr
......@@ -769,32 +769,9 @@ static inline void parse_mem_cmdline (char ** cmdline_p)
}
}
#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
#define PFN_DOWN(x) ((x) >> PAGE_SHIFT)
#define PFN_PHYS(x) ((x) << PAGE_SHIFT)
/*
* 128MB for vmalloc and initrd
*/
#define VMALLOC_RESERVE (unsigned long)(128 << 20)
#define MAXMEM (unsigned long)(-PAGE_OFFSET-VMALLOC_RESERVE)
#define MAXMEM_PFN PFN_DOWN(MAXMEM)
#define MAX_NONPAE_PFN (1 << 20)
/* On x86 for 1GB low mem the bootmem_bitmap is at worst 32k
* that is big but nothing to worry about. This must be in the kernels
* initial page tables so don't even try to get fancy where we allocate it.
* This data must be aligned on a page boundary so since I don't
* have a handlig __aligned_page_size attribute I allocate an extra
* PAGE_SIZE -1 bytes.
*/
static unsigned char bootmem_bitmap[((MAXMEM_PFN +7)/8) + PAGE_SIZE -1] __initdata = { 0 };
void __init setup_arch(char **cmdline_p)
{
unsigned long bootmap_pfn, low_mem_size;
unsigned long bootmap_size, low_mem_size;
unsigned long start_pfn, max_pfn, max_low_pfn;
int i;
......@@ -828,18 +805,30 @@ void __init setup_arch(char **cmdline_p)
init_mm.end_data = (unsigned long) &_edata;
init_mm.brk = (unsigned long) &_end;
code_resource.start = virt_to_phys(&_text);
code_resource.end = virt_to_phys(&_etext)-1;
data_resource.start = virt_to_phys(&_etext);
data_resource.end = virt_to_phys(&_edata)-1;
code_resource.start = virt_to_bus(&_text);
code_resource.end = virt_to_bus(&_etext)-1;
data_resource.start = virt_to_bus(&_etext);
data_resource.end = virt_to_bus(&_edata)-1;
parse_mem_cmdline(cmdline_p);
#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
#define PFN_DOWN(x) ((x) >> PAGE_SHIFT)
#define PFN_PHYS(x) ((x) << PAGE_SHIFT)
/*
* 128MB for vmalloc and initrd
*/
#define VMALLOC_RESERVE (unsigned long)(128 << 20)
#define MAXMEM (unsigned long)(-PAGE_OFFSET-VMALLOC_RESERVE)
#define MAXMEM_PFN PFN_DOWN(MAXMEM)
#define MAX_NONPAE_PFN (1 << 20)
/*
* partially used pages are not usable - thus
* we are rounding upwards:
*/
start_pfn = PFN_UP(virt_to_phys(&_end));
start_pfn = PFN_UP(__pa(&_end));
/*
* Find the highest page frame number we have available
......@@ -894,8 +883,7 @@ void __init setup_arch(char **cmdline_p)
/*
* Initialize the boot-time allocator (with low memory only):
*/
bootmap_pfn = PFN_UP(virt_to_phys(&bootmem_bitmap));
init_bootmem(bootmap_pfn, max_low_pfn);
bootmap_size = init_bootmem(start_pfn, max_low_pfn);
/*
* Register fully available low RAM pages with the bootmem allocator.
......@@ -931,32 +919,14 @@ void __init setup_arch(char **cmdline_p)
size = last_pfn - curr_pfn;
free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(size));
}
/*
* Reserve the kernel memory.
*/
reserve_bootmem(HIGH_MEMORY, PFN_PHYS(start_pfn) +
PAGE_SIZE-1 - (HIGH_MEMORY));
/*
* Reserve the initrd
/*
* Reserve the bootmem bitmap itself as well. We do this in two
* steps (first step was init_bootmem()) because this catches
* the (very unlikely) case of us accidentally initializing the
* bootmem allocator with an invalid RAM area.
*/
#ifdef CONFIG_BLK_DEV_INITRD
initrd_start = 0;
initrd_end = 0;
if (LOADER_TYPE && INITRD_START && INITRD_SIZE) {
if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) {
reserve_bootmem(INITRD_START, INITRD_SIZE);
initrd_start = INITRD_START + PAGE_OFFSET;
initrd_end = initrd_start + INITRD_SIZE;
}
else {
printk(KERN_ERR "initrd extends beyond end of memory "
"(0x%08lx > 0x%08lx)\ndisabling initrd\n",
INITRD_START + INITRD_SIZE,
max_low_pfn << PAGE_SHIFT);
}
}
#endif
reserve_bootmem(HIGH_MEMORY, (PFN_PHYS(start_pfn) +
bootmap_size + PAGE_SIZE-1) - (HIGH_MEMORY));
/*
* reserve physical page 0 - it's a special BIOS page on many boxes,
......@@ -992,6 +962,23 @@ void __init setup_arch(char **cmdline_p)
init_apic_mappings();
#endif
#ifdef CONFIG_BLK_DEV_INITRD
if (LOADER_TYPE && INITRD_START) {
if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) {
reserve_bootmem(INITRD_START, INITRD_SIZE);
initrd_start =
INITRD_START ? INITRD_START + PAGE_OFFSET : 0;
initrd_end = initrd_start+INITRD_SIZE;
}
else {
printk(KERN_ERR "initrd extends beyond end of memory "
"(0x%08lx > 0x%08lx)\ndisabling initrd\n",
INITRD_START + INITRD_SIZE,
max_low_pfn << PAGE_SHIFT);
initrd_start = 0;
}
}
#endif
/*
* Request address space for all standard RAM and ROM resources
......
......@@ -31,6 +31,7 @@ bool 'Enable SCC2 and SCC3 for UART' CONFIG_USE_SCC_IO
comment 'Generic MPC8xx Options'
bool 'Copy-Back Data Cache (else Writethrough)' CONFIG_8xx_COPYBACK
bool 'CPU6 Silicon Errata (860 Pre Rev. C)' CONFIG_8xx_CPU6
bool 'I2C/SPI Microcode Patch' CONFIG_UCODE_PATCH
if [ "$CONFIG_IDE" = "y" ]; then
bool 'MPC8xx direct IDE support on PCMCIA port' CONFIG_BLK_DEV_MPC8xx_IDE
......
# BK Id: SCCS/s.Makefile 1.3 05/17/01 18:14:20 cort
# BK Id: SCCS/s.Makefile 1.6 08/30/01 09:33:48 trini
#
#
# Makefile for the linux MPC8xx ppc-specific parts of comm processor
......@@ -15,5 +15,6 @@ obj-y := commproc.o uart.o
obj-$(CONFIG_FEC_ENET) += fec.o
obj-$(CONFIG_SCC_ENET) += enet.o
obj-$(CONFIG_UCODE_PATCH) += micropatch.o
include $(TOPDIR)/Rules.make
/* Microcode patches for the CPM as supplied by Motorola.
* This is the one for IIC/SPI. There is a newer one that
* also relocates SMC2, but this would require additional changes
* to uart.c, so I am holding off on that for a moment.
*/
#include <linux/config.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <asm/irq.h>
#include <asm/mpc8xx.h>
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/8xx_immap.h>
#include "commproc.h"
/* Define this to get SMC patches as well. You need to modify the uart
* driver as well......
#define USE_SMC_PATCH 1
*/
#ifdef CONFIG_USB_MPC8xx
#define USE_USB_SOF_PATCH
#endif
#ifdef USE_IIC_PATCH
#define PATCH_DEFINED
/* IIC/SPI */
uint patch_2000[] = {
0x7FFFEFD9,
0x3FFD0000,
0x7FFB49F7,
0x7FF90000,
0x5FEFADF7,
0x5F89ADF7,
0x5FEFAFF7,
0x5F89AFF7,
0x3A9CFBC8,
0xE7C0EDF0,
0x77C1E1BB,
0xF4DC7F1D,
0xABAD932F,
0x4E08FDCF,
0x6E0FAFF8,
0x7CCF76CF,
0xFD1FF9CF,
0xABF88DC6,
0xAB5679F7,
0xB0937383,
0xDFCE79F7,
0xB091E6BB,
0xE5BBE74F,
0xB3FA6F0F,
0x6FFB76CE,
0xEE0DF9CF,
0x2BFBEFEF,
0xCFEEF9CF,
0x76CEAD24,
0x90B2DF9A,
0x7FDDD0BF,
0x4BF847FD,
0x7CCF76CE,
0xCFEF7E1F,
0x7F1D7DFD,
0xF0B6EF71,
0x7FC177C1,
0xFBC86079,
0xE722FBC8,
0x5FFFDFFF,
0x5FB2FFFB,
0xFBC8F3C8,
0x94A67F01,
0x7F1D5F39,
0xAFE85F5E,
0xFFDFDF96,
0xCB9FAF7D,
0x5FC1AFED,
0x8C1C5FC1,
0xAFDD5FC3,
0xDF9A7EFD,
0xB0B25FB2,
0xFFFEABAD,
0x5FB2FFFE,
0x5FCE600B,
0xE6BB600B,
0x5FCEDFC6,
0x27FBEFDF,
0x5FC8CFDE,
0x3A9CE7C0,
0xEDF0F3C8,
0x7F0154CD,
0x7F1D2D3D,
0x363A7570,
0x7E0AF1CE,
0x37EF2E68,
0x7FEE10EC,
0xADF8EFDE,
0xCFEAE52F,
0x7D0FE12B,
0xF1CE5F65,
0x7E0A4DF8,
0xCFEA5F72,
0x7D0BEFEE,
0xCFEA5F74,
0xE522EFDE,
0x5F74CFDA,
0x0B627385,
0xDF627E0A,
0x30D8145B,
0xBFFFF3C8,
0x5FFFDFFF,
0xA7F85F5E,
0xBFFE7F7D,
0x10D31450,
0x5F36BFFF,
0xAF785F5E,
0xBFFDA7F8,
0x5F36BFFE,
0x77FD30C0,
0x4E08FDCF,
0xE5FF6E0F,
0xAFF87E1F,
0x7E0FFD1F,
0xF1CF5F1B,
0xABF80D5E,
0x5F5EFFEF,
0x79F730A2,
0xAFDD5F34,
0x47F85F34,
0xAFED7FDD,
0x50B24978,
0x47FD7F1D,
0x7DFD70AD,
0xEF717EC1,
0x6BA47F01,
0x2D267EFD,
0x30DE5F5E,
0xFFFD5F5E,
0xFFEF5F5E,
0xFFDF0CA0,
0xAFED0A9E,
0xAFDD0C3A,
0x5F3AAFBD,
0x7FBDB082,
0x5F8247F8
};
uint patch_2f00[] = {
0x3E303430,
0x34343737,
0xABF7BF9B,
0x994B4FBD,
0xBD599493,
0x349FFF37,
0xFB9B177D,
0xD9936956,
0xBBFDD697,
0xBDD2FD11,
0x31DB9BB3,
0x63139637,
0x93733693,
0x193137F7,
0x331737AF,
0x7BB9B999,
0xBB197957,
0x7FDFD3D5,
0x73B773F7,
0x37933B99,
0x1D115316,
0x99315315,
0x31694BF4,
0xFBDBD359,
0x31497353,
0x76956D69,
0x7B9D9693,
0x13131979,
0x79376935
};
#endif
#ifdef USE_SMC_PATCH
#define PATCH_DEFINED
/* SMC2/IIC/SPI Patch */
/* This is the area from 0x2000 to 0x23ff.
*/
uint patch_2000[] = {
0x3fff0000,
0x3ffd0000,
0x3ffb0000,
0x3ff90000,
0x5f13eff8,
0x5eb5eff8,
0x5f88adf7,
0x5fefadf7,
0x3a9cfbc8,
0x77cae1bb,
0xf4de7fad,
0xabae9330,
0x4e08fdcf,
0x6e0faff8,
0x7ccf76cf,
0xfdaff9cf,
0xabf88dc8,
0xab5879f7,
0xb0925d8d,
0xdfd079f7,
0xb090e6bb,
0xe5bbe74f,
0x9e046f0f,
0x6ffb76ce,
0xee0cf9cf,
0x2bfbefef,
0xcfeef9cf,
0x76cead23,
0x90b3df99,
0x7fddd0c1,
0x4bf847fd,
0x7ccf76ce,
0xcfef77ca,
0x7eaf7fad,
0x7dfdf0b7,
0xef7a7fca,
0x77cafbc8,
0x6079e722,
0xfbc85fff,
0xdfff5fb3,
0xfffbfbc8,
0xf3c894a5,
0xe7c9edf9,
0x7f9a7fad,
0x5f36afe8,
0x5f5bffdf,
0xdf95cb9e,
0xaf7d5fc3,
0xafed8c1b,
0x5fc3afdd,
0x5fc5df99,
0x7efdb0b3,
0x5fb3fffe,
0xabae5fb3,
0xfffe5fd0,
0x600be6bb,
0x600b5fd0,
0xdfc827fb,
0xefdf5fca,
0xcfde3a9c,
0xe7c9edf9,
0xf3c87f9e,
0x54ca7fed,
0x2d3a3637,
0x756f7e9a,
0xf1ce37ef,
0x2e677fee,
0x10ebadf8,
0xefdecfea,
0xe52f7d9f,
0xe12bf1ce,
0x5f647e9a,
0x4df8cfea,
0x5f717d9b,
0xefeecfea,
0x5f73e522,
0xefde5f73,
0xcfda0b61,
0x5d8fdf61,
0xe7c9edf9,
0x7e9a30d5,
0x1458bfff,
0xf3c85fff,
0xdfffa7f8,
0x5f5bbffe,
0x7f7d10d0,
0x144d5f33,
0xbfffaf78,
0x5f5bbffd,
0xa7f85f33,
0xbffe77fd,
0x30bd4e08,
0xfdcfe5ff,
0x6e0faff8,
0x7eef7e9f,
0xfdeff1cf,
0x5f17abf8,
0x0d5b5f5b,
0xffef79f7,
0x309eafdd,
0x5f3147f8,
0x5f31afed,
0x7fdd50af,
0x497847fd,
0x7f9e7fed,
0x7dfd70a9,
0xef7e7ece,
0x6ba07f9e,
0x2d227efd,
0x30db5f5b,
0xfffd5f5b,
0xffef5f5b,
0xffdf0c9c,
0xafed0a9a,
0xafdd0c37,
0x5f37afbd,
0x7fbdb081,
0x5f8147f8,
0x3a11e710,
0xedf0ccdd,
0xf3186d0a,
0x7f0e5f06,
0x7fedbb38,
0x3afe7468,
0x7fedf4fc,
0x8ffbb951,
0xb85f77fd,
0xb0df5ddd,
0xdefe7fed,
0x90e1e74d,
0x6f0dcbf7,
0xe7decfed,
0xcb74cfed,
0xcfeddf6d,
0x91714f74,
0x5dd2deef,
0x9e04e7df,
0xefbb6ffb,
0xe7ef7f0e,
0x9e097fed,
0xebdbeffa,
0xeb54affb,
0x7fea90d7,
0x7e0cf0c3,
0xbffff318,
0x5fffdfff,
0xac59efea,
0x7fce1ee5,
0xe2ff5ee1,
0xaffbe2ff,
0x5ee3affb,
0xf9cc7d0f,
0xaef8770f,
0x7d0fb0c6,
0xeffbbfff,
0xcfef5ede,
0x7d0fbfff,
0x5ede4cf8,
0x7fddd0bf,
0x49f847fd,
0x7efdf0bb,
0x7fedfffd,
0x7dfdf0b7,
0xef7e7e1e,
0x5ede7f0e,
0x3a11e710,
0xedf0ccab,
0xfb18ad2e,
0x1ea9bbb8,
0x74283b7e,
0x73c2e4bb,
0x2ada4fb8,
0xdc21e4bb,
0xb2a1ffbf,
0x5e2c43f8,
0xfc87e1bb,
0xe74ffd91,
0x6f0f4fe8,
0xc7ba32e2,
0xf396efeb,
0x600b4f78,
0xe5bb760b,
0x53acaef8,
0x4ef88b0e,
0xcfef9e09,
0xabf8751f,
0xefef5bac,
0x741f4fe8,
0x751e760d,
0x7fdbf081,
0x741cafce,
0xefcc7fce,
0x751e70ac,
0x741ce7bb,
0x3372cfed,
0xafdbefeb,
0xe5bb760b,
0x53f2aef8,
0xafe8e7eb,
0x4bf8771e,
0x7e247fed,
0x4fcbe2cc,
0x7fbc30a9,
0x7b0f7a0f,
0x34d577fd,
0x308b5db7,
0xde553e5f,
0xaf78741f,
0x741f30f0,
0xcfef5e2c,
0x741f3eac,
0xafb8771e,
0x5e677fed,
0x0bd3e2cc,
0x741ccfec,
0xe5ca53cd,
0x6fcb4f74,
0x5dadde4b,
0x2ab63d38,
0x4bb3de30,
0x751f741c,
0x6c42effa,
0xefea7fce,
0x6ffc30be,
0xefec3fca,
0x30b3de2e,
0xadf85d9e,
0xaf7daefd,
0x5d9ede2e,
0x5d9eafdd,
0x761f10ac,
0x1da07efd,
0x30adfffe,
0x4908fb18,
0x5fffdfff,
0xafbb709b,
0x4ef85e67,
0xadf814ad,
0x7a0f70ad,
0xcfef50ad,
0x7a0fde30,
0x5da0afed,
0x3c12780f,
0xefef780f,
0xefef790f,
0xa7f85e0f,
0xffef790f,
0xefef790f,
0x14adde2e,
0x5d9eadfd,
0x5e2dfffb,
0xe79addfd,
0xeff96079,
0x607ae79a,
0xddfceff9,
0x60795dff,
0x607acfef,
0xefefefdf,
0xefbfef7f,
0xeeffedff,
0xebffe7ff,
0xafefafdf,
0xafbfaf7f,
0xaeffadff,
0xabffa7ff,
0x6fef6fdf,
0x6fbf6f7f,
0x6eff6dff,
0x6bff67ff,
0x2fef2fdf,
0x2fbf2f7f,
0x2eff2dff,
0x2bff27ff,
0x4e08fd1f,
0xe5ff6e0f,
0xaff87eef,
0x7e0ffdef,
0xf11f6079,
0xabf8f542,
0x7e0af11c,
0x37cfae3a,
0x7fec90be,
0xadf8efdc,
0xcfeae52f,
0x7d0fe12b,
0xf11c6079,
0x7e0a4df8,
0xcfea5dc4,
0x7d0befec,
0xcfea5dc6,
0xe522efdc,
0x5dc6cfda,
0x4e08fd1f,
0x6e0faff8,
0x7c1f761f,
0xfdeff91f,
0x6079abf8,
0x761cee24,
0xf91f2bfb,
0xefefcfec,
0xf91f6079,
0x761c27fb,
0xefdf5da7,
0xcfdc7fdd,
0xd09c4bf8,
0x47fd7c1f,
0x761ccfcf,
0x7eef7fed,
0x7dfdf093,
0xef7e7f1e,
0x771efb18,
0x6079e722,
0xe6bbe5bb,
0xae0ae5bb,
0x600bae85,
0xe2bbe2bb,
0xe2bbe2bb,
0xaf02e2bb,
0xe2bb2ff9,
0x6079e2bb
};
/* This is from 0x2f00 to 0x2fff
*/
uint patch_2f00[] = {
0x30303030,
0x3e3e3434,
0xabbf9b99,
0x4b4fbdbd,
0x59949334,
0x9fff37fb,
0x9b177dd9,
0x936956bb,
0xfbdd697b,
0xdd2fd113,
0x1db9f7bb,
0x36313963,
0x79373369,
0x3193137f,
0x7331737a,
0xf7bb9b99,
0x9bb19795,
0x77fdfd3d,
0x573b773f,
0x737933f7,
0xb991d115,
0x31699315,
0x31531694,
0xbf4fbdbd,
0x35931497,
0x35376956,
0xbd697b9d,
0x96931313,
0x19797937,
0x6935af78,
0xb9b3baa3,
0xb8788683,
0x368f78f7,
0x87778733,
0x3ffffb3b,
0x8e8f78b8,
0x1d118e13,
0xf3ff3f8b,
0x6bd8e173,
0xd1366856,
0x68d1687b,
0x3daf78b8,
0x3a3a3f87,
0x8f81378f,
0xf876f887,
0x77fd8778,
0x737de8d6,
0xbbf8bfff,
0xd8df87f7,
0xfd876f7b,
0x8bfff8bd,
0x8683387d,
0xb873d87b,
0x3b8fd7f8,
0xf7338883,
0xbb8ee1f8,
0xef837377,
0x3337b836,
0x817d11f8,
0x7378b878,
0xd3368b7d,
0xed731b7d,
0x833731f3,
0xf22f3f23
};
uint patch_2e00[] = {
/* This is from 0x2e00 to 0x2e3c
*/
0x27eeeeee,
0xeeeeeeee,
0xeeeeeeee,
0xeeeeeeee,
0xee4bf4fb,
0xdbd259bb,
0x1979577f,
0xdfd2d573,
0xb773f737,
0x4b4fbdbd,
0x25b9b177,
0xd2d17376,
0x956bbfdd,
0x697bdd2f,
0xff9f79ff,
0xff9ff22f
};
#endif
#ifdef USE_USB_SOF_PATCH
#define PATCH_DEFINED
uint patch_2000[] = {
0x7fff0000,
0x7ffd0000,
0x7ffb0000,
0x49f7ba5b,
0xba383ffb,
0xf9b8b46d,
0xe5ab4e07,
0xaf77bffe,
0x3f7bbf79,
0xba5bba38,
0xe7676076,
0x60750000
};
uint patch_2f00[] = {
0x3030304c,
0xcab9e441,
0xa1aaf220
};
#endif
/* Load the microcode patch. This is called early in the CPM initialization
* with the controller in the reset state. We enable the processor after
* we load the patch.
*/
void
cpm_load_patch(volatile immap_t *immr)
{
#ifdef PATCH_DEFINED
volatile uint *dp;
volatile cpm8xx_t *commproc;
volatile iic_t *iip;
volatile spi_t *spp;
int i;
commproc = (cpm8xx_t *)&immr->im_cpm;
/* We work closely with commproc.c. We know it only allocates
* from data only space.
* For this particular patch, we only use the bottom 512 bytes
* and the upper 256 byte extension. We will use the space
* starting at 1K for the relocated parameters, as the general
* CPM allocation won't come from that area.
*/
commproc->cp_rccr = 0;
/* Copy the patch into DPRAM.
*/
dp = (uint *)(commproc->cp_dpmem);
for (i=0; i<(sizeof(patch_2000)/4); i++)
*dp++ = patch_2000[i];
dp = (uint *)&(commproc->cp_dpmem[0x0f00]);
for (i=0; i<(sizeof(patch_2f00)/4); i++)
*dp++ = patch_2f00[i];
#ifdef USE_USB_SOF_PATCH
#if 0 /* usb patch should not relocate iic */
iip = (iic_t *)&commproc->cp_dparam[PROFF_IIC];
#define RPBASE 0x0030
iip->iic_rpbase = RPBASE;
/* Put SPI above the IIC, also 32-byte aligned.
*/
i = (RPBASE + sizeof(iic_t) + 31) & ~31;
spp = (spi_t *)&commproc->cp_dparam[PROFF_SPI];
spp->spi_rpbase = i;
#endif
/* Enable uCode fetches from DPRAM. */
commproc->cp_rccr = 0x0009;
printk("USB uCode patch installed\n");
#endif /* USE_USB_SOF_PATCH */
#if defined(USE_SMC_PATCH) || defined(USE_IIC_PATCH)
iip = (iic_t *)&commproc->cp_dparam[PROFF_IIC];
#define RPBASE 0x0400
iip->iic_rpbase = RPBASE;
/* Put SPI above the IIC, also 32-byte aligned.
*/
i = (RPBASE + sizeof(iic_t) + 31) & ~31;
spp = (spi_t *)&commproc->cp_dparam[PROFF_SPI];
spp->spi_rpbase = i;
#ifdef USE_SMC_PATCH
dp = (uint *)&(commproc->cp_dpmem[0x0e00]);
for (i=0; i<(sizeof(patch_2e00)/4); i++)
*dp++ = patch_2e00[i];
/* Enable the traps to get to it.
*/
commproc->cp_cpmcr1 = 0x8080;
commproc->cp_cpmcr2 = 0x808a;
commproc->cp_cpmcr3 = 0x8028;
commproc->cp_cpmcr4 = 0x802a;
/* Enable uCode fetches from DPRAM.
*/
commproc->cp_rccr = 3;
#endif
#ifdef USE_IIC_PATCH
/* Enable the traps to get to it.
*/
commproc->cp_cpmcr1 = 0x802a;
commproc->cp_cpmcr2 = 0x8028;
commproc->cp_cpmcr3 = 0x802e;
commproc->cp_cpmcr4 = 0x802c;
/* Enable uCode fetches from DPRAM.
*/
commproc->cp_rccr = 1;
printk("I2C uCode patch installed\n");
#endif
/* Relocate the IIC and SPI parameter areas. These have to
* aligned on 32-byte boundaries.
*/
iip = (iic_t *)&commproc->cp_dparam[PROFF_IIC];
iip->iic_rpbase = RPBASE;
/* Put SPI above the IIC, also 32-byte aligned.
*/
i = (RPBASE + sizeof(iic_t) + 31) & ~31;
spp = (spi_t *)&commproc->cp_dparam[PROFF_SPI];
spp->spi_rpbase = i;
#endif /* USE_SMC_PATCH || USE_IIC_PATCH */
#endif /* PATCH_DEFINED */
}
void
verify_patch(volatile immap_t *immr)
{
#ifdef PATCH_DEFINED
volatile uint *dp;
volatile cpm8xx_t *commproc;
int i;
commproc = (cpm8xx_t *)&immr->im_cpm;
printk("cp_rccr %x\n", commproc->cp_rccr);
commproc->cp_rccr = 0;
dp = (uint *)(commproc->cp_dpmem);
for (i=0; i<(sizeof(patch_2000)/4); i++)
if (*dp++ != patch_2000[i]) {
printk("patch_2000 bad at %d\n", i);
dp--;
printk("found 0x%X, wanted 0x%X\n", *dp, patch_2000[i]);
break;
}
dp = (uint *)&(commproc->cp_dpmem[0x0f00]);
for (i=0; i<(sizeof(patch_2f00)/4); i++)
if (*dp++ != patch_2f00[i]) {
printk("patch_2f00 bad at %d\n", i);
dp--;
printk("found 0x%X, wanted 0x%X\n", *dp, patch_2f00[i]);
break;
}
commproc->cp_rccr = 0x0009;
#endif /* PATCH_DEFINED */
}
/*
* BK Id: SCCS/s.apus_pci.c 1.4 07/06/01 09:19:28 trini
* BK Id: SCCS/s.apus_pci.c 1.5 09/08/01 15:47:42 paulus
*/
/*
* Copyright (C) Michel Dnzer <michdaen@iiic.ethz.ch>
......@@ -21,7 +21,6 @@
#include <linux/delay.h>
#include <linux/string.h>
#include <asm/init.h>
#include <asm/io.h>
#include <asm/pci-bridge.h>
#include <asm/machdep.h>
......
/*
* BK Id: SCCS/s.apus_setup.c 1.18 08/20/01 15:25:16 paulus
* BK Id: SCCS/s.apus_setup.c 1.20 09/08/01 15:47:42 paulus
*/
/*
* linux/arch/ppc/kernel/apus_setup.c
......@@ -76,7 +76,6 @@ static u_short driveid_types[] = {
#include <asm/io.h>
#include <asm/dma.h>
#include <asm/machdep.h>
#include <asm/init.h>
#include "local_irq.h"
......
......@@ -12,7 +12,7 @@
#include <linux/init.h>
#include <linux/version.h>
#include <asm/init.h>
#include <asm/sections.h>
#include <asm/bootx.h>
#include <asm/btext.h>
#include <asm/prom.h>
......
/*
* BK Id: SCCS/s.chrp_pci.c 1.20 08/08/01 16:35:43 paulus
* BK Id: SCCS/s.chrp_pci.c 1.22 09/08/01 15:47:42 paulus
*/
/*
* CHRP pci routines.
......@@ -21,7 +21,7 @@
#include <asm/prom.h>
#include <asm/gg2.h>
#include <asm/machdep.h>
#include <asm/init.h>
#include <asm/sections.h>
#include <asm/pci-bridge.h>
#include "open_pic.h"
......
/*
* BK Id: SCCS/s.chrp_setup.c 1.34 08/29/01 10:07:29 paulus
* BK Id: SCCS/s.chrp_setup.c 1.36 09/08/01 15:47:42 paulus
*/
/*
* linux/arch/ppc/kernel/setup.c
......@@ -51,7 +51,7 @@
#include <asm/irq.h>
#include <asm/hydra.h>
#include <asm/keyboard.h>
#include <asm/init.h>
#include <asm/sections.h>
#include <asm/time.h>
#include <asm/btext.h>
......
......@@ -31,7 +31,7 @@
#include <asm/pgtable.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/init.h>
#include <asm/sections.h>
#include <asm/io.h>
#include <asm/prom.h>
#include <asm/smp.h>
......@@ -43,7 +43,7 @@
extern unsigned long smp_chrp_cpu_nr;
static int
static int __init
smp_chrp_probe(void)
{
if (smp_chrp_cpu_nr > 1)
......@@ -52,14 +52,14 @@ smp_chrp_probe(void)
return smp_chrp_cpu_nr;
}
static void
static void __init
smp_chrp_kick_cpu(int nr)
{
*(unsigned long *)KERNELBASE = nr;
asm volatile("dcbf 0,%0"::"r"(KERNELBASE):"memory");
}
static void
static void __init
smp_chrp_setup_cpu(int cpu_nr)
{
static atomic_t ready = ATOMIC_INIT(1);
......@@ -101,7 +101,7 @@ smp_chrp_setup_cpu(int cpu_nr)
}
#ifdef CONFIG_POWER4
static void
static void __chrp
smp_xics_message_pass(int target, int msg, unsigned long data, int wait)
{
/* for now, only do reschedule messages
......@@ -116,13 +116,13 @@ smp_xics_message_pass(int target, int msg, unsigned long data, int wait)
}
}
static int
static int __chrp
smp_xics_probe(void)
{
return smp_chrp_cpu_nr;
}
static void
static void __chrp
smp_xics_setup_cpu(int cpu_nr)
{
if (cpu_nr > 0)
......@@ -131,7 +131,7 @@ smp_xics_setup_cpu(int cpu_nr)
#endif /* CONFIG_POWER4 */
/* CHRP with openpic */
struct smp_ops_t chrp_smp_ops = {
struct smp_ops_t chrp_smp_ops __chrpdata = {
smp_openpic_message_pass,
smp_chrp_probe,
smp_chrp_kick_cpu,
......@@ -140,7 +140,7 @@ struct smp_ops_t chrp_smp_ops = {
#ifdef CONFIG_POWER4
/* CHRP with new XICS interrupt controller */
struct smp_ops_t xics_smp_ops = {
struct smp_ops_t xics_smp_ops __chrpdata = {
smp_xics_message_pass,
smp_xics_probe,
smp_chrp_kick_cpu,
......
/*
* BK Id: SCCS/s.chrp_time.c 1.7 05/17/01 18:14:21 cort
* BK Id: SCCS/s.chrp_time.c 1.10 09/08/01 15:47:42 paulus
*/
/*
* linux/arch/i386/kernel/time.c
......@@ -29,7 +29,7 @@
#include <asm/processor.h>
#include <asm/nvram.h>
#include <asm/prom.h>
#include <asm/init.h>
#include <asm/sections.h>
#include <asm/time.h>
extern spinlock_t rtc_lock;
......
/*
* BK Id: SCCS/s.feature.c 1.19 08/19/01 22:23:04 paulus
* BK Id: SCCS/s.feature.c 1.21 09/08/01 15:47:42 paulus
*/
/*
* arch/ppc/kernel/feature.c
......@@ -20,7 +20,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/spinlock.h>
#include <asm/init.h>
#include <asm/sections.h>
#include <asm/errno.h>
#include <asm/ohare.h>
#include <asm/heathrow.h>
......
/*
* BK Id: SCCS/s.indirect_pci.c 1.7 05/17/01 18:14:21 cort
* BK Id: SCCS/s.indirect_pci.c 1.10 09/08/01 15:47:42 paulus
*/
/*
* Support for indirect PCI bridges.
......@@ -19,7 +19,6 @@
#include <linux/init.h>
#include <linux/bootmem.h>
#include <asm/init.h>
#include <asm/io.h>
#include <asm/prom.h>
#include <asm/pci-bridge.h>
......
/*
* BK Id: SCCS/s.m8xx_setup.c 1.27 08/20/01 15:25:16 paulus
*/
/*
* BK Id: SCCS/s.m8xx_setup.c 1.29 08/30/01 09:01:04 trini
*
* linux/arch/ppc/kernel/setup.c
*
* Copyright (C) 1995 Linus Torvalds
......@@ -172,8 +171,7 @@ abort(void)
machine_restart(NULL);
}
/* A place holder for time base interrupts, if they are ever enabled.
*/
/* A place holder for time base interrupts, if they are ever enabled. */
void timebase_interrupt(int irq, void * dev, struct pt_regs * regs)
{
printk ("timebase_interrupt()\n");
......@@ -188,13 +186,11 @@ void __init m8xx_calibrate_decr(void)
bd_t *binfo = (bd_t *)__res;
int freq, fp, divisor;
/* Unlock the SCCR.
*/
/* Unlock the SCCR. */
((volatile immap_t *)IMAP_ADDR)->im_clkrstk.cark_sccrk = ~KAPWR_KEY;
((volatile immap_t *)IMAP_ADDR)->im_clkrstk.cark_sccrk = KAPWR_KEY;
/* Force all 8xx processors to use divide by 16 processor clock.
*/
/* Force all 8xx processors to use divide by 16 processor clock. */
((volatile immap_t *)IMAP_ADDR)->im_clkrst.car_sccr |= 0x02000000;
/* Processor frequency is MHz.
......@@ -224,15 +220,17 @@ void __init m8xx_calibrate_decr(void)
*/
((volatile immap_t *)IMAP_ADDR)->im_sitk.sitk_tbscrk = ~KAPWR_KEY;
((volatile immap_t *)IMAP_ADDR)->im_sitk.sitk_rtcsck = ~KAPWR_KEY;
((volatile immap_t *)IMAP_ADDR)->im_sitk.sitk_tbk = ~KAPWR_KEY;
((volatile immap_t *)IMAP_ADDR)->im_sitk.sitk_tbk = ~KAPWR_KEY;
((volatile immap_t *)IMAP_ADDR)->im_sitk.sitk_tbscrk = KAPWR_KEY;
((volatile immap_t *)IMAP_ADDR)->im_sitk.sitk_rtcsck = KAPWR_KEY;
((volatile immap_t *)IMAP_ADDR)->im_sitk.sitk_tbk = KAPWR_KEY;
((volatile immap_t *)IMAP_ADDR)->im_sitk.sitk_tbk = KAPWR_KEY;
/* Disable the RTC one second and alarm interrupts.
*/
/* Disable the RTC one second and alarm interrupts. */
((volatile immap_t *)IMAP_ADDR)->im_sit.sit_rtcsc &=
~(RTCSC_SIE | RTCSC_ALE);
/* Enable the RTC */
((volatile immap_t *)IMAP_ADDR)->im_sit.sit_rtcsc |=
(RTCSC_RTF | RTCSC_RTE);
/* Enabling the decrementer also enables the timebase interrupts
* (or from the other point of view, to get decrementer interrupts
......@@ -260,15 +258,14 @@ m8xx_set_rtc_time(unsigned long time)
return(0);
}
unsigned long
static unsigned long
m8xx_get_rtc_time(void)
{
/* Get time from the RTC.
*/
/* Get time from the RTC. */
return((unsigned long)(((immap_t *)IMAP_ADDR)->im_sit.sit_rtc));
}
void
static void
m8xx_restart(char *cmd)
{
__volatile__ unsigned char dummy;
......@@ -288,20 +285,21 @@ m8xx_restart(char *cmd)
while(1);
}
void
static void
m8xx_power_off(void)
{
m8xx_restart(NULL);
}
void
static void
m8xx_halt(void)
{
m8xx_restart(NULL);
}
int m8xx_setup_residual(char *buffer)
static int
m8xx_setup_residual(char *buffer)
{
int len = 0;
bd_t *bp;
......@@ -322,7 +320,7 @@ int m8xx_setup_residual(char *buffer)
* External interrupts can be either edge or level triggered, and
* need to be initialized by the appropriate driver.
*/
void __init
static void __init
m8xx_init_IRQ(void)
{
int i;
......@@ -353,12 +351,12 @@ m8xx_init_IRQ(void)
* IDE stuff.
*/
#ifdef CONFIG_BLK_DEV_MPC8xx_IDE
void ide_interrupt_handler (void *dev)
static void ide_interrupt_handler (void *dev)
{
}
#endif
int
static int
m8xx_ide_default_irq(ide_ioreg_t base)
{
#ifdef CONFIG_BLK_DEV_MPC8xx_IDE
......@@ -371,13 +369,13 @@ m8xx_ide_default_irq(ide_ioreg_t base)
#endif
}
ide_ioreg_t
static ide_ioreg_t
m8xx_ide_default_io_base(int index)
{
return index;
}
int
static int
m8xx_ide_request_irq(unsigned int irq,
void (*handler)(int, void *, struct pt_regs *),
unsigned long flags,
......@@ -392,8 +390,9 @@ m8xx_ide_request_irq(unsigned int irq,
*
* See include/linux/ide.h for definition of hw_regs_t (p, base)
*/
void m8xx_ide_init_hwif_ports(hw_regs_t *hw,
ide_ioreg_t data_port, ide_ioreg_t ctrl_port, int *irq)
static void
m8xx_ide_init_hwif_ports(hw_regs_t *hw, ide_ioreg_t data_port,
ide_ioreg_t ctrl_port, int *irq)
{
int i;
#ifdef CONFIG_BLK_DEV_MPC8xx_IDE
......@@ -565,7 +564,8 @@ m8xx_ide_tuneproc(ide_drive_t *drive, byte pio)
* functions in the image just to get prom_init, all we really need right
* now is the initialization of the physical memory region.
*/
unsigned long __init m8xx_find_end_of_memory(void)
static unsigned long __init
m8xx_find_end_of_memory(void)
{
bd_t *binfo;
extern unsigned char __res[];
......@@ -581,7 +581,8 @@ unsigned long __init m8xx_find_end_of_memory(void)
* All of this fits into the same 4Mbyte region, so it only
* requires one page table page. (or at least it used to -- paulus)
*/
void __init m8xx_map_io(void)
static void __init
m8xx_map_io(void)
{
io_block_mapping(IMAP_ADDR, IMAP_ADDR, IMAP_SIZE, _PAGE_IO);
#ifdef CONFIG_MBX
......@@ -613,9 +614,8 @@ void __init m8xx_map_io(void)
void __init
platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
unsigned long r6, unsigned long r7)
unsigned long r6, unsigned long r7)
{
if ( r3 )
memcpy( (void *)__res,(void *)(r3+KERNELBASE), sizeof(bd_t) );
......@@ -633,8 +633,7 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
#endif /* CONFIG_BLK_DEV_INITRD */
/* take care of cmd line */
if ( r6 )
{
{
*(char *)(r7+KERNELBASE) = 0;
strcpy(cmd_line, (char *)(r6+KERNELBASE));
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment