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
nexedi
linux
Commits
53846184
Commit
53846184
authored
Jun 09, 2003
by
David Mosberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mca.h, mca_asm.S, mca.c:
ia64: cleaning up the INIT code
parent
95238af9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
19 additions
and
30 deletions
+19
-30
arch/ia64/kernel/mca.c
arch/ia64/kernel/mca.c
+11
-24
arch/ia64/kernel/mca_asm.S
arch/ia64/kernel/mca_asm.S
+6
-6
include/asm-ia64/mca.h
include/asm-ia64/mca.h
+2
-0
No files found.
arch/ia64/kernel/mca.c
View file @
53846184
...
...
@@ -322,7 +322,7 @@ fetch_min_state (pal_min_state_area_t *ms, struct pt_regs *pt, struct switch_sta
}
void
init_handler_platform
(
sal_log_processor_info_t
*
proc_ptr
,
init_handler_platform
(
pal_min_state_area_t
*
ms
,
struct
pt_regs
*
pt
,
struct
switch_stack
*
sw
)
{
struct
unw_frame_info
info
;
...
...
@@ -337,10 +337,10 @@ init_handler_platform (sal_log_processor_info_t *proc_ptr,
*/
printk
(
"Delaying for 5 seconds...
\n
"
);
udelay
(
5
*
1000000
);
show_min_state
(
&
SAL_LPI_PSI_INFO
(
proc_ptr
)
->
min_state_area
);
show_min_state
(
ms
);
printk
(
"Backtrace of current task (pid %d, %s)
\n
"
,
current
->
pid
,
current
->
comm
);
fetch_min_state
(
&
SAL_LPI_PSI_INFO
(
proc_ptr
)
->
min_state_area
,
pt
,
sw
);
fetch_min_state
(
ms
,
pt
,
sw
);
unw_init_from_interruption
(
&
info
,
current
,
pt
,
sw
);
ia64_do_show_stack
(
&
info
,
NULL
);
...
...
@@ -1240,32 +1240,19 @@ device_initcall(ia64_mca_late_init);
void
ia64_init_handler
(
struct
pt_regs
*
pt
,
struct
switch_stack
*
sw
)
{
sal_log_processor_info_t
*
proc_ptr
;
ia64_err_rec_t
*
plog_ptr
;
pal_min_state_area_t
*
ms
;
printk
(
KERN_INFO
"Entered OS INIT handler
\n
"
);
/* Get the INIT processor log */
if
(
!
ia64_log_get
(
SAL_INFO_TYPE_INIT
,
(
prfunc_t
)
printk
))
return
;
// no record retrieved
#ifdef IA64_DUMP_ALL_PROC_INFO
ia64_log_print
(
SAL_INFO_TYPE_INIT
,
(
prfunc_t
)
printk
);
#endif
printk
(
KERN_INFO
"Entered OS INIT handler. PSP=%lx
\n
"
,
ia64_sal_to_os_handoff_state
.
proc_state_param
);
/*
* get pointer to min state save area
*
* Address of minstate area provided by PAL is physical,
* uncacheable (bit 63 set). Convert to Linux virtual
* address in region 6.
*/
plog_ptr
=
(
ia64_err_rec_t
*
)
IA64_LOG_CURR_BUFFER
(
SAL_INFO_TYPE_INIT
);
proc_ptr
=
&
plog_ptr
->
proc_err
;
ia64_process_min_state_save
(
&
SAL_LPI_PSI_INFO
(
proc_ptr
)
->
min_state_area
);
/* Clear the INIT SAL logs now that they have been saved in the OS buffer */
ia64_sal_clear_state_info
(
SAL_INFO_TYPE_INIT
);
ms
=
(
pal_min_state_area_t
*
)(
ia64_sal_to_os_handoff_state
.
pal_min_state
|
(
6ul
<<
61
));
init_handler_platform
(
proc_ptr
,
pt
,
sw
);
/* call platform specific routines */
init_handler_platform
(
ms
,
pt
,
sw
);
/* call platform specific routines */
}
/*
...
...
arch/ia64/kernel/mca_asm.S
View file @
53846184
...
...
@@ -50,14 +50,15 @@
*
6
.
GR12
=
Return
address
to
location
within
SAL_CHECK
*/
#define SAL_TO_OS_MCA_HANDOFF_STATE_SAVE(_tmp) \
movl
_tmp
=
ia64_sal_to_os_handoff_state
;; \
DATA_VA_TO_PA
(
_tmp
)
;; \
LOAD_PHYSICAL
(
nop
0
,
p0
,
_tmp
,
ia64_sal_to_os_handoff_state
)
;; \
st8
[
_tmp
]=
r1
,
0x08
;; \
st8
[
_tmp
]=
r8
,
0x08
;; \
st8
[
_tmp
]=
r9
,
0x08
;; \
st8
[
_tmp
]=
r10
,
0x08
;; \
st8
[
_tmp
]=
r11
,
0x08
;; \
st8
[
_tmp
]=
r12
,
0x08
st8
[
_tmp
]=
r12
,
0x08
;; \
st8
[
_tmp
]=
r17
,
0x08
;; \
st8
[
_tmp
]=
r18
,
0x08
/*
*
OS_MCA_TO_SAL_HANDOFF_STATE
(
SAL
3
.0
spec
)
...
...
@@ -70,9 +71,8 @@
*
returns
ptr
to
SAL
rtn
save
loc
in
_tmp
*/
#define OS_MCA_TO_SAL_HANDOFF_STATE_RESTORE(_tmp) \
(
p6
)
movl
_tmp
=
ia64_sal_to_os_handoff_state
;; \
(
p7
)
movl
_tmp
=
ia64_os_to_sal_handoff_state
;; \
DATA_VA_TO_PA
(
_tmp
)
;; \
LOAD_PHYSICAL
(
nop
0
,
p6
,
_tmp
,
ia64_sal_to_os_handoff_state
)
;; \
LOAD_PHYSICAL
(
nop
0
,
p7
,
_tmp
,
ia64_os_to_sal_handoff_state
)
;; \
(
p6
)
movl
r8
=
IA64_MCA_COLD_BOOT
; \
(
p6
)
movl
r10
=
IA64_MCA_SAME_CONTEXT
; \
(
p6
)
add
_tmp
=
0x18
,
_tmp
;; \
...
...
include/asm-ia64/mca.h
View file @
53846184
...
...
@@ -92,6 +92,8 @@ typedef struct ia64_mca_sal_to_os_state_s {
u64
imsto_sal_check_ra
;
/* Return address in SAL_CHECK while going
* back to SAL from OS after MCA handling.
*/
u64
pal_min_state
;
/* from PAL in r17 */
u64
proc_state_param
;
/* from PAL in r18. See SDV 2:268 11.3.2.1 */
}
ia64_mca_sal_to_os_state_t
;
enum
{
...
...
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