aboutsummaryrefslogtreecommitdiffstats
path: root/arch/frv
diff options
context:
space:
mode:
Diffstat (limited to 'arch/frv')
-rw-r--r--arch/frv/kernel/entry.S7
-rw-r--r--arch/frv/kernel/gdb-stub.c88
-rw-r--r--arch/frv/mm/init.c31
3 files changed, 42 insertions, 84 deletions
diff --git a/arch/frv/kernel/entry.S b/arch/frv/kernel/entry.S
index b8a4b94779b1..99060ab507ee 100644
--- a/arch/frv/kernel/entry.S
+++ b/arch/frv/kernel/entry.S
@@ -1519,6 +1519,11 @@ sys_call_table:
1519 .long sys_fallocate 1519 .long sys_fallocate
1520 .long sys_timerfd_settime /* 325 */ 1520 .long sys_timerfd_settime /* 325 */
1521 .long sys_timerfd_gettime 1521 .long sys_timerfd_gettime
1522 1522 .long sys_signalfd4
1523 .long sys_eventfd2
1524 .long sys_epoll_create1
1525 .long sys_dup3 /* 330 */
1526 .long sys_pipe2
1527 .long sys_inotify_init1
1523 1528
1524syscall_table_size = (. - sys_call_table) 1529syscall_table_size = (. - sys_call_table)
diff --git a/arch/frv/kernel/gdb-stub.c b/arch/frv/kernel/gdb-stub.c
index 48a0393e7cee..7ca8a6b19ac9 100644
--- a/arch/frv/kernel/gdb-stub.c
+++ b/arch/frv/kernel/gdb-stub.c
@@ -182,8 +182,6 @@ extern volatile u32 __attribute__((section(".bss"))) gdbstub_trace_through_excep
182static char input_buffer[BUFMAX]; 182static char input_buffer[BUFMAX];
183static char output_buffer[BUFMAX]; 183static char output_buffer[BUFMAX];
184 184
185static const char hexchars[] = "0123456789abcdef";
186
187static const char *regnames[] = { 185static const char *regnames[] = {
188 "PSR ", "ISR ", "CCR ", "CCCR", 186 "PSR ", "ISR ", "CCR ", "CCCR",
189 "LR ", "LCR ", "PC ", "_stt", 187 "LR ", "LCR ", "PC ", "_stt",
@@ -383,8 +381,8 @@ static int gdbstub_send_packet(char *buffer)
383 } 381 }
384 382
385 gdbstub_tx_char('#'); 383 gdbstub_tx_char('#');
386 gdbstub_tx_char(hexchars[checksum >> 4]); 384 gdbstub_tx_char(hex_asc_hi(checksum));
387 gdbstub_tx_char(hexchars[checksum & 0xf]); 385 gdbstub_tx_char(hex_asc_lo(checksum));
388 386
389 } while (gdbstub_rx_char(&ch,0), 387 } while (gdbstub_rx_char(&ch,0),
390#ifdef GDBSTUB_DEBUG_PROTOCOL 388#ifdef GDBSTUB_DEBUG_PROTOCOL
@@ -674,8 +672,7 @@ static unsigned char *mem2hex(const void *_mem, char *buf, int count, int may_fa
674 if ((uint32_t)mem&1 && count>=1) { 672 if ((uint32_t)mem&1 && count>=1) {
675 if (!gdbstub_read_byte(mem,ch)) 673 if (!gdbstub_read_byte(mem,ch))
676 return NULL; 674 return NULL;
677 *buf++ = hexchars[ch[0] >> 4]; 675 buf = pack_hex_byte(buf, ch[0]);
678 *buf++ = hexchars[ch[0] & 0xf];
679 mem++; 676 mem++;
680 count--; 677 count--;
681 } 678 }
@@ -683,10 +680,8 @@ static unsigned char *mem2hex(const void *_mem, char *buf, int count, int may_fa
683 if ((uint32_t)mem&3 && count>=2) { 680 if ((uint32_t)mem&3 && count>=2) {
684 if (!gdbstub_read_word(mem,(uint16_t *)ch)) 681 if (!gdbstub_read_word(mem,(uint16_t *)ch))
685 return NULL; 682 return NULL;
686 *buf++ = hexchars[ch[0] >> 4]; 683 buf = pack_hex_byte(buf, ch[0]);
687 *buf++ = hexchars[ch[0] & 0xf]; 684 buf = pack_hex_byte(buf, ch[1]);
688 *buf++ = hexchars[ch[1] >> 4];
689 *buf++ = hexchars[ch[1] & 0xf];
690 mem += 2; 685 mem += 2;
691 count -= 2; 686 count -= 2;
692 } 687 }
@@ -694,14 +689,10 @@ static unsigned char *mem2hex(const void *_mem, char *buf, int count, int may_fa
694 while (count>=4) { 689 while (count>=4) {
695 if (!gdbstub_read_dword(mem,(uint32_t *)ch)) 690 if (!gdbstub_read_dword(mem,(uint32_t *)ch))
696 return NULL; 691 return NULL;
697 *buf++ = hexchars[ch[0] >> 4]; 692 buf = pack_hex_byte(buf, ch[0]);
698 *buf++ = hexchars[ch[0] & 0xf]; 693 buf = pack_hex_byte(buf, ch[1]);
699 *buf++ = hexchars[ch[1] >> 4]; 694 buf = pack_hex_byte(buf, ch[2]);
700 *buf++ = hexchars[ch[1] & 0xf]; 695 buf = pack_hex_byte(buf, ch[3]);
701 *buf++ = hexchars[ch[2] >> 4];
702 *buf++ = hexchars[ch[2] & 0xf];
703 *buf++ = hexchars[ch[3] >> 4];
704 *buf++ = hexchars[ch[3] & 0xf];
705 mem += 4; 696 mem += 4;
706 count -= 4; 697 count -= 4;
707 } 698 }
@@ -709,10 +700,8 @@ static unsigned char *mem2hex(const void *_mem, char *buf, int count, int may_fa
709 if (count>=2) { 700 if (count>=2) {
710 if (!gdbstub_read_word(mem,(uint16_t *)ch)) 701 if (!gdbstub_read_word(mem,(uint16_t *)ch))
711 return NULL; 702 return NULL;
712 *buf++ = hexchars[ch[0] >> 4]; 703 buf = pack_hex_byte(buf, ch[0]);
713 *buf++ = hexchars[ch[0] & 0xf]; 704 buf = pack_hex_byte(buf, ch[1]);
714 *buf++ = hexchars[ch[1] >> 4];
715 *buf++ = hexchars[ch[1] & 0xf];
716 mem += 2; 705 mem += 2;
717 count -= 2; 706 count -= 2;
718 } 707 }
@@ -720,8 +709,7 @@ static unsigned char *mem2hex(const void *_mem, char *buf, int count, int may_fa
720 if (count>=1) { 709 if (count>=1) {
721 if (!gdbstub_read_byte(mem,ch)) 710 if (!gdbstub_read_byte(mem,ch))
722 return NULL; 711 return NULL;
723 *buf++ = hexchars[ch[0] >> 4]; 712 buf = pack_hex_byte(buf, ch[0]);
724 *buf++ = hexchars[ch[0] & 0xf];
725 } 713 }
726 714
727 *buf = 0; 715 *buf = 0;
@@ -1471,22 +1459,22 @@ void gdbstub(int sigval)
1471 *ptr++ = 'O'; 1459 *ptr++ = 'O';
1472 ptr = mem2hex(title, ptr, sizeof(title) - 1,0); 1460 ptr = mem2hex(title, ptr, sizeof(title) - 1,0);
1473 1461
1474 hx = hexchars[(brr & 0xf0000000) >> 28]; 1462 hx = hex_asc_hi(brr >> 24);
1475 *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; 1463 ptr = pack_hex_byte(ptr, hx);
1476 hx = hexchars[(brr & 0x0f000000) >> 24]; 1464 hx = hex_asc_lo(brr >> 24);
1477 *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; 1465 ptr = pack_hex_byte(ptr, hx);
1478 hx = hexchars[(brr & 0x00f00000) >> 20]; 1466 hx = hex_asc_hi(brr >> 16);
1479 *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; 1467 ptr = pack_hex_byte(ptr, hx);
1480 hx = hexchars[(brr & 0x000f0000) >> 16]; 1468 hx = hex_asc_lo(brr >> 16);
1481 *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; 1469 ptr = pack_hex_byte(ptr, hx);
1482 hx = hexchars[(brr & 0x0000f000) >> 12]; 1470 hx = hex_asc_hi(brr >> 8);
1483 *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; 1471 ptr = pack_hex_byte(ptr, hx);
1484 hx = hexchars[(brr & 0x00000f00) >> 8]; 1472 hx = hex_asc_lo(brr >> 8);
1485 *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; 1473 ptr = pack_hex_byte(ptr, hx);
1486 hx = hexchars[(brr & 0x000000f0) >> 4]; 1474 hx = hex_asc_hi(brr);
1487 *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; 1475 ptr = pack_hex_byte(ptr, hx);
1488 hx = hexchars[(brr & 0x0000000f)]; 1476 hx = hex_asc_lo(brr);
1489 *ptr++ = hexchars[hx >> 4]; *ptr++ = hexchars[hx & 0xf]; 1477 ptr = pack_hex_byte(ptr, hx);
1490 1478
1491 ptr = mem2hex(crlf, ptr, sizeof(crlf) - 1, 0); 1479 ptr = mem2hex(crlf, ptr, sizeof(crlf) - 1, 0);
1492 *ptr = 0; 1480 *ptr = 0;
@@ -1500,12 +1488,10 @@ void gdbstub(int sigval)
1500 1488
1501 /* Send trap type (converted to signal) */ 1489 /* Send trap type (converted to signal) */
1502 *ptr++ = 'T'; 1490 *ptr++ = 'T';
1503 *ptr++ = hexchars[sigval >> 4]; 1491 ptr = pack_hex_byte(ptr, sigval);
1504 *ptr++ = hexchars[sigval & 0xf];
1505 1492
1506 /* Send Error PC */ 1493 /* Send Error PC */
1507 *ptr++ = hexchars[GDB_REG_PC >> 4]; 1494 ptr = pack_hex_byte(ptr, GDB_REG_PC);
1508 *ptr++ = hexchars[GDB_REG_PC & 0xf];
1509 *ptr++ = ':'; 1495 *ptr++ = ':';
1510 ptr = mem2hex(&__debug_frame->pc, ptr, 4, 0); 1496 ptr = mem2hex(&__debug_frame->pc, ptr, 4, 0);
1511 *ptr++ = ';'; 1497 *ptr++ = ';';
@@ -1513,8 +1499,7 @@ void gdbstub(int sigval)
1513 /* 1499 /*
1514 * Send frame pointer 1500 * Send frame pointer
1515 */ 1501 */
1516 *ptr++ = hexchars[GDB_REG_FP >> 4]; 1502 ptr = pack_hex_byte(ptr, GDB_REG_FP);
1517 *ptr++ = hexchars[GDB_REG_FP & 0xf];
1518 *ptr++ = ':'; 1503 *ptr++ = ':';
1519 ptr = mem2hex(&__debug_frame->fp, ptr, 4, 0); 1504 ptr = mem2hex(&__debug_frame->fp, ptr, 4, 0);
1520 *ptr++ = ';'; 1505 *ptr++ = ';';
@@ -1522,8 +1507,7 @@ void gdbstub(int sigval)
1522 /* 1507 /*
1523 * Send stack pointer 1508 * Send stack pointer
1524 */ 1509 */
1525 *ptr++ = hexchars[GDB_REG_SP >> 4]; 1510 ptr = pack_hex_byte(ptr, GDB_REG_SP);
1526 *ptr++ = hexchars[GDB_REG_SP & 0xf];
1527 *ptr++ = ':'; 1511 *ptr++ = ':';
1528 ptr = mem2hex(&__debug_frame->sp, ptr, 4, 0); 1512 ptr = mem2hex(&__debug_frame->sp, ptr, 4, 0);
1529 *ptr++ = ';'; 1513 *ptr++ = ';';
@@ -1548,8 +1532,8 @@ void gdbstub(int sigval)
1548 /* request repeat of last signal number */ 1532 /* request repeat of last signal number */
1549 case '?': 1533 case '?':
1550 output_buffer[0] = 'S'; 1534 output_buffer[0] = 'S';
1551 output_buffer[1] = hexchars[sigval >> 4]; 1535 output_buffer[1] = hex_asc_hi(sigval);
1552 output_buffer[2] = hexchars[sigval & 0xf]; 1536 output_buffer[2] = hex_asc_lo(sigval);
1553 output_buffer[3] = 0; 1537 output_buffer[3] = 0;
1554 break; 1538 break;
1555 1539
@@ -2059,8 +2043,8 @@ void gdbstub_exit(int status)
2059 } 2043 }
2060 2044
2061 gdbstub_tx_char('#'); 2045 gdbstub_tx_char('#');
2062 gdbstub_tx_char(hexchars[checksum >> 4]); 2046 gdbstub_tx_char(hex_asc_hi(checksum));
2063 gdbstub_tx_char(hexchars[checksum & 0xf]); 2047 gdbstub_tx_char(hex_asc_lo(checksum));
2064 2048
2065 /* make sure the output is flushed, or else RedBoot might clobber it */ 2049 /* make sure the output is flushed, or else RedBoot might clobber it */
2066 gdbstub_tx_char('-'); 2050 gdbstub_tx_char('-');
diff --git a/arch/frv/mm/init.c b/arch/frv/mm/init.c
index 9af7740f32fb..1b851db34186 100644
--- a/arch/frv/mm/init.c
+++ b/arch/frv/mm/init.c
@@ -63,37 +63,6 @@ EXPORT_SYMBOL(empty_zero_page);
63 63
64/*****************************************************************************/ 64/*****************************************************************************/
65/* 65/*
66 *
67 */
68void show_mem(void)
69{
70 unsigned long i;
71 int free = 0, total = 0, reserved = 0, shared = 0;
72
73 printk("\nMem-info:\n");
74 show_free_areas();
75 i = max_mapnr;
76 while (i-- > 0) {
77 struct page *page = &mem_map[i];
78
79 total++;
80 if (PageReserved(page))
81 reserved++;
82 else if (!page_count(page))
83 free++;
84 else
85 shared += page_count(page) - 1;
86 }
87
88 printk("%d pages of RAM\n",total);
89 printk("%d free pages\n",free);
90 printk("%d reserved pages\n",reserved);
91 printk("%d pages shared\n",shared);
92
93} /* end show_mem() */
94
95/*****************************************************************************/
96/*
97 * paging_init() continues the virtual memory environment setup which 66 * paging_init() continues the virtual memory environment setup which
98 * was begun by the code in arch/head.S. 67 * was begun by the code in arch/head.S.
99 * The parameters are pointers to where to stick the starting and ending 68 * The parameters are pointers to where to stick the starting and ending