diff options
Diffstat (limited to 'arch/frv')
-rw-r--r-- | arch/frv/kernel/entry.S | 7 | ||||
-rw-r--r-- | arch/frv/kernel/gdb-stub.c | 88 | ||||
-rw-r--r-- | arch/frv/mm/init.c | 31 |
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 | ||
1524 | syscall_table_size = (. - sys_call_table) | 1529 | syscall_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 | |||
182 | static char input_buffer[BUFMAX]; | 182 | static char input_buffer[BUFMAX]; |
183 | static char output_buffer[BUFMAX]; | 183 | static char output_buffer[BUFMAX]; |
184 | 184 | ||
185 | static const char hexchars[] = "0123456789abcdef"; | ||
186 | |||
187 | static const char *regnames[] = { | 185 | static 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 | */ | ||
68 | void 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 |