Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
a4936044
Commit
a4936044
authored
Jun 22, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/rmk/linux-2.6-arm
parents
9092131f
92a8cbed
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
86 additions
and
72 deletions
+86
-72
arch/arm/common/dmabounce.c
arch/arm/common/dmabounce.c
+5
-13
arch/arm/common/sa1111.c
arch/arm/common/sa1111.c
+7
-6
arch/arm/kernel/setup.c
arch/arm/kernel/setup.c
+16
-9
arch/arm/kernel/signal.c
arch/arm/kernel/signal.c
+19
-10
arch/arm/kernel/signal.h
arch/arm/kernel/signal.h
+12
-0
arch/arm/kernel/traps.c
arch/arm/kernel/traps.c
+9
-0
arch/arm/mach-clps7500/core.c
arch/arm/mach-clps7500/core.c
+2
-0
arch/arm/mach-rpc/riscpc.c
arch/arm/mach-rpc/riscpc.c
+1
-6
arch/arm/mm/init.c
arch/arm/mm/init.c
+6
-13
include/asm-arm/pgalloc.h
include/asm-arm/pgalloc.h
+9
-15
No files found.
arch/arm/common/dmabounce.c
View file @
a4936044
...
...
@@ -93,15 +93,12 @@ static void print_alloc_stats(struct dmabounce_device_info *device_info)
static
inline
struct
dmabounce_device_info
*
find_dmabounce_dev
(
struct
device
*
dev
)
{
struct
list_head
*
entry
;
list_for_each
(
entry
,
&
dmabounce_devs
)
{
struct
dmabounce_device_info
*
d
=
list_entry
(
entry
,
struct
dmabounce_device_info
,
node
);
struct
dmabounce_device_info
*
d
;
list_for_each_entry
(
d
,
&
dmabounce_devs
,
node
)
if
(
d
->
dev
==
dev
)
return
d
;
}
return
NULL
;
}
...
...
@@ -172,15 +169,11 @@ alloc_safe_buffer(struct dmabounce_device_info *device_info, void *ptr,
static
inline
struct
safe_buffer
*
find_safe_buffer
(
struct
dmabounce_device_info
*
device_info
,
dma_addr_t
safe_dma_addr
)
{
struct
list_head
*
entry
;
list_for_each
(
entry
,
&
device_info
->
safe_buffers
)
{
struct
safe_buffer
*
b
=
list_entry
(
entry
,
struct
safe_buffer
,
node
);
struct
safe_buffer
*
b
;
list_for_each_entry
(
b
,
&
device_info
->
safe_buffers
,
node
)
if
(
b
->
safe_dma_addr
==
safe_dma_addr
)
return
b
;
}
return
NULL
;
}
...
...
@@ -301,7 +294,6 @@ unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
__func__
,
buf
->
ptr
,
(
void
*
)
virt_to_dma
(
dev
,
buf
->
ptr
),
buf
->
safe
,
(
void
*
)
buf
->
safe_dma_addr
);
DO_STATS
(
device_info
->
bounce_count
++
);
if
(
dir
==
DMA_FROM_DEVICE
||
dir
==
DMA_BIDIRECTIONAL
)
{
...
...
arch/arm/common/sa1111.c
View file @
a4936044
...
...
@@ -721,16 +721,17 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq)
return
ret
;
}
static
int
sa1111_remove_one
(
struct
device
*
dev
,
void
*
data
)
{
device_unregister
(
dev
);
return
0
;
}
static
void
__sa1111_remove
(
struct
sa1111
*
sachip
)
{
struct
list_head
*
l
,
*
n
;
void
__iomem
*
irqbase
=
sachip
->
base
+
SA1111_INTC
;
list_for_each_safe
(
l
,
n
,
&
sachip
->
dev
->
children
)
{
struct
device
*
d
=
list_to_dev
(
l
);
device_unregister
(
d
);
}
device_for_each_child
(
sachip
->
dev
,
NULL
,
sa1111_remove_one
);
/* disable all IRQs */
sa1111_writel
(
0
,
irqbase
+
SA1111_INTEN0
);
...
...
arch/arm/kernel/setup.c
View file @
a4936044
...
...
@@ -395,6 +395,20 @@ static void __init early_initrd(char **p)
}
__early_param
(
"initrd="
,
early_initrd
);
static
void
__init
add_memory
(
unsigned
long
start
,
unsigned
long
size
)
{
/*
* Ensure that start/size are aligned to a page boundary.
* Size is appropriately rounded down, start is rounded up.
*/
size
-=
start
&
~
PAGE_MASK
;
meminfo
.
bank
[
meminfo
.
nr_banks
].
start
=
PAGE_ALIGN
(
start
);
meminfo
.
bank
[
meminfo
.
nr_banks
].
size
=
size
&
PAGE_MASK
;
meminfo
.
bank
[
meminfo
.
nr_banks
].
node
=
PHYS_TO_NID
(
start
);
meminfo
.
nr_banks
+=
1
;
}
/*
* Pick out the memory size. We look for mem=size@start,
* where start and size are "size[KkMm]"
...
...
@@ -419,10 +433,7 @@ static void __init early_mem(char **p)
if
(
**
p
==
'@'
)
start
=
memparse
(
*
p
+
1
,
p
);
meminfo
.
bank
[
meminfo
.
nr_banks
].
start
=
start
;
meminfo
.
bank
[
meminfo
.
nr_banks
].
size
=
size
;
meminfo
.
bank
[
meminfo
.
nr_banks
].
node
=
PHYS_TO_NID
(
start
);
meminfo
.
nr_banks
+=
1
;
add_memory
(
start
,
size
);
}
__early_param
(
"mem="
,
early_mem
);
...
...
@@ -564,11 +575,7 @@ static int __init parse_tag_mem32(const struct tag *tag)
tag
->
u
.
mem
.
start
,
tag
->
u
.
mem
.
size
/
1024
);
return
-
EINVAL
;
}
meminfo
.
bank
[
meminfo
.
nr_banks
].
start
=
tag
->
u
.
mem
.
start
;
meminfo
.
bank
[
meminfo
.
nr_banks
].
size
=
tag
->
u
.
mem
.
size
;
meminfo
.
bank
[
meminfo
.
nr_banks
].
node
=
PHYS_TO_NID
(
tag
->
u
.
mem
.
start
);
meminfo
.
nr_banks
+=
1
;
add_memory
(
tag
->
u
.
mem
.
start
,
tag
->
u
.
mem
.
size
);
return
0
;
}
...
...
arch/arm/kernel/signal.c
View file @
a4936044
...
...
@@ -19,6 +19,7 @@
#include <asm/unistd.h>
#include "ptrace.h"
#include "signal.h"
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
...
...
@@ -35,7 +36,7 @@
#define SWI_THUMB_SIGRETURN (0xdf00 << 16 | 0x2700 | (__NR_sigreturn - __NR_SYSCALL_BASE))
#define SWI_THUMB_RT_SIGRETURN (0xdf00 << 16 | 0x2700 | (__NR_rt_sigreturn - __NR_SYSCALL_BASE))
static
const
unsigned
long
ret
codes
[
4
]
=
{
const
unsigned
long
sigreturn_
codes
[
4
]
=
{
SWI_SYS_SIGRETURN
,
SWI_THUMB_SIGRETURN
,
SWI_SYS_RT_SIGRETURN
,
SWI_THUMB_RT_SIGRETURN
};
...
...
@@ -500,17 +501,25 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka,
if
(
ka
->
sa
.
sa_flags
&
SA_SIGINFO
)
idx
+=
2
;
if
(
__put_user
(
ret
codes
[
idx
],
rc
))
if
(
__put_user
(
sigreturn_
codes
[
idx
],
rc
))
return
1
;
/*
* Ensure that the instruction cache sees
* the return code written onto the stack.
*/
flush_icache_range
((
unsigned
long
)
rc
,
(
unsigned
long
)(
rc
+
1
));
retcode
=
((
unsigned
long
)
rc
)
+
thumb
;
if
(
cpsr
&
MODE32_BIT
)
{
/*
* 32-bit code can use the new high-page
* signal return code support.
*/
retcode
=
KERN_SIGRETURN_CODE
+
(
idx
<<
2
)
+
thumb
;
}
else
{
/*
* Ensure that the instruction cache sees
* the return code written onto the stack.
*/
flush_icache_range
((
unsigned
long
)
rc
,
(
unsigned
long
)(
rc
+
1
));
retcode
=
((
unsigned
long
)
rc
)
+
thumb
;
}
}
regs
->
ARM_r0
=
usig
;
...
...
arch/arm/kernel/signal.h
0 → 100644
View file @
a4936044
/*
* linux/arch/arm/kernel/signal.h
*
* Copyright (C) 2005 Russell King.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#define KERN_SIGRETURN_CODE 0xffff0500
extern
const
unsigned
long
sigreturn_codes
[
4
];
arch/arm/kernel/traps.c
View file @
a4936044
...
...
@@ -30,6 +30,7 @@
#include <asm/traps.h>
#include "ptrace.h"
#include "signal.h"
const
char
*
processor_modes
[]
=
{
"USER_26"
,
"FIQ_26"
,
"IRQ_26"
,
"SVC_26"
,
"UK4_26"
,
"UK5_26"
,
"UK6_26"
,
"UK7_26"
,
...
...
@@ -683,6 +684,14 @@ void __init trap_init(void)
memcpy
((
void
*
)
0xffff0000
,
__vectors_start
,
__vectors_end
-
__vectors_start
);
memcpy
((
void
*
)
0xffff0200
,
__stubs_start
,
__stubs_end
-
__stubs_start
);
memcpy
((
void
*
)
0xffff1000
-
kuser_sz
,
__kuser_helper_start
,
kuser_sz
);
/*
* Copy signal return handlers into the vector page, and
* set sigreturn to be a pointer to these.
*/
memcpy
((
void
*
)
KERN_SIGRETURN_CODE
,
sigreturn_codes
,
sizeof
(
sigreturn_codes
));
flush_icache_range
(
0xffff0000
,
0xffff0000
+
PAGE_SIZE
);
modify_domain
(
DOMAIN_USER
,
DOMAIN_CLIENT
);
}
arch/arm/mach-clps7500/core.c
View file @
a4936044
...
...
@@ -26,6 +26,8 @@
#include <asm/irq.h>
#include <asm/mach-types.h>
unsigned
int
vram_size
;
static
void
cl7500_ack_irq_a
(
unsigned
int
irq
)
{
unsigned
int
val
,
mask
;
...
...
arch/arm/mach-rpc/riscpc.c
View file @
a4936044
...
...
@@ -32,10 +32,7 @@
extern
void
rpc_init_irq
(
void
);
extern
unsigned
int
vram_size
;
#if 0
unsigned
int
vram_size
;
unsigned
int
memc_ctrl_reg
;
unsigned
int
number_mfm_drives
;
...
...
@@ -63,8 +60,6 @@ static int __init parse_tag_acorn(const struct tag *tag)
__tagtable
(
ATAG_ACORN
,
parse_tag_acorn
);
#endif
static
struct
map_desc
rpc_io_desc
[]
__initdata
=
{
{
SCREEN_BASE
,
SCREEN_START
,
2
*
1048576
,
MT_DEVICE
},
/* VRAM */
{
(
u32
)
IO_BASE
,
IO_START
,
IO_SIZE
,
MT_DEVICE
},
/* IO space */
...
...
arch/arm/mm/init.c
View file @
a4936044
...
...
@@ -93,14 +93,7 @@ struct node_info {
};
#define O_PFN_DOWN(x) ((x) >> PAGE_SHIFT)
#define V_PFN_DOWN(x) O_PFN_DOWN(__pa(x))
#define O_PFN_UP(x) (PAGE_ALIGN(x) >> PAGE_SHIFT)
#define V_PFN_UP(x) O_PFN_UP(__pa(x))
#define PFN_SIZE(x) ((x) >> PAGE_SHIFT)
#define PFN_RANGE(s,e) PFN_SIZE(PAGE_ALIGN((unsigned long)(e)) - \
(((unsigned long)(s)) & PAGE_MASK))
/*
* FIXME: We really want to avoid allocating the bootmap bitmap
...
...
@@ -113,7 +106,7 @@ find_bootmap_pfn(int node, struct meminfo *mi, unsigned int bootmap_pages)
{
unsigned
int
start_pfn
,
bank
,
bootmap_pfn
;
start_pfn
=
V_PFN_UP
(
&
_end
);
start_pfn
=
O_PFN_UP
(
__pa
(
&
_end
)
);
bootmap_pfn
=
0
;
for
(
bank
=
0
;
bank
<
mi
->
nr_banks
;
bank
++
)
{
...
...
@@ -122,9 +115,9 @@ find_bootmap_pfn(int node, struct meminfo *mi, unsigned int bootmap_pages)
if
(
mi
->
bank
[
bank
].
node
!=
node
)
continue
;
start
=
O_PFN_UP
(
mi
->
bank
[
bank
].
start
)
;
end
=
O_PFN_DOWN
(
mi
->
bank
[
bank
].
size
+
mi
->
bank
[
bank
].
start
)
;
start
=
mi
->
bank
[
bank
].
start
>>
PAGE_SHIFT
;
end
=
(
mi
->
bank
[
bank
].
size
+
mi
->
bank
[
bank
].
start
)
>>
PAGE_SHIFT
;
if
(
end
<
start_pfn
)
continue
;
...
...
@@ -191,8 +184,8 @@ find_memend_and_nodes(struct meminfo *mi, struct node_info *np)
/*
* Get the start and end pfns for this bank
*/
start
=
O_PFN_UP
(
mi
->
bank
[
i
].
start
)
;
end
=
O_PFN_DOWN
(
mi
->
bank
[
i
].
start
+
mi
->
bank
[
i
].
size
)
;
start
=
mi
->
bank
[
i
].
start
>>
PAGE_SHIFT
;
end
=
(
mi
->
bank
[
i
].
start
+
mi
->
bank
[
i
].
size
)
>>
PAGE_SHIFT
;
if
(
np
[
node
].
start
>
start
)
np
[
node
].
start
=
start
;
...
...
include/asm-arm/pgalloc.h
View file @
a4936044
...
...
@@ -89,6 +89,13 @@ static inline void pte_free(struct page *pte)
__free_page
(
pte
);
}
static
inline
void
__pmd_populate
(
pmd_t
*
pmdp
,
unsigned
long
pmdval
)
{
pmdp
[
0
]
=
__pmd
(
pmdval
);
pmdp
[
1
]
=
__pmd
(
pmdval
+
256
*
sizeof
(
pte_t
));
flush_pmd_entry
(
pmdp
);
}
/*
* Populate the pmdp entry with a pointer to the pte. This pmd is part
* of the mm address space.
...
...
@@ -99,32 +106,19 @@ static inline void
pmd_populate_kernel
(
struct
mm_struct
*
mm
,
pmd_t
*
pmdp
,
pte_t
*
ptep
)
{
unsigned
long
pte_ptr
=
(
unsigned
long
)
ptep
;
unsigned
long
pmdval
;
BUG_ON
(
mm
!=
&
init_mm
);
/*
* The pmd must be loaded with the physical
* address of the PTE table
*/
pte_ptr
-=
PTRS_PER_PTE
*
sizeof
(
void
*
);
pmdval
=
__pa
(
pte_ptr
)
|
_PAGE_KERNEL_TABLE
;
pmdp
[
0
]
=
__pmd
(
pmdval
);
pmdp
[
1
]
=
__pmd
(
pmdval
+
256
*
sizeof
(
pte_t
));
flush_pmd_entry
(
pmdp
);
__pmd_populate
(
pmdp
,
__pa
(
pte_ptr
)
|
_PAGE_KERNEL_TABLE
);
}
static
inline
void
pmd_populate
(
struct
mm_struct
*
mm
,
pmd_t
*
pmdp
,
struct
page
*
ptep
)
{
unsigned
long
pmdval
;
BUG_ON
(
mm
==
&
init_mm
);
pmdval
=
page_to_pfn
(
ptep
)
<<
PAGE_SHIFT
|
_PAGE_USER_TABLE
;
pmdp
[
0
]
=
__pmd
(
pmdval
);
pmdp
[
1
]
=
__pmd
(
pmdval
+
256
*
sizeof
(
pte_t
));
flush_pmd_entry
(
pmdp
);
__pmd_populate
(
pmdp
,
page_to_pfn
(
ptep
)
<<
PAGE_SHIFT
|
_PAGE_USER_TABLE
);
}
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment