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
a3813329
Commit
a3813329
authored
Jun 08, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
parents
97d26b80
70aa488c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
51 additions
and
11 deletions
+51
-11
arch/ia64/kernel/module.c
arch/ia64/kernel/module.c
+6
-4
arch/ia64/kernel/setup.c
arch/ia64/kernel/setup.c
+2
-1
arch/ia64/kernel/traps.c
arch/ia64/kernel/traps.c
+18
-0
arch/ia64/mm/init.c
arch/ia64/mm/init.c
+17
-2
arch/ia64/sn/kernel/setup.c
arch/ia64/sn/kernel/setup.c
+2
-2
include/asm-ia64/pgtable.h
include/asm-ia64/pgtable.h
+6
-2
No files found.
arch/ia64/kernel/module.c
View file @
a3813329
...
...
@@ -825,14 +825,16 @@ apply_relocate_add (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symind
* XXX Should have an arch-hook for running this after final section
* addresses have been selected...
*/
/* See if gp can cover the entire core module: */
uint64_t
gp
=
(
uint64_t
)
mod
->
module_core
+
MAX_LTOFF
/
2
;
if
(
mod
->
core_size
>=
MAX_LTOFF
)
uint64_t
gp
;
if
(
mod
->
core_size
>
MAX_LTOFF
)
/*
* This takes advantage of fact that SHF_ARCH_SMALL gets allocated
* at the end of the module.
*/
gp
=
(
uint64_t
)
mod
->
module_core
+
mod
->
core_size
-
MAX_LTOFF
/
2
;
gp
=
mod
->
core_size
-
MAX_LTOFF
/
2
;
else
gp
=
mod
->
core_size
/
2
;
gp
=
(
uint64_t
)
mod
->
module_core
+
((
gp
+
7
)
&
-
8
);
mod
->
arch
.
gp
=
gp
;
DEBUGP
(
"%s: placing gp at 0x%lx
\n
"
,
__FUNCTION__
,
gp
);
}
...
...
arch/ia64/kernel/setup.c
View file @
a3813329
...
...
@@ -720,7 +720,8 @@ cpu_init (void)
ia64_set_kr
(
IA64_KR_PT_BASE
,
__pa
(
ia64_imva
(
empty_zero_page
)));
/*
* Initialize default control register to defer all speculative faults. The
* Initialize default control register to defer speculative faults except
* for those arising from TLB misses, which are not deferred. The
* kernel MUST NOT depend on a particular setting of these bits (in other words,
* the kernel must have recovery code for all speculative accesses). Turn on
* dcr.lc as per recommendation by the architecture team. Most IA-32 apps
...
...
arch/ia64/kernel/traps.c
View file @
a3813329
...
...
@@ -111,6 +111,24 @@ ia64_bad_break (unsigned long break_num, struct pt_regs *regs)
siginfo_t
siginfo
;
int
sig
,
code
;
/* break.b always sets cr.iim to 0, which causes problems for
* debuggers. Get the real break number from the original instruction,
* but only for kernel code. User space break.b is left alone, to
* preserve the existing behaviour. All break codings have the same
* format, so there is no need to check the slot type.
*/
if
(
break_num
==
0
&&
!
user_mode
(
regs
))
{
struct
ia64_psr
*
ipsr
=
ia64_psr
(
regs
);
unsigned
long
*
bundle
=
(
unsigned
long
*
)
regs
->
cr_iip
;
unsigned
long
slot
;
switch
(
ipsr
->
ri
)
{
case
0
:
slot
=
(
bundle
[
0
]
>>
5
);
break
;
case
1
:
slot
=
(
bundle
[
0
]
>>
46
)
|
(
bundle
[
1
]
<<
18
);
break
;
default:
slot
=
(
bundle
[
1
]
>>
23
);
break
;
}
break_num
=
((
slot
>>
36
&
1
)
<<
20
)
|
(
slot
>>
6
&
0xfffff
);
}
/* SIGILL, SIGFPE, SIGSEGV, and SIGBUS want these field initialized: */
siginfo
.
si_addr
=
(
void
__user
*
)
(
regs
->
cr_iip
+
ia64_psr
(
regs
)
->
ri
);
siginfo
.
si_imm
=
break_num
;
...
...
arch/ia64/mm/init.c
View file @
a3813329
...
...
@@ -305,8 +305,9 @@ setup_gate (void)
struct
page
*
page
;
/*
* Map the gate page twice: once read-only to export the ELF headers etc. and once
* execute-only page to enable privilege-promotion via "epc":
* Map the gate page twice: once read-only to export the ELF
* headers etc. and once execute-only page to enable
* privilege-promotion via "epc":
*/
page
=
virt_to_page
(
ia64_imva
(
__start_gate_section
));
put_kernel_page
(
page
,
GATE_ADDR
,
PAGE_READONLY
);
...
...
@@ -315,6 +316,20 @@ setup_gate (void)
put_kernel_page
(
page
,
GATE_ADDR
+
PAGE_SIZE
,
PAGE_GATE
);
#else
put_kernel_page
(
page
,
GATE_ADDR
+
PERCPU_PAGE_SIZE
,
PAGE_GATE
);
/* Fill in the holes (if any) with read-only zero pages: */
{
unsigned
long
addr
;
for
(
addr
=
GATE_ADDR
+
PAGE_SIZE
;
addr
<
GATE_ADDR
+
PERCPU_PAGE_SIZE
;
addr
+=
PAGE_SIZE
)
{
put_kernel_page
(
ZERO_PAGE
(
0
),
addr
,
PAGE_READONLY
);
put_kernel_page
(
ZERO_PAGE
(
0
),
addr
+
PERCPU_PAGE_SIZE
,
PAGE_READONLY
);
}
}
#endif
ia64_patch_gate
();
}
...
...
arch/ia64/sn/kernel/setup.c
View file @
a3813329
...
...
@@ -222,7 +222,7 @@ void __init early_sn_setup(void)
extern
int
platform_intr_list
[];
extern
nasid_t
master_nasid
;
static
int
shub_1_1_found
__initdata
;
static
int
__initdata
shub_1_1_found
=
0
;
/*
* sn_check_for_wars
...
...
@@ -251,7 +251,7 @@ static void __init sn_check_for_wars(void)
}
else
{
for_each_online_node
(
cnode
)
{
if
(
is_shub_1_1
(
cnodeid_to_nasid
(
cnode
)))
s
n_hub_info
->
s
hub_1_1_found
=
1
;
shub_1_1_found
=
1
;
}
}
}
...
...
include/asm-ia64/pgtable.h
View file @
a3813329
...
...
@@ -8,7 +8,7 @@
* This hopefully works with any (fixed) IA-64 page-size, as defined
* in <asm/page.h>.
*
* Copyright (C) 1998-200
4
Hewlett-Packard Co
* Copyright (C) 1998-200
5
Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
*/
...
...
@@ -551,7 +551,11 @@ do { \
/* These tell get_user_pages() that the first gate page is accessible from user-level. */
#define FIXADDR_USER_START GATE_ADDR
#define FIXADDR_USER_END (GATE_ADDR + 2*PERCPU_PAGE_SIZE)
#ifdef HAVE_BUGGY_SEGREL
# define FIXADDR_USER_END (GATE_ADDR + 2*PAGE_SIZE)
#else
# define FIXADDR_USER_END (GATE_ADDR + 2*PERCPU_PAGE_SIZE)
#endif
#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY
...
...
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