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
2f026037
Commit
2f026037
authored
Nov 23, 2007
by
Haavard Skinnemoen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[AVR32] Implement stacktrace support
Signed-off-by:
Haavard Skinnemoen
<
hskinnemoen@atmel.com
>
parent
58bd2bfe
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
57 additions
and
0 deletions
+57
-0
arch/avr32/Kconfig
arch/avr32/Kconfig
+3
-0
arch/avr32/kernel/Makefile
arch/avr32/kernel/Makefile
+1
-0
arch/avr32/kernel/stacktrace.c
arch/avr32/kernel/stacktrace.c
+53
-0
No files found.
arch/avr32/Kconfig
View file @
2f026037
...
...
@@ -24,6 +24,9 @@ config GENERIC_GPIO
config GENERIC_HARDIRQS
def_bool y
config STACKTRACE_SUPPORT
def_bool y
config HARDIRQS_SW_RESEND
def_bool y
...
...
arch/avr32/kernel/Makefile
View file @
2f026037
...
...
@@ -11,3 +11,4 @@ obj-y += signal.o sys_avr32.o process.o time.o
obj-y
+=
init_task.o switch_to.o cpu.o
obj-$(CONFIG_MODULES)
+=
module.o avr32_ksyms.o
obj-$(CONFIG_KPROBES)
+=
kprobes.o
obj-$(CONFIG_STACKTRACE)
+=
stacktrace.o
arch/avr32/kernel/stacktrace.c
0 → 100644
View file @
2f026037
/*
* Stack trace management functions
*
* Copyright (C) 2007 Atmel Corporation
*
* 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.
*/
#include <linux/sched.h>
#include <linux/stacktrace.h>
#include <linux/thread_info.h>
register
unsigned
long
current_frame_pointer
asm
(
"r7"
);
struct
stackframe
{
unsigned
long
lr
;
unsigned
long
fp
;
};
/*
* Save stack-backtrace addresses into a stack_trace buffer.
*/
void
save_stack_trace
(
struct
stack_trace
*
trace
)
{
unsigned
long
low
,
high
;
unsigned
long
fp
;
struct
stackframe
*
frame
;
int
skip
=
trace
->
skip
;
low
=
(
unsigned
long
)
task_stack_page
(
current
);
high
=
low
+
THREAD_SIZE
;
fp
=
current_frame_pointer
;
while
(
fp
>=
low
&&
fp
<=
(
high
-
8
))
{
frame
=
(
struct
stackframe
*
)
fp
;
if
(
skip
)
{
skip
--
;
}
else
{
trace
->
entries
[
trace
->
nr_entries
++
]
=
frame
->
lr
;
if
(
trace
->
nr_entries
>=
trace
->
max_entries
)
break
;
}
/*
* The next frame must be at a higher address than the
* current frame.
*/
low
=
fp
+
8
;
fp
=
frame
->
fp
;
}
}
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