X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Fopenrisc%2For1k.c;h=71491119ba9b5d5151d3dd5d0b3fa77a09cfad4c;hb=99add6227fe0a3be536f9b83ff6aa7dd63a8d2dc;hp=cb18075a2fbfd8da4999d59ac288c2bfa5d2973a;hpb=9777284ae04ac77434b8478ac566535207a3d7c0;p=openocd.git diff --git a/src/target/openrisc/or1k.c b/src/target/openrisc/or1k.c index cb18075a2f..71491119ba 100644 --- a/src/target/openrisc/or1k.c +++ b/src/target/openrisc/or1k.c @@ -18,6 +18,9 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * ***************************************************************************/ #ifdef HAVE_CONFIG_H @@ -29,6 +32,7 @@ #include #include #include +#include #include #include "or1k_tap.h" #include "or1k.h" @@ -46,186 +50,186 @@ static int or1k_write_core_reg(struct target *target, int num); static struct or1k_core_reg *or1k_core_reg_list_arch_info; static const struct or1k_core_reg_init or1k_init_reg_list[] = { - {"r0" , GROUP0 + 1024, "org.gnu.gdb.or1k.group0", NULL}, - {"r1" , GROUP0 + 1025, "org.gnu.gdb.or1k.group0", NULL}, - {"r2" , GROUP0 + 1026, "org.gnu.gdb.or1k.group0", NULL}, - {"r3" , GROUP0 + 1027, "org.gnu.gdb.or1k.group0", NULL}, - {"r4" , GROUP0 + 1028, "org.gnu.gdb.or1k.group0", NULL}, - {"r5" , GROUP0 + 1029, "org.gnu.gdb.or1k.group0", NULL}, - {"r6" , GROUP0 + 1030, "org.gnu.gdb.or1k.group0", NULL}, - {"r7" , GROUP0 + 1031, "org.gnu.gdb.or1k.group0", NULL}, - {"r8" , GROUP0 + 1032, "org.gnu.gdb.or1k.group0", NULL}, - {"r9" , GROUP0 + 1033, "org.gnu.gdb.or1k.group0", NULL}, - {"r10" , GROUP0 + 1034, "org.gnu.gdb.or1k.group0", NULL}, - {"r11" , GROUP0 + 1035, "org.gnu.gdb.or1k.group0", NULL}, - {"r12" , GROUP0 + 1036, "org.gnu.gdb.or1k.group0", NULL}, - {"r13" , GROUP0 + 1037, "org.gnu.gdb.or1k.group0", NULL}, - {"r14" , GROUP0 + 1038, "org.gnu.gdb.or1k.group0", NULL}, - {"r15" , GROUP0 + 1039, "org.gnu.gdb.or1k.group0", NULL}, - {"r16" , GROUP0 + 1040, "org.gnu.gdb.or1k.group0", NULL}, - {"r17" , GROUP0 + 1041, "org.gnu.gdb.or1k.group0", NULL}, - {"r18" , GROUP0 + 1042, "org.gnu.gdb.or1k.group0", NULL}, - {"r19" , GROUP0 + 1043, "org.gnu.gdb.or1k.group0", NULL}, - {"r20" , GROUP0 + 1044, "org.gnu.gdb.or1k.group0", NULL}, - {"r21" , GROUP0 + 1045, "org.gnu.gdb.or1k.group0", NULL}, - {"r22" , GROUP0 + 1046, "org.gnu.gdb.or1k.group0", NULL}, - {"r23" , GROUP0 + 1047, "org.gnu.gdb.or1k.group0", NULL}, - {"r24" , GROUP0 + 1048, "org.gnu.gdb.or1k.group0", NULL}, - {"r25" , GROUP0 + 1049, "org.gnu.gdb.or1k.group0", NULL}, - {"r26" , GROUP0 + 1050, "org.gnu.gdb.or1k.group0", NULL}, - {"r27" , GROUP0 + 1051, "org.gnu.gdb.or1k.group0", NULL}, - {"r28" , GROUP0 + 1052, "org.gnu.gdb.or1k.group0", NULL}, - {"r29" , GROUP0 + 1053, "org.gnu.gdb.or1k.group0", NULL}, - {"r30" , GROUP0 + 1054, "org.gnu.gdb.or1k.group0", NULL}, - {"r31" , GROUP0 + 1055, "org.gnu.gdb.or1k.group0", NULL}, - {"ppc" , GROUP0 + 18, "org.gnu.gdb.or1k.group0", NULL}, - {"npc" , GROUP0 + 16, "org.gnu.gdb.or1k.group0", NULL}, - {"sr" , GROUP0 + 17, "org.gnu.gdb.or1k.group0", NULL}, - {"vr" , GROUP0 + 0, "org.gnu.gdb.or1k.group0", "system"}, - {"upr" , GROUP0 + 1, "org.gnu.gdb.or1k.group0", "system"}, - {"cpucfgr" , GROUP0 + 2, "org.gnu.gdb.or1k.group0", "system"}, - {"dmmucfgr" , GROUP0 + 3, "org.gnu.gdb.or1k.group0", "system"}, - {"immucfgr" , GROUP0 + 4, "org.gnu.gdb.or1k.group0", "system"}, - {"dccfgr" , GROUP0 + 5, "org.gnu.gdb.or1k.group0", "system"}, - {"iccfgr" , GROUP0 + 6, "org.gnu.gdb.or1k.group0", "system"}, - {"dcfgr" , GROUP0 + 7, "org.gnu.gdb.or1k.group0", "system"}, - {"pccfgr" , GROUP0 + 8, "org.gnu.gdb.or1k.group0", "system"}, - {"fpcsr" , GROUP0 + 20, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr0" , GROUP0 + 32, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr1" , GROUP0 + 33, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr2" , GROUP0 + 34, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr3" , GROUP0 + 35, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr4" , GROUP0 + 36, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr5" , GROUP0 + 37, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr6" , GROUP0 + 38, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr7" , GROUP0 + 39, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr8" , GROUP0 + 40, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr9" , GROUP0 + 41, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr10" , GROUP0 + 42, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr11" , GROUP0 + 43, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr12" , GROUP0 + 44, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr13" , GROUP0 + 45, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr14" , GROUP0 + 46, "org.gnu.gdb.or1k.group0", "system"}, - {"epcr15" , GROUP0 + 47, "org.gnu.gdb.or1k.group0", "system"}, - {"eear0" , GROUP0 + 48, "org.gnu.gdb.or1k.group0", "system"}, - {"eear1" , GROUP0 + 49, "org.gnu.gdb.or1k.group0", "system"}, - {"eear2" , GROUP0 + 50, "org.gnu.gdb.or1k.group0", "system"}, - {"eear3" , GROUP0 + 51, "org.gnu.gdb.or1k.group0", "system"}, - {"eear4" , GROUP0 + 52, "org.gnu.gdb.or1k.group0", "system"}, - {"eear5" , GROUP0 + 53, "org.gnu.gdb.or1k.group0", "system"}, - {"eear6" , GROUP0 + 54, "org.gnu.gdb.or1k.group0", "system"}, - {"eear7" , GROUP0 + 55, "org.gnu.gdb.or1k.group0", "system"}, - {"eear8" , GROUP0 + 56, "org.gnu.gdb.or1k.group0", "system"}, - {"eear9" , GROUP0 + 57, "org.gnu.gdb.or1k.group0", "system"}, - {"eear10" , GROUP0 + 58, "org.gnu.gdb.or1k.group0", "system"}, - {"eear11" , GROUP0 + 59, "org.gnu.gdb.or1k.group0", "system"}, - {"eear12" , GROUP0 + 60, "org.gnu.gdb.or1k.group0", "system"}, - {"eear13" , GROUP0 + 61, "org.gnu.gdb.or1k.group0", "system"}, - {"eear14" , GROUP0 + 62, "org.gnu.gdb.or1k.group0", "system"}, - {"eear15" , GROUP0 + 63, "org.gnu.gdb.or1k.group0", "system"}, - {"esr0" , GROUP0 + 64, "org.gnu.gdb.or1k.group0", "system"}, - {"esr1" , GROUP0 + 65, "org.gnu.gdb.or1k.group0", "system"}, - {"esr2" , GROUP0 + 66, "org.gnu.gdb.or1k.group0", "system"}, - {"esr3" , GROUP0 + 67, "org.gnu.gdb.or1k.group0", "system"}, - {"esr4" , GROUP0 + 68, "org.gnu.gdb.or1k.group0", "system"}, - {"esr5" , GROUP0 + 69, "org.gnu.gdb.or1k.group0", "system"}, - {"esr6" , GROUP0 + 70, "org.gnu.gdb.or1k.group0", "system"}, - {"esr7" , GROUP0 + 71, "org.gnu.gdb.or1k.group0", "system"}, - {"esr8" , GROUP0 + 72, "org.gnu.gdb.or1k.group0", "system"}, - {"esr9" , GROUP0 + 73, "org.gnu.gdb.or1k.group0", "system"}, - {"esr10" , GROUP0 + 74, "org.gnu.gdb.or1k.group0", "system"}, - {"esr11" , GROUP0 + 75, "org.gnu.gdb.or1k.group0", "system"}, - {"esr12" , GROUP0 + 76, "org.gnu.gdb.or1k.group0", "system"}, - {"esr13" , GROUP0 + 77, "org.gnu.gdb.or1k.group0", "system"}, - {"esr14" , GROUP0 + 78, "org.gnu.gdb.or1k.group0", "system"}, - {"esr15" , GROUP0 + 79, "org.gnu.gdb.or1k.group0", "system"}, - - {"dmmuucr" , GROUP1 + 0, "org.gnu.gdb.or1k.group1", "dmmu"}, - {"dmmuupr" , GROUP1 + 1, "org.gnu.gdb.or1k.group1", "dmmu"}, - {"dtlbeir" , GROUP1 + 2, "org.gnu.gdb.or1k.group1", "dmmu"}, - {"datbmr0" , GROUP1 + 4, "org.gnu.gdb.or1k.group1", "dmmu"}, - {"datbmr1" , GROUP1 + 5, "org.gnu.gdb.or1k.group1", "dmmu"}, - {"datbmr2" , GROUP1 + 6, "org.gnu.gdb.or1k.group1", "dmmu"}, - {"datbmr3" , GROUP1 + 7, "org.gnu.gdb.or1k.group1", "dmmu"}, - {"datbtr0" , GROUP1 + 8, "org.gnu.gdb.or1k.group1", "dmmu"}, - {"datbtr1" , GROUP1 + 9, "org.gnu.gdb.or1k.group1", "dmmu"}, - {"datbtr2" , GROUP1 + 10, "org.gnu.gdb.or1k.group1", "dmmu"}, - {"datbtr3" , GROUP1 + 11, "org.gnu.gdb.or1k.group1", "dmmu"}, - - {"immucr" , GROUP2 + 0, "org.gnu.gdb.or1k.group2", "immu"}, - {"immupr" , GROUP2 + 1, "org.gnu.gdb.or1k.group2", "immu"}, - {"itlbeir" , GROUP2 + 2, "org.gnu.gdb.or1k.group2", "immu"}, - {"iatbmr0" , GROUP2 + 4, "org.gnu.gdb.or1k.group2", "immu"}, - {"iatbmr1" , GROUP2 + 5, "org.gnu.gdb.or1k.group2", "immu"}, - {"iatbmr2" , GROUP2 + 6, "org.gnu.gdb.or1k.group2", "immu"}, - {"iatbmr3" , GROUP2 + 7, "org.gnu.gdb.or1k.group2", "immu"}, - {"iatbtr0" , GROUP2 + 8, "org.gnu.gdb.or1k.group2", "immu"}, - {"iatbtr1" , GROUP2 + 9, "org.gnu.gdb.or1k.group2", "immu"}, - {"iatbtr2" , GROUP2 + 10, "org.gnu.gdb.or1k.group2", "immu"}, - {"iatbtr3" , GROUP2 + 11, "org.gnu.gdb.or1k.group2", "immu"}, - - {"dccr" , GROUP3 + 0, "org.gnu.gdb.or1k.group3", "dcache"}, - {"dcbpr" , GROUP3 + 1, "org.gnu.gdb.or1k.group3", "dcache"}, - {"dcbfr" , GROUP3 + 2, "org.gnu.gdb.or1k.group3", "dcache"}, - {"dcbir" , GROUP3 + 3, "org.gnu.gdb.or1k.group3", "dcache"}, - {"dcbwr" , GROUP3 + 4, "org.gnu.gdb.or1k.group3", "dcache"}, - {"dcblr" , GROUP3 + 5, "org.gnu.gdb.or1k.group3", "dcache"}, - - {"iccr" , GROUP4 + 0, "org.gnu.gdb.or1k.group4", "icache"}, - {"icbpr" , GROUP4 + 1, "org.gnu.gdb.or1k.group4", "icache"}, - {"icbir" , GROUP4 + 2, "org.gnu.gdb.or1k.group4", "icache"}, - {"icblr" , GROUP4 + 3, "org.gnu.gdb.or1k.group4", "icache"}, - - {"maclo" , GROUP5 + 0, "org.gnu.gdb.or1k.group5", "mac"}, - {"machi" , GROUP5 + 1, "org.gnu.gdb.or1k.group5", "mac"}, - - {"dvr0" , GROUP6 + 0, "org.gnu.gdb.or1k.group6", "debug"}, - {"dvr1" , GROUP6 + 1, "org.gnu.gdb.or1k.group6", "debug"}, - {"dvr2" , GROUP6 + 2, "org.gnu.gdb.or1k.group6", "debug"}, - {"dvr3" , GROUP6 + 3, "org.gnu.gdb.or1k.group6", "debug"}, - {"dvr4" , GROUP6 + 4, "org.gnu.gdb.or1k.group6", "debug"}, - {"dvr5" , GROUP6 + 5, "org.gnu.gdb.or1k.group6", "debug"}, - {"dvr6" , GROUP6 + 6, "org.gnu.gdb.or1k.group6", "debug"}, - {"dvr7" , GROUP6 + 7, "org.gnu.gdb.or1k.group6", "debug"}, - {"dcr0" , GROUP6 + 8, "org.gnu.gdb.or1k.group6", "debug"}, - {"dcr1" , GROUP6 + 9, "org.gnu.gdb.or1k.group6", "debug"}, - {"dcr2" , GROUP6 + 10, "org.gnu.gdb.or1k.group6", "debug"}, - {"dcr3" , GROUP6 + 11, "org.gnu.gdb.or1k.group6", "debug"}, - {"dcr4" , GROUP6 + 12, "org.gnu.gdb.or1k.group6", "debug"}, - {"dcr5" , GROUP6 + 13, "org.gnu.gdb.or1k.group6", "debug"}, - {"dcr6" , GROUP6 + 14, "org.gnu.gdb.or1k.group6", "debug"}, - {"dcr7" , GROUP6 + 15, "org.gnu.gdb.or1k.group6", "debug"}, - {"dmr1" , GROUP6 + 16, "org.gnu.gdb.or1k.group6", "debug"}, - {"dmr2" , GROUP6 + 17, "org.gnu.gdb.or1k.group6", "debug"}, - {"dcwr0" , GROUP6 + 18, "org.gnu.gdb.or1k.group6", "debug"}, - {"dcwr1" , GROUP6 + 19, "org.gnu.gdb.or1k.group6", "debug"}, - {"dsr" , GROUP6 + 20, "org.gnu.gdb.or1k.group6", "debug"}, - {"drr" , GROUP6 + 21, "org.gnu.gdb.or1k.group6", "debug"}, - - {"pccr0" , GROUP7 + 0, "org.gnu.gdb.or1k.group7", "perf"}, - {"pccr1" , GROUP7 + 1, "org.gnu.gdb.or1k.group7", "perf"}, - {"pccr2" , GROUP7 + 2, "org.gnu.gdb.or1k.group7", "perf"}, - {"pccr3" , GROUP7 + 3, "org.gnu.gdb.or1k.group7", "perf"}, - {"pccr4" , GROUP7 + 4, "org.gnu.gdb.or1k.group7", "perf"}, - {"pccr5" , GROUP7 + 5, "org.gnu.gdb.or1k.group7", "perf"}, - {"pccr6" , GROUP7 + 6, "org.gnu.gdb.or1k.group7", "perf"}, - {"pccr7" , GROUP7 + 7, "org.gnu.gdb.or1k.group7", "perf"}, - {"pcmr0" , GROUP7 + 8, "org.gnu.gdb.or1k.group7", "perf"}, - {"pcmr1" , GROUP7 + 9, "org.gnu.gdb.or1k.group7", "perf"}, - {"pcmr2" , GROUP7 + 10, "org.gnu.gdb.or1k.group7", "perf"}, - {"pcmr3" , GROUP7 + 11, "org.gnu.gdb.or1k.group7", "perf"}, - {"pcmr4" , GROUP7 + 12, "org.gnu.gdb.or1k.group7", "perf"}, - {"pcmr5" , GROUP7 + 13, "org.gnu.gdb.or1k.group7", "perf"}, - {"pcmr6" , GROUP7 + 14, "org.gnu.gdb.or1k.group7", "perf"}, - {"pcmr7" , GROUP7 + 15, "org.gnu.gdb.or1k.group7", "perf"}, - - {"pmr" , GROUP8 + 0, "org.gnu.gdb.or1k.group8", "power"}, - - {"picmr" , GROUP9 + 0, "org.gnu.gdb.or1k.group9", "pic"}, - {"picsr" , GROUP9 + 2, "org.gnu.gdb.or1k.group9", "pic"}, - - {"ttmr" , GROUP10 + 0, "org.gnu.gdb.or1k.group10", "timer"}, - {"ttcr" , GROUP10 + 1, "org.gnu.gdb.or1k.group10", "timer"}, + {"r0", GROUP0 + 1024, "org.gnu.gdb.or1k.group0", NULL}, + {"r1", GROUP0 + 1025, "org.gnu.gdb.or1k.group0", NULL}, + {"r2", GROUP0 + 1026, "org.gnu.gdb.or1k.group0", NULL}, + {"r3", GROUP0 + 1027, "org.gnu.gdb.or1k.group0", NULL}, + {"r4", GROUP0 + 1028, "org.gnu.gdb.or1k.group0", NULL}, + {"r5", GROUP0 + 1029, "org.gnu.gdb.or1k.group0", NULL}, + {"r6", GROUP0 + 1030, "org.gnu.gdb.or1k.group0", NULL}, + {"r7", GROUP0 + 1031, "org.gnu.gdb.or1k.group0", NULL}, + {"r8", GROUP0 + 1032, "org.gnu.gdb.or1k.group0", NULL}, + {"r9", GROUP0 + 1033, "org.gnu.gdb.or1k.group0", NULL}, + {"r10", GROUP0 + 1034, "org.gnu.gdb.or1k.group0", NULL}, + {"r11", GROUP0 + 1035, "org.gnu.gdb.or1k.group0", NULL}, + {"r12", GROUP0 + 1036, "org.gnu.gdb.or1k.group0", NULL}, + {"r13", GROUP0 + 1037, "org.gnu.gdb.or1k.group0", NULL}, + {"r14", GROUP0 + 1038, "org.gnu.gdb.or1k.group0", NULL}, + {"r15", GROUP0 + 1039, "org.gnu.gdb.or1k.group0", NULL}, + {"r16", GROUP0 + 1040, "org.gnu.gdb.or1k.group0", NULL}, + {"r17", GROUP0 + 1041, "org.gnu.gdb.or1k.group0", NULL}, + {"r18", GROUP0 + 1042, "org.gnu.gdb.or1k.group0", NULL}, + {"r19", GROUP0 + 1043, "org.gnu.gdb.or1k.group0", NULL}, + {"r20", GROUP0 + 1044, "org.gnu.gdb.or1k.group0", NULL}, + {"r21", GROUP0 + 1045, "org.gnu.gdb.or1k.group0", NULL}, + {"r22", GROUP0 + 1046, "org.gnu.gdb.or1k.group0", NULL}, + {"r23", GROUP0 + 1047, "org.gnu.gdb.or1k.group0", NULL}, + {"r24", GROUP0 + 1048, "org.gnu.gdb.or1k.group0", NULL}, + {"r25", GROUP0 + 1049, "org.gnu.gdb.or1k.group0", NULL}, + {"r26", GROUP0 + 1050, "org.gnu.gdb.or1k.group0", NULL}, + {"r27", GROUP0 + 1051, "org.gnu.gdb.or1k.group0", NULL}, + {"r28", GROUP0 + 1052, "org.gnu.gdb.or1k.group0", NULL}, + {"r29", GROUP0 + 1053, "org.gnu.gdb.or1k.group0", NULL}, + {"r30", GROUP0 + 1054, "org.gnu.gdb.or1k.group0", NULL}, + {"r31", GROUP0 + 1055, "org.gnu.gdb.or1k.group0", NULL}, + {"ppc", GROUP0 + 18, "org.gnu.gdb.or1k.group0", NULL}, + {"npc", GROUP0 + 16, "org.gnu.gdb.or1k.group0", NULL}, + {"sr", GROUP0 + 17, "org.gnu.gdb.or1k.group0", NULL}, + {"vr", GROUP0 + 0, "org.gnu.gdb.or1k.group0", "system"}, + {"upr", GROUP0 + 1, "org.gnu.gdb.or1k.group0", "system"}, + {"cpucfgr", GROUP0 + 2, "org.gnu.gdb.or1k.group0", "system"}, + {"dmmucfgr", GROUP0 + 3, "org.gnu.gdb.or1k.group0", "system"}, + {"immucfgr", GROUP0 + 4, "org.gnu.gdb.or1k.group0", "system"}, + {"dccfgr", GROUP0 + 5, "org.gnu.gdb.or1k.group0", "system"}, + {"iccfgr", GROUP0 + 6, "org.gnu.gdb.or1k.group0", "system"}, + {"dcfgr", GROUP0 + 7, "org.gnu.gdb.or1k.group0", "system"}, + {"pccfgr", GROUP0 + 8, "org.gnu.gdb.or1k.group0", "system"}, + {"fpcsr", GROUP0 + 20, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr0", GROUP0 + 32, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr1", GROUP0 + 33, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr2", GROUP0 + 34, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr3", GROUP0 + 35, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr4", GROUP0 + 36, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr5", GROUP0 + 37, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr6", GROUP0 + 38, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr7", GROUP0 + 39, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr8", GROUP0 + 40, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr9", GROUP0 + 41, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr10", GROUP0 + 42, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr11", GROUP0 + 43, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr12", GROUP0 + 44, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr13", GROUP0 + 45, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr14", GROUP0 + 46, "org.gnu.gdb.or1k.group0", "system"}, + {"epcr15", GROUP0 + 47, "org.gnu.gdb.or1k.group0", "system"}, + {"eear0", GROUP0 + 48, "org.gnu.gdb.or1k.group0", "system"}, + {"eear1", GROUP0 + 49, "org.gnu.gdb.or1k.group0", "system"}, + {"eear2", GROUP0 + 50, "org.gnu.gdb.or1k.group0", "system"}, + {"eear3", GROUP0 + 51, "org.gnu.gdb.or1k.group0", "system"}, + {"eear4", GROUP0 + 52, "org.gnu.gdb.or1k.group0", "system"}, + {"eear5", GROUP0 + 53, "org.gnu.gdb.or1k.group0", "system"}, + {"eear6", GROUP0 + 54, "org.gnu.gdb.or1k.group0", "system"}, + {"eear7", GROUP0 + 55, "org.gnu.gdb.or1k.group0", "system"}, + {"eear8", GROUP0 + 56, "org.gnu.gdb.or1k.group0", "system"}, + {"eear9", GROUP0 + 57, "org.gnu.gdb.or1k.group0", "system"}, + {"eear10", GROUP0 + 58, "org.gnu.gdb.or1k.group0", "system"}, + {"eear11", GROUP0 + 59, "org.gnu.gdb.or1k.group0", "system"}, + {"eear12", GROUP0 + 60, "org.gnu.gdb.or1k.group0", "system"}, + {"eear13", GROUP0 + 61, "org.gnu.gdb.or1k.group0", "system"}, + {"eear14", GROUP0 + 62, "org.gnu.gdb.or1k.group0", "system"}, + {"eear15", GROUP0 + 63, "org.gnu.gdb.or1k.group0", "system"}, + {"esr0", GROUP0 + 64, "org.gnu.gdb.or1k.group0", "system"}, + {"esr1", GROUP0 + 65, "org.gnu.gdb.or1k.group0", "system"}, + {"esr2", GROUP0 + 66, "org.gnu.gdb.or1k.group0", "system"}, + {"esr3", GROUP0 + 67, "org.gnu.gdb.or1k.group0", "system"}, + {"esr4", GROUP0 + 68, "org.gnu.gdb.or1k.group0", "system"}, + {"esr5", GROUP0 + 69, "org.gnu.gdb.or1k.group0", "system"}, + {"esr6", GROUP0 + 70, "org.gnu.gdb.or1k.group0", "system"}, + {"esr7", GROUP0 + 71, "org.gnu.gdb.or1k.group0", "system"}, + {"esr8", GROUP0 + 72, "org.gnu.gdb.or1k.group0", "system"}, + {"esr9", GROUP0 + 73, "org.gnu.gdb.or1k.group0", "system"}, + {"esr10", GROUP0 + 74, "org.gnu.gdb.or1k.group0", "system"}, + {"esr11", GROUP0 + 75, "org.gnu.gdb.or1k.group0", "system"}, + {"esr12", GROUP0 + 76, "org.gnu.gdb.or1k.group0", "system"}, + {"esr13", GROUP0 + 77, "org.gnu.gdb.or1k.group0", "system"}, + {"esr14", GROUP0 + 78, "org.gnu.gdb.or1k.group0", "system"}, + {"esr15", GROUP0 + 79, "org.gnu.gdb.or1k.group0", "system"}, + + {"dmmuucr", GROUP1 + 0, "org.gnu.gdb.or1k.group1", "dmmu"}, + {"dmmuupr", GROUP1 + 1, "org.gnu.gdb.or1k.group1", "dmmu"}, + {"dtlbeir", GROUP1 + 2, "org.gnu.gdb.or1k.group1", "dmmu"}, + {"datbmr0", GROUP1 + 4, "org.gnu.gdb.or1k.group1", "dmmu"}, + {"datbmr1", GROUP1 + 5, "org.gnu.gdb.or1k.group1", "dmmu"}, + {"datbmr2", GROUP1 + 6, "org.gnu.gdb.or1k.group1", "dmmu"}, + {"datbmr3", GROUP1 + 7, "org.gnu.gdb.or1k.group1", "dmmu"}, + {"datbtr0", GROUP1 + 8, "org.gnu.gdb.or1k.group1", "dmmu"}, + {"datbtr1", GROUP1 + 9, "org.gnu.gdb.or1k.group1", "dmmu"}, + {"datbtr2", GROUP1 + 10, "org.gnu.gdb.or1k.group1", "dmmu"}, + {"datbtr3", GROUP1 + 11, "org.gnu.gdb.or1k.group1", "dmmu"}, + + {"immucr", GROUP2 + 0, "org.gnu.gdb.or1k.group2", "immu"}, + {"immupr", GROUP2 + 1, "org.gnu.gdb.or1k.group2", "immu"}, + {"itlbeir", GROUP2 + 2, "org.gnu.gdb.or1k.group2", "immu"}, + {"iatbmr0", GROUP2 + 4, "org.gnu.gdb.or1k.group2", "immu"}, + {"iatbmr1", GROUP2 + 5, "org.gnu.gdb.or1k.group2", "immu"}, + {"iatbmr2", GROUP2 + 6, "org.gnu.gdb.or1k.group2", "immu"}, + {"iatbmr3", GROUP2 + 7, "org.gnu.gdb.or1k.group2", "immu"}, + {"iatbtr0", GROUP2 + 8, "org.gnu.gdb.or1k.group2", "immu"}, + {"iatbtr1", GROUP2 + 9, "org.gnu.gdb.or1k.group2", "immu"}, + {"iatbtr2", GROUP2 + 10, "org.gnu.gdb.or1k.group2", "immu"}, + {"iatbtr3", GROUP2 + 11, "org.gnu.gdb.or1k.group2", "immu"}, + + {"dccr", GROUP3 + 0, "org.gnu.gdb.or1k.group3", "dcache"}, + {"dcbpr", GROUP3 + 1, "org.gnu.gdb.or1k.group3", "dcache"}, + {"dcbfr", GROUP3 + 2, "org.gnu.gdb.or1k.group3", "dcache"}, + {"dcbir", GROUP3 + 3, "org.gnu.gdb.or1k.group3", "dcache"}, + {"dcbwr", GROUP3 + 4, "org.gnu.gdb.or1k.group3", "dcache"}, + {"dcblr", GROUP3 + 5, "org.gnu.gdb.or1k.group3", "dcache"}, + + {"iccr", GROUP4 + 0, "org.gnu.gdb.or1k.group4", "icache"}, + {"icbpr", GROUP4 + 1, "org.gnu.gdb.or1k.group4", "icache"}, + {"icbir", GROUP4 + 2, "org.gnu.gdb.or1k.group4", "icache"}, + {"icblr", GROUP4 + 3, "org.gnu.gdb.or1k.group4", "icache"}, + + {"maclo", GROUP5 + 0, "org.gnu.gdb.or1k.group5", "mac"}, + {"machi", GROUP5 + 1, "org.gnu.gdb.or1k.group5", "mac"}, + + {"dvr0", GROUP6 + 0, "org.gnu.gdb.or1k.group6", "debug"}, + {"dvr1", GROUP6 + 1, "org.gnu.gdb.or1k.group6", "debug"}, + {"dvr2", GROUP6 + 2, "org.gnu.gdb.or1k.group6", "debug"}, + {"dvr3", GROUP6 + 3, "org.gnu.gdb.or1k.group6", "debug"}, + {"dvr4", GROUP6 + 4, "org.gnu.gdb.or1k.group6", "debug"}, + {"dvr5", GROUP6 + 5, "org.gnu.gdb.or1k.group6", "debug"}, + {"dvr6", GROUP6 + 6, "org.gnu.gdb.or1k.group6", "debug"}, + {"dvr7", GROUP6 + 7, "org.gnu.gdb.or1k.group6", "debug"}, + {"dcr0", GROUP6 + 8, "org.gnu.gdb.or1k.group6", "debug"}, + {"dcr1", GROUP6 + 9, "org.gnu.gdb.or1k.group6", "debug"}, + {"dcr2", GROUP6 + 10, "org.gnu.gdb.or1k.group6", "debug"}, + {"dcr3", GROUP6 + 11, "org.gnu.gdb.or1k.group6", "debug"}, + {"dcr4", GROUP6 + 12, "org.gnu.gdb.or1k.group6", "debug"}, + {"dcr5", GROUP6 + 13, "org.gnu.gdb.or1k.group6", "debug"}, + {"dcr6", GROUP6 + 14, "org.gnu.gdb.or1k.group6", "debug"}, + {"dcr7", GROUP6 + 15, "org.gnu.gdb.or1k.group6", "debug"}, + {"dmr1", GROUP6 + 16, "org.gnu.gdb.or1k.group6", "debug"}, + {"dmr2", GROUP6 + 17, "org.gnu.gdb.or1k.group6", "debug"}, + {"dcwr0", GROUP6 + 18, "org.gnu.gdb.or1k.group6", "debug"}, + {"dcwr1", GROUP6 + 19, "org.gnu.gdb.or1k.group6", "debug"}, + {"dsr", GROUP6 + 20, "org.gnu.gdb.or1k.group6", "debug"}, + {"drr", GROUP6 + 21, "org.gnu.gdb.or1k.group6", "debug"}, + + {"pccr0", GROUP7 + 0, "org.gnu.gdb.or1k.group7", "perf"}, + {"pccr1", GROUP7 + 1, "org.gnu.gdb.or1k.group7", "perf"}, + {"pccr2", GROUP7 + 2, "org.gnu.gdb.or1k.group7", "perf"}, + {"pccr3", GROUP7 + 3, "org.gnu.gdb.or1k.group7", "perf"}, + {"pccr4", GROUP7 + 4, "org.gnu.gdb.or1k.group7", "perf"}, + {"pccr5", GROUP7 + 5, "org.gnu.gdb.or1k.group7", "perf"}, + {"pccr6", GROUP7 + 6, "org.gnu.gdb.or1k.group7", "perf"}, + {"pccr7", GROUP7 + 7, "org.gnu.gdb.or1k.group7", "perf"}, + {"pcmr0", GROUP7 + 8, "org.gnu.gdb.or1k.group7", "perf"}, + {"pcmr1", GROUP7 + 9, "org.gnu.gdb.or1k.group7", "perf"}, + {"pcmr2", GROUP7 + 10, "org.gnu.gdb.or1k.group7", "perf"}, + {"pcmr3", GROUP7 + 11, "org.gnu.gdb.or1k.group7", "perf"}, + {"pcmr4", GROUP7 + 12, "org.gnu.gdb.or1k.group7", "perf"}, + {"pcmr5", GROUP7 + 13, "org.gnu.gdb.or1k.group7", "perf"}, + {"pcmr6", GROUP7 + 14, "org.gnu.gdb.or1k.group7", "perf"}, + {"pcmr7", GROUP7 + 15, "org.gnu.gdb.or1k.group7", "perf"}, + + {"pmr", GROUP8 + 0, "org.gnu.gdb.or1k.group8", "power"}, + + {"picmr", GROUP9 + 0, "org.gnu.gdb.or1k.group9", "pic"}, + {"picsr", GROUP9 + 2, "org.gnu.gdb.or1k.group9", "pic"}, + + {"ttmr", GROUP10 + 0, "org.gnu.gdb.or1k.group10", "timer"}, + {"ttcr", GROUP10 + 1, "org.gnu.gdb.or1k.group10", "timer"}, }; static int or1k_add_reg(struct target *target, struct or1k_core_reg *new_reg) @@ -419,9 +423,9 @@ static int or1k_read_core_reg(struct target *target, int num) if ((num >= 0) && (num < OR1KNUMCOREREGS)) { reg_value = or1k->core_regs[num]; buf_set_u32(or1k->core_cache->reg_list[num].value, 0, 32, reg_value); - LOG_DEBUG("Read core reg %i value 0x%08" PRIx32, num , reg_value); - or1k->core_cache->reg_list[num].valid = 1; - or1k->core_cache->reg_list[num].dirty = 0; + LOG_DEBUG("Read core reg %i value 0x%08" PRIx32, num, reg_value); + or1k->core_cache->reg_list[num].valid = true; + or1k->core_cache->reg_list[num].dirty = false; } else { /* This is an spr, always read value from HW */ int retval = du_core->or1k_jtag_read_cpu(&or1k->jtag, @@ -431,7 +435,7 @@ static int or1k_read_core_reg(struct target *target, int num) return retval; } buf_set_u32(or1k->core_cache->reg_list[num].value, 0, 32, reg_value); - LOG_DEBUG("Read spr reg %i value 0x%08" PRIx32, num , reg_value); + LOG_DEBUG("Read spr reg %i value 0x%08" PRIx32, num, reg_value); } return ERROR_OK; @@ -448,9 +452,9 @@ static int or1k_write_core_reg(struct target *target, int num) uint32_t reg_value = buf_get_u32(or1k->core_cache->reg_list[num].value, 0, 32); or1k->core_regs[num] = reg_value; - LOG_DEBUG("Write core reg %i value 0x%08" PRIx32, num , reg_value); - or1k->core_cache->reg_list[num].valid = 1; - or1k->core_cache->reg_list[num].dirty = 0; + LOG_DEBUG("Write core reg %i value 0x%08" PRIx32, num, reg_value); + or1k->core_cache->reg_list[num].valid = true; + or1k->core_cache->reg_list[num].dirty = false; return ERROR_OK; } @@ -483,8 +487,8 @@ static int or1k_set_core_reg(struct reg *reg, uint8_t *buf) if (or1k_reg->list_num < OR1KNUMCOREREGS) { buf_set_u32(reg->value, 0, 32, value); - reg->dirty = 1; - reg->valid = 1; + reg->dirty = true; + reg->valid = true; } else { /* This is an spr, write it to the HW */ int retval = du_core->or1k_jtag_write_cpu(&or1k->jtag, @@ -537,8 +541,8 @@ static struct reg_cache *or1k_build_reg_cache(struct target *target) reg_list[i].group = or1k_core_reg_list_arch_info[i].group; reg_list[i].size = 32; reg_list[i].value = calloc(1, 4); - reg_list[i].dirty = 0; - reg_list[i].valid = 0; + reg_list[i].dirty = false; + reg_list[i].valid = false; reg_list[i].type = &or1k_reg_type; reg_list[i].arch_info = &arch_info[i]; reg_list[i].number = i; @@ -628,7 +632,7 @@ static int or1k_is_cpu_running(struct target *target, int *running) LOG_WARNING("Debug IF CPU control reg read failure."); /* Try once to restart the JTAG infrastructure - quite possibly the board has just been reset. */ - LOG_WARNING("Resetting JTAG TAP state and reconnectiong to debug IF."); + LOG_WARNING("Resetting JTAG TAP state and reconnecting to debug IF."); du_core->or1k_jtag_init(&or1k->jtag); LOG_WARNING("...attempt %d of %d", tries, RETRIES_MAX); @@ -738,7 +742,7 @@ static int or1k_deassert_reset(struct target *target) int retval = du_core->or1k_cpu_reset(&or1k->jtag, CPU_NOT_RESET); if (retval != ERROR_OK) { - LOG_ERROR("Error while desasserting RESET"); + LOG_ERROR("Error while deasserting RESET"); return retval; } @@ -857,7 +861,7 @@ static int or1k_resume_or_step(struct target *target, int current, /* Single step past breakpoint at current address */ breakpoint = breakpoint_find(target, resume_pc); if (breakpoint) { - LOG_DEBUG("Unset breakpoint at 0x%08" PRIx32, breakpoint->address); + LOG_DEBUG("Unset breakpoint at 0x%08" TARGET_PRIxADDR, breakpoint->address); retval = or1k_remove_breakpoint(target, breakpoint); if (retval != ERROR_OK) return retval; @@ -893,7 +897,8 @@ static int or1k_resume_or_step(struct target *target, int current, } static int or1k_resume(struct target *target, int current, - uint32_t address, int handle_breakpoints, int debug_execution) + target_addr_t address, int handle_breakpoints, + int debug_execution) { return or1k_resume_or_step(target, current, address, handle_breakpoints, @@ -902,7 +907,7 @@ static int or1k_resume(struct target *target, int current, } static int or1k_step(struct target *target, int current, - uint32_t address, int handle_breakpoints) + target_addr_t address, int handle_breakpoints) { return or1k_resume_or_step(target, current, address, handle_breakpoints, @@ -918,7 +923,7 @@ static int or1k_add_breakpoint(struct target *target, struct or1k_du *du_core = or1k_to_du(or1k); uint8_t data; - LOG_DEBUG("Adding breakpoint: addr 0x%08" PRIx32 ", len %d, type %d, set: %d, id: %" PRId32, + LOG_DEBUG("Adding breakpoint: addr 0x%08" TARGET_PRIxADDR ", len %d, type %d, set: %d, id: %" PRIu32, breakpoint->address, breakpoint->length, breakpoint->type, breakpoint->set, breakpoint->unique_id); @@ -933,7 +938,7 @@ static int or1k_add_breakpoint(struct target *target, 1, &data); if (retval != ERROR_OK) { - LOG_ERROR("Error while reading the instruction at 0x%08" PRIx32, + LOG_ERROR("Error while reading the instruction at 0x%08" TARGET_PRIxADDR, breakpoint->address); return retval; } @@ -954,14 +959,15 @@ static int or1k_add_breakpoint(struct target *target, or1k_trap_insn); if (retval != ERROR_OK) { - LOG_ERROR("Error while writing OR1K_TRAP_INSTR at 0x%08" PRIx32, + LOG_ERROR("Error while writing OR1K_TRAP_INSTR at 0x%08" TARGET_PRIxADDR, breakpoint->address); return retval; } /* invalidate instruction cache */ + uint32_t addr = breakpoint->address; retval = du_core->or1k_jtag_write_cpu(&or1k->jtag, - OR1K_ICBIR_CPU_REG_ADD, 1, &breakpoint->address); + OR1K_ICBIR_CPU_REG_ADD, 1, &addr); if (retval != ERROR_OK) { LOG_ERROR("Error while invalidating the ICACHE"); return retval; @@ -976,7 +982,7 @@ static int or1k_remove_breakpoint(struct target *target, struct or1k_common *or1k = target_to_or1k(target); struct or1k_du *du_core = or1k_to_du(or1k); - LOG_DEBUG("Removing breakpoint: addr 0x%08" PRIx32 ", len %d, type %d, set: %d, id: %" PRId32, + LOG_DEBUG("Removing breakpoint: addr 0x%08" TARGET_PRIxADDR ", len %d, type %d, set: %d, id: %" PRIu32, breakpoint->address, breakpoint->length, breakpoint->type, breakpoint->set, breakpoint->unique_id); @@ -992,14 +998,15 @@ static int or1k_remove_breakpoint(struct target *target, breakpoint->orig_instr); if (retval != ERROR_OK) { - LOG_ERROR("Error while writing back the instruction at 0x%08" PRIx32, + LOG_ERROR("Error while writing back the instruction at 0x%08" TARGET_PRIxADDR, breakpoint->address); return retval; } /* invalidate instruction cache */ + uint32_t addr = breakpoint->address; retval = du_core->or1k_jtag_write_cpu(&or1k->jtag, - OR1K_ICBIR_CPU_REG_ADD, 1, &breakpoint->address); + OR1K_ICBIR_CPU_REG_ADD, 1, &addr); if (retval != ERROR_OK) { LOG_ERROR("Error while invalidating the ICACHE"); return retval; @@ -1022,13 +1029,13 @@ static int or1k_remove_watchpoint(struct target *target, return ERROR_OK; } -static int or1k_read_memory(struct target *target, uint32_t address, +static int or1k_read_memory(struct target *target, target_addr_t address, uint32_t size, uint32_t count, uint8_t *buffer) { struct or1k_common *or1k = target_to_or1k(target); struct or1k_du *du_core = or1k_to_du(or1k); - LOG_DEBUG("Read memory at 0x%08" PRIx32 ", size: %" PRIu32 ", count: 0x%08" PRIx32, address, size, count); + LOG_DEBUG("Read memory at 0x%08" TARGET_PRIxADDR ", size: %" PRIu32 ", count: 0x%08" PRIx32, address, size, count); if (target->state != TARGET_HALTED) { LOG_ERROR("Target not halted"); @@ -1049,13 +1056,13 @@ static int or1k_read_memory(struct target *target, uint32_t address, return du_core->or1k_jtag_read_memory(&or1k->jtag, address, size, count, buffer); } -static int or1k_write_memory(struct target *target, uint32_t address, +static int or1k_write_memory(struct target *target, target_addr_t address, uint32_t size, uint32_t count, const uint8_t *buffer) { struct or1k_common *or1k = target_to_or1k(target); struct or1k_du *du_core = or1k_to_du(or1k); - LOG_DEBUG("Write memory at 0x%08" PRIx32 ", size: %" PRIu32 ", count: 0x%08" PRIx32, address, size, count); + LOG_DEBUG("Write memory at 0x%08" TARGET_PRIxADDR ", size: %" PRIu32 ", count: 0x%08" PRIx32, address, size, count); if (target->state != TARGET_HALTED) { LOG_WARNING("Target not halted"); @@ -1199,12 +1206,58 @@ int or1k_get_gdb_fileio_info(struct target *target, struct gdb_fileio_info *file return ERROR_FAIL; } -static int or1k_checksum_memory(struct target *target, uint32_t address, - uint32_t count, uint32_t *checksum) { - +static int or1k_checksum_memory(struct target *target, target_addr_t address, + uint32_t count, uint32_t *checksum) +{ return ERROR_FAIL; } +static int or1k_profiling(struct target *target, uint32_t *samples, + uint32_t max_num_samples, uint32_t *num_samples, uint32_t seconds) +{ + struct timeval timeout, now; + struct or1k_common *or1k = target_to_or1k(target); + struct or1k_du *du_core = or1k_to_du(or1k); + int retval = ERROR_OK; + + gettimeofday(&timeout, NULL); + timeval_add_time(&timeout, seconds, 0); + + LOG_INFO("Starting or1k profiling. Sampling npc as fast as we can..."); + + /* Make sure the target is running */ + target_poll(target); + if (target->state == TARGET_HALTED) + retval = target_resume(target, 1, 0, 0, 0); + + if (retval != ERROR_OK) { + LOG_ERROR("Error while resuming target"); + return retval; + } + + uint32_t sample_count = 0; + + for (;;) { + uint32_t reg_value; + retval = du_core->or1k_jtag_read_cpu(&or1k->jtag, GROUP0 + 16 /* NPC */, 1, ®_value); + if (retval != ERROR_OK) { + LOG_ERROR("Error while reading NPC"); + return retval; + } + + samples[sample_count++] = reg_value; + + gettimeofday(&now, NULL); + if ((sample_count >= max_num_samples) || timeval_compare(&now, &timeout) > 0) { + LOG_INFO("Profiling completed. %" PRIu32 " samples.", sample_count); + break; + } + } + + *num_samples = sample_count; + return retval; +} + COMMAND_HANDLER(or1k_tap_select_command_handler) { struct target *target = get_current_target(CMD_CTX); @@ -1238,7 +1291,7 @@ COMMAND_HANDLER(or1k_tap_list_command_handler) list_for_each_entry(or1k_tap, &tap_list, list) { if (or1k_tap->name) - command_print(CMD_CTX, "%s", or1k_tap->name); + command_print(CMD, "%s", or1k_tap->name); } return ERROR_OK; @@ -1286,7 +1339,7 @@ COMMAND_HANDLER(or1k_du_list_command_handler) list_for_each_entry(or1k_du, &du_list, list) { if (or1k_du->name) - command_print(CMD_CTX, "%s", or1k_du->name); + command_print(CMD, "%s", or1k_du->name); } return ERROR_OK; @@ -1321,28 +1374,28 @@ COMMAND_HANDLER(or1k_addreg_command_handler) static const struct command_registration or1k_hw_ip_command_handlers[] = { { - "tap_select", + .name = "tap_select", .handler = or1k_tap_select_command_handler, .mode = COMMAND_ANY, .usage = "tap_select name", .help = "Select the TAP core to use", }, { - "tap_list", + .name = "tap_list", .handler = or1k_tap_list_command_handler, .mode = COMMAND_ANY, .usage = "tap_list", .help = "Display available TAP core", }, { - "du_select", + .name = "du_select", .handler = or1k_du_select_command_handler, .mode = COMMAND_ANY, .usage = "du_select name", .help = "Select the Debug Unit core to use", }, { - "du_list", + .name = "du_list", .handler = or1k_du_list_command_handler, .mode = COMMAND_ANY, .usage = "select_tap name", @@ -1353,7 +1406,7 @@ static const struct command_registration or1k_hw_ip_command_handlers[] = { static const struct command_registration or1k_reg_command_handlers[] = { { - "addreg", + .name = "addreg", .handler = or1k_addreg_command_handler, .mode = COMMAND_ANY, .usage = "addreg name addr feature group", @@ -1406,4 +1459,6 @@ struct target_type or1k_target = { .examine = or1k_examine, .get_gdb_fileio_info = or1k_get_gdb_fileio_info, + + .profiling = or1k_profiling, };