Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
Pull "exotic" arch fixes from Geert Uytterhoeven: "This is a collection of several exotic architecture fixes, and a few other fixes for issues that were detected while doing the former" * 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: (35 commits) lib: Move fonts from drivers/video/console/ to lib/fonts/ console/font: Refactor font support code selection logic Revert "staging/solo6x10: depend on CONFIG_FONTS" input: cros_ec_keyb_clear_keyboard() depends on CONFIG_PM_SLEEP score: Wire up asm-generic/xor.h score: Remove unneeded <asm/dma-mapping.h> openrisc: Wire up asm-generic/xor.h h8300/boot: Use POSIX "$((..))" instead of bashism "$[...]" h8300: Mark H83002 and H83048 CPU support broken h8300: Switch h8300 to drivers/Kconfig h8300: Limit timer channel ranges in Kconfig h8300: Wire up asm-generic/xor.h h8300: Fill the system call table using a CALL() macro h8300: Fix <asm/tlb.h> h8300: Hardcode symbol prefixes in asm sources h8300: add missing definition for read_barries_depends() frv: head.S - Remove commented-out initialization code cris: Wire up asm-generic/vga.h parport: disable PC-style parallel port support on cris console: Disable VGA text console support on cris ...
This commit is contained in:
commit
ab53485739
@ -297,10 +297,10 @@ KAO -->
|
||||
</sect1>
|
||||
<sect1><title>Frame Buffer Fonts</title>
|
||||
<para>
|
||||
Refer to the file drivers/video/console/fonts.c for more information.
|
||||
Refer to the file lib/fonts/fonts.c for more information.
|
||||
</para>
|
||||
<!-- FIXME: Removed for now since no structured comments in source
|
||||
X!Idrivers/video/console/fonts.c
|
||||
X!Ilib/fonts/fonts.c
|
||||
-->
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
@ -27,7 +27,7 @@ OBJS += misc.o decompress.o
|
||||
ifeq ($(CONFIG_DEBUG_UNCOMPRESS),y)
|
||||
OBJS += debug.o
|
||||
endif
|
||||
FONTC = $(srctree)/drivers/video/console/font_acorn_8x8.c
|
||||
FONTC = $(srctree)/lib/fonts/font_acorn_8x8.c
|
||||
|
||||
# string library code (-Os is enforced to keep it much smaller)
|
||||
OBJS += string.o
|
||||
|
@ -1060,7 +1060,9 @@ struct platform_device *__init at32_add_device_usart(unsigned int id)
|
||||
|
||||
void __init at32_setup_serial_console(unsigned int usart_id)
|
||||
{
|
||||
#ifdef CONFIG_SERIAL_ATMEL
|
||||
atmel_default_console_device = at32_usarts[usart_id];
|
||||
#endif
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
|
@ -55,3 +55,4 @@ generic-y += types.h
|
||||
generic-y += ucontext.h
|
||||
generic-y += user.h
|
||||
generic-y += vga.h
|
||||
generic-y += xor.h
|
||||
|
@ -637,40 +637,10 @@ endchoice
|
||||
|
||||
endmenu
|
||||
|
||||
source "drivers/base/Kconfig"
|
||||
|
||||
# standard linux drivers
|
||||
source "drivers/mtd/Kconfig"
|
||||
|
||||
source "drivers/parport/Kconfig"
|
||||
|
||||
source "drivers/pnp/Kconfig"
|
||||
|
||||
source "drivers/block/Kconfig"
|
||||
|
||||
source "drivers/ide/Kconfig"
|
||||
|
||||
source "drivers/net/Kconfig"
|
||||
|
||||
source "drivers/i2c/Kconfig"
|
||||
|
||||
source "drivers/rtc/Kconfig"
|
||||
|
||||
#
|
||||
# input before char - char/joystick depends on it. As does USB.
|
||||
#
|
||||
source "drivers/input/Kconfig"
|
||||
|
||||
source "drivers/char/Kconfig"
|
||||
source "drivers/Kconfig"
|
||||
|
||||
source "fs/Kconfig"
|
||||
|
||||
source "drivers/usb/Kconfig"
|
||||
|
||||
source "drivers/uwb/Kconfig"
|
||||
|
||||
source "drivers/staging/Kconfig"
|
||||
|
||||
source "arch/cris/Kconfig.debug"
|
||||
|
||||
source "security/Kconfig"
|
||||
|
@ -230,46 +230,6 @@ struct register_image
|
||||
unsigned int usp; /* 0x66 User mode stack pointer */
|
||||
} registers;
|
||||
|
||||
/************** Prototypes for local library functions ***********************/
|
||||
|
||||
/* Copy of strcpy from libc. */
|
||||
static char *gdb_cris_strcpy (char *s1, const char *s2);
|
||||
|
||||
/* Copy of strlen from libc. */
|
||||
static int gdb_cris_strlen (const char *s);
|
||||
|
||||
/* Copy of memchr from libc. */
|
||||
static void *gdb_cris_memchr (const void *s, int c, int n);
|
||||
|
||||
/* Copy of strtol from libc. Does only support base 16. */
|
||||
static int gdb_cris_strtol (const char *s, char **endptr, int base);
|
||||
|
||||
/********************** Prototypes for local functions. **********************/
|
||||
/* Copy the content of a register image into another. The size n is
|
||||
the size of the register image. Due to struct assignment generation of
|
||||
memcpy in libc. */
|
||||
static void copy_registers (registers *dptr, registers *sptr, int n);
|
||||
|
||||
/* Copy the stored registers from the stack. Put the register contents
|
||||
of thread thread_id in the struct reg. */
|
||||
static void copy_registers_from_stack (int thread_id, registers *reg);
|
||||
|
||||
/* Copy the registers to the stack. Put the register contents of thread
|
||||
thread_id from struct reg to the stack. */
|
||||
static void copy_registers_to_stack (int thread_id, registers *reg);
|
||||
|
||||
/* Write a value to a specified register regno in the register image
|
||||
of the current thread. */
|
||||
static int write_register (int regno, char *val);
|
||||
|
||||
/* Write a value to a specified register in the stack of a thread other
|
||||
than the current thread. */
|
||||
static int write_stack_register(int thread_id, int regno, char *valptr);
|
||||
|
||||
/* Read a value from a specified register in the register image. Returns the
|
||||
status of the read operation. The register value is returned in valptr. */
|
||||
static int read_register (char regno, unsigned int *valptr);
|
||||
|
||||
/* Serial port, reads one character. ETRAX 100 specific. from debugport.c */
|
||||
int getDebugChar (void);
|
||||
|
||||
@ -278,42 +238,6 @@ void putDebugChar (int val);
|
||||
|
||||
void enableDebugIRQ (void);
|
||||
|
||||
/* Returns the integer equivalent of a hexadecimal character. */
|
||||
static int hex (char ch);
|
||||
|
||||
/* Convert the memory, pointed to by mem into hexadecimal representation.
|
||||
Put the result in buf, and return a pointer to the last character
|
||||
in buf (null). */
|
||||
static char *mem2hex (char *buf, unsigned char *mem, int count);
|
||||
|
||||
/* Convert the array, in hexadecimal representation, pointed to by buf into
|
||||
binary representation. Put the result in mem, and return a pointer to
|
||||
the character after the last byte written. */
|
||||
static unsigned char *hex2mem (unsigned char *mem, char *buf, int count);
|
||||
|
||||
/* Put the content of the array, in binary representation, pointed to by buf
|
||||
into memory pointed to by mem, and return a pointer to
|
||||
the character after the last byte written. */
|
||||
static unsigned char *bin2mem (unsigned char *mem, unsigned char *buf, int count);
|
||||
|
||||
/* Await the sequence $<data>#<checksum> and store <data> in the array buffer
|
||||
returned. */
|
||||
static void getpacket (char *buffer);
|
||||
|
||||
/* Send $<data>#<checksum> from the <data> in the array buffer. */
|
||||
static void putpacket (char *buffer);
|
||||
|
||||
/* Build and send a response packet in order to inform the host the
|
||||
stub is stopped. */
|
||||
static void stub_is_stopped (int sigval);
|
||||
|
||||
/* All expected commands are sent from remote.c. Send a response according
|
||||
to the description in remote.c. */
|
||||
static void handle_exception (int sigval);
|
||||
|
||||
/* Performs a complete re-start from scratch. ETRAX specific. */
|
||||
static void kill_restart (void);
|
||||
|
||||
/******************** Prototypes for global functions. ***********************/
|
||||
|
||||
/* The string str is prepended with the GDB printout token and sent. */
|
||||
@ -336,10 +260,6 @@ extern unsigned char executing_task;
|
||||
/* The number of characters used for a 64 bit thread identifier. */
|
||||
#define HEXCHARS_IN_THREAD_ID 16
|
||||
|
||||
/* Avoid warning as the internal_stack is not used in the C-code. */
|
||||
#define USEDVAR(name) { if (name) { ; } }
|
||||
#define USEDFUN(name) { void (*pf)(void) = (void *)name; USEDVAR(pf) }
|
||||
|
||||
/********************************** Packet I/O ******************************/
|
||||
/* BUFMAX defines the maximum number of characters in
|
||||
inbound/outbound buffers */
|
||||
@ -405,7 +325,7 @@ static int register_size[] =
|
||||
|
||||
/* Contains the register image of the executing thread in the assembler
|
||||
part of the code in order to avoid horrible addressing modes. */
|
||||
static registers reg;
|
||||
registers cris_reg;
|
||||
|
||||
/* FIXME: Should this be used? Delete otherwise. */
|
||||
/* Contains the assumed consistency state of the register image. Uses the
|
||||
@ -413,7 +333,7 @@ static registers reg;
|
||||
static int consistency_status = SUCCESS;
|
||||
|
||||
/********************************** Handle exceptions ************************/
|
||||
/* The variable reg contains the register image associated with the
|
||||
/* The variable cris_reg contains the register image associated with the
|
||||
current_thread_c variable. It is a complete register image created at
|
||||
entry. The reg_g contains a register image of a task where the general
|
||||
registers are taken from the stack and all special registers are taken
|
||||
@ -421,18 +341,10 @@ static int consistency_status = SUCCESS;
|
||||
in order to provide access mainly for 'g', 'G' and 'P'.
|
||||
*/
|
||||
|
||||
/* Need two task id pointers in order to handle Hct and Hgt commands. */
|
||||
static int current_thread_c = 0;
|
||||
static int current_thread_g = 0;
|
||||
|
||||
/* Need two register images in order to handle Hct and Hgt commands. The
|
||||
variable reg_g is in addition to reg above. */
|
||||
static registers reg_g;
|
||||
|
||||
/********************************** Breakpoint *******************************/
|
||||
/* Use an internal stack in the breakpoint and interrupt response routines */
|
||||
#define INTERNAL_STACK_SIZE 1024
|
||||
static char internal_stack[INTERNAL_STACK_SIZE];
|
||||
char internal_stack[INTERNAL_STACK_SIZE];
|
||||
|
||||
/* Due to the breakpoint return pointer, a state variable is needed to keep
|
||||
track of whether it is a static (compiled) or dynamic (gdb-invoked)
|
||||
@ -500,164 +412,6 @@ gdb_cris_strtol (const char *s, char **endptr, int base)
|
||||
return x;
|
||||
}
|
||||
|
||||
/********************************* Register image ****************************/
|
||||
/* Copy the content of a register image into another. The size n is
|
||||
the size of the register image. Due to struct assignment generation of
|
||||
memcpy in libc. */
|
||||
static void
|
||||
copy_registers (registers *dptr, registers *sptr, int n)
|
||||
{
|
||||
unsigned char *dreg;
|
||||
unsigned char *sreg;
|
||||
|
||||
for (dreg = (unsigned char*)dptr, sreg = (unsigned char*)sptr; n > 0; n--)
|
||||
*dreg++ = *sreg++;
|
||||
}
|
||||
|
||||
#ifdef PROCESS_SUPPORT
|
||||
/* Copy the stored registers from the stack. Put the register contents
|
||||
of thread thread_id in the struct reg. */
|
||||
static void
|
||||
copy_registers_from_stack (int thread_id, registers *regptr)
|
||||
{
|
||||
int j;
|
||||
stack_registers *s = (stack_registers *)stack_list[thread_id];
|
||||
unsigned int *d = (unsigned int *)regptr;
|
||||
|
||||
for (j = 13; j >= 0; j--)
|
||||
*d++ = s->r[j];
|
||||
regptr->sp = (unsigned int)stack_list[thread_id];
|
||||
regptr->pc = s->pc;
|
||||
regptr->dccr = s->dccr;
|
||||
regptr->srp = s->srp;
|
||||
}
|
||||
|
||||
/* Copy the registers to the stack. Put the register contents of thread
|
||||
thread_id from struct reg to the stack. */
|
||||
static void
|
||||
copy_registers_to_stack (int thread_id, registers *regptr)
|
||||
{
|
||||
int i;
|
||||
stack_registers *d = (stack_registers *)stack_list[thread_id];
|
||||
unsigned int *s = (unsigned int *)regptr;
|
||||
|
||||
for (i = 0; i < 14; i++) {
|
||||
d->r[i] = *s++;
|
||||
}
|
||||
d->pc = regptr->pc;
|
||||
d->dccr = regptr->dccr;
|
||||
d->srp = regptr->srp;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Write a value to a specified register in the register image of the current
|
||||
thread. Returns status code SUCCESS, E02 or E05. */
|
||||
static int
|
||||
write_register (int regno, char *val)
|
||||
{
|
||||
int status = SUCCESS;
|
||||
registers *current_reg = ®
|
||||
|
||||
if (regno >= R0 && regno <= PC) {
|
||||
/* 32-bit register with simple offset. */
|
||||
hex2mem ((unsigned char *)current_reg + regno * sizeof(unsigned int),
|
||||
val, sizeof(unsigned int));
|
||||
}
|
||||
else if (regno == P0 || regno == VR || regno == P4 || regno == P8) {
|
||||
/* Do not support read-only registers. */
|
||||
status = E02;
|
||||
}
|
||||
else if (regno == CCR) {
|
||||
/* 16 bit register with complex offset. (P4 is read-only, P6 is not implemented,
|
||||
and P7 (MOF) is 32 bits in ETRAX 100LX. */
|
||||
hex2mem ((unsigned char *)&(current_reg->ccr) + (regno-CCR) * sizeof(unsigned short),
|
||||
val, sizeof(unsigned short));
|
||||
}
|
||||
else if (regno >= MOF && regno <= USP) {
|
||||
/* 32 bit register with complex offset. (P8 has been taken care of.) */
|
||||
hex2mem ((unsigned char *)&(current_reg->ibr) + (regno-IBR) * sizeof(unsigned int),
|
||||
val, sizeof(unsigned int));
|
||||
}
|
||||
else {
|
||||
/* Do not support nonexisting or unimplemented registers (P2, P3, and P6). */
|
||||
status = E05;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
#ifdef PROCESS_SUPPORT
|
||||
/* Write a value to a specified register in the stack of a thread other
|
||||
than the current thread. Returns status code SUCCESS or E07. */
|
||||
static int
|
||||
write_stack_register (int thread_id, int regno, char *valptr)
|
||||
{
|
||||
int status = SUCCESS;
|
||||
stack_registers *d = (stack_registers *)stack_list[thread_id];
|
||||
unsigned int val;
|
||||
|
||||
hex2mem ((unsigned char *)&val, valptr, sizeof(unsigned int));
|
||||
if (regno >= R0 && regno < SP) {
|
||||
d->r[regno] = val;
|
||||
}
|
||||
else if (regno == SP) {
|
||||
stack_list[thread_id] = val;
|
||||
}
|
||||
else if (regno == PC) {
|
||||
d->pc = val;
|
||||
}
|
||||
else if (regno == SRP) {
|
||||
d->srp = val;
|
||||
}
|
||||
else if (regno == DCCR) {
|
||||
d->dccr = val;
|
||||
}
|
||||
else {
|
||||
/* Do not support registers in the current thread. */
|
||||
status = E07;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Read a value from a specified register in the register image. Returns the
|
||||
value in the register or -1 for non-implemented registers.
|
||||
Should check consistency_status after a call which may be E05 after changes
|
||||
in the implementation. */
|
||||
static int
|
||||
read_register (char regno, unsigned int *valptr)
|
||||
{
|
||||
registers *current_reg = ®
|
||||
|
||||
if (regno >= R0 && regno <= PC) {
|
||||
/* 32-bit register with simple offset. */
|
||||
*valptr = *(unsigned int *)((char *)current_reg + regno * sizeof(unsigned int));
|
||||
return SUCCESS;
|
||||
}
|
||||
else if (regno == P0 || regno == VR) {
|
||||
/* 8 bit register with complex offset. */
|
||||
*valptr = (unsigned int)(*(unsigned char *)
|
||||
((char *)&(current_reg->p0) + (regno-P0) * sizeof(char)));
|
||||
return SUCCESS;
|
||||
}
|
||||
else if (regno == P4 || regno == CCR) {
|
||||
/* 16 bit register with complex offset. */
|
||||
*valptr = (unsigned int)(*(unsigned short *)
|
||||
((char *)&(current_reg->p4) + (regno-P4) * sizeof(unsigned short)));
|
||||
return SUCCESS;
|
||||
}
|
||||
else if (regno >= MOF && regno <= USP) {
|
||||
/* 32 bit register with complex offset. */
|
||||
*valptr = *(unsigned int *)((char *)&(current_reg->p8)
|
||||
+ (regno-P8) * sizeof(unsigned int));
|
||||
return SUCCESS;
|
||||
}
|
||||
else {
|
||||
/* Do not support nonexisting or unimplemented registers (P2, P3, and P6). */
|
||||
consistency_status = E05;
|
||||
return E05;
|
||||
}
|
||||
}
|
||||
|
||||
/********************************** Packet I/O ******************************/
|
||||
/* Returns the integer equivalent of a hexadecimal character. */
|
||||
static int
|
||||
@ -676,8 +430,6 @@ hex (char ch)
|
||||
Put the result in buf, and return a pointer to the last character
|
||||
in buf (null). */
|
||||
|
||||
static int do_printk = 0;
|
||||
|
||||
static char *
|
||||
mem2hex(char *buf, unsigned char *mem, int count)
|
||||
{
|
||||
@ -761,7 +513,7 @@ getpacket (char *buffer)
|
||||
xmitcsum = -1;
|
||||
count = 0;
|
||||
/* Read until a # or the end of the buffer is reached */
|
||||
while (count < BUFMAX) {
|
||||
while (count < BUFMAX - 1) {
|
||||
ch = getDebugChar ();
|
||||
if (ch == '#')
|
||||
break;
|
||||
@ -845,6 +597,81 @@ putDebugString (const unsigned char *str, int length)
|
||||
putpacket(remcomOutBuffer);
|
||||
}
|
||||
|
||||
/********************************* Register image ****************************/
|
||||
/* Write a value to a specified register in the register image of the current
|
||||
thread. Returns status code SUCCESS, E02 or E05. */
|
||||
static int
|
||||
write_register (int regno, char *val)
|
||||
{
|
||||
int status = SUCCESS;
|
||||
registers *current_reg = &cris_reg;
|
||||
|
||||
if (regno >= R0 && regno <= PC) {
|
||||
/* 32-bit register with simple offset. */
|
||||
hex2mem ((unsigned char *)current_reg + regno * sizeof(unsigned int),
|
||||
val, sizeof(unsigned int));
|
||||
}
|
||||
else if (regno == P0 || regno == VR || regno == P4 || regno == P8) {
|
||||
/* Do not support read-only registers. */
|
||||
status = E02;
|
||||
}
|
||||
else if (regno == CCR) {
|
||||
/* 16 bit register with complex offset. (P4 is read-only, P6 is not implemented,
|
||||
and P7 (MOF) is 32 bits in ETRAX 100LX. */
|
||||
hex2mem ((unsigned char *)&(current_reg->ccr) + (regno-CCR) * sizeof(unsigned short),
|
||||
val, sizeof(unsigned short));
|
||||
}
|
||||
else if (regno >= MOF && regno <= USP) {
|
||||
/* 32 bit register with complex offset. (P8 has been taken care of.) */
|
||||
hex2mem ((unsigned char *)&(current_reg->ibr) + (regno-IBR) * sizeof(unsigned int),
|
||||
val, sizeof(unsigned int));
|
||||
}
|
||||
else {
|
||||
/* Do not support nonexisting or unimplemented registers (P2, P3, and P6). */
|
||||
status = E05;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
/* Read a value from a specified register in the register image. Returns the
|
||||
value in the register or -1 for non-implemented registers.
|
||||
Should check consistency_status after a call which may be E05 after changes
|
||||
in the implementation. */
|
||||
static int
|
||||
read_register (char regno, unsigned int *valptr)
|
||||
{
|
||||
registers *current_reg = &cris_reg;
|
||||
|
||||
if (regno >= R0 && regno <= PC) {
|
||||
/* 32-bit register with simple offset. */
|
||||
*valptr = *(unsigned int *)((char *)current_reg + regno * sizeof(unsigned int));
|
||||
return SUCCESS;
|
||||
}
|
||||
else if (regno == P0 || regno == VR) {
|
||||
/* 8 bit register with complex offset. */
|
||||
*valptr = (unsigned int)(*(unsigned char *)
|
||||
((char *)&(current_reg->p0) + (regno-P0) * sizeof(char)));
|
||||
return SUCCESS;
|
||||
}
|
||||
else if (regno == P4 || regno == CCR) {
|
||||
/* 16 bit register with complex offset. */
|
||||
*valptr = (unsigned int)(*(unsigned short *)
|
||||
((char *)&(current_reg->p4) + (regno-P4) * sizeof(unsigned short)));
|
||||
return SUCCESS;
|
||||
}
|
||||
else if (regno >= MOF && regno <= USP) {
|
||||
/* 32 bit register with complex offset. */
|
||||
*valptr = *(unsigned int *)((char *)&(current_reg->p8)
|
||||
+ (regno-P8) * sizeof(unsigned int));
|
||||
return SUCCESS;
|
||||
}
|
||||
else {
|
||||
/* Do not support nonexisting or unimplemented registers (P2, P3, and P6). */
|
||||
consistency_status = E05;
|
||||
return E05;
|
||||
}
|
||||
}
|
||||
|
||||
/********************************** Handle exceptions ************************/
|
||||
/* Build and send a response packet in order to inform the host the
|
||||
stub is stopped. TAAn...:r...;n...:r...;n...:r...;
|
||||
@ -891,26 +718,6 @@ stub_is_stopped(int sigval)
|
||||
|
||||
}
|
||||
|
||||
#ifdef PROCESS_SUPPORT
|
||||
/* Store the registers of the executing thread. Assume that both step,
|
||||
continue, and register content requests are with respect to this
|
||||
thread. The executing task is from the operating system scheduler. */
|
||||
|
||||
current_thread_c = executing_task;
|
||||
current_thread_g = executing_task;
|
||||
|
||||
/* A struct assignment translates into a libc memcpy call. Avoid
|
||||
all libc functions in order to prevent recursive break points. */
|
||||
copy_registers (®_g, ®, sizeof(registers));
|
||||
|
||||
/* Store thread:r...; with the executing task TID. */
|
||||
gdb_cris_strcpy (&remcomOutBuffer[pos], "thread:");
|
||||
pos += gdb_cris_strlen ("thread:");
|
||||
remcomOutBuffer[pos++] = hex_asc_hi(executing_task);
|
||||
remcomOutBuffer[pos++] = hex_asc_lo(executing_task);
|
||||
gdb_cris_strcpy (&remcomOutBuffer[pos], ";");
|
||||
#endif
|
||||
|
||||
/* null-terminate and send it off */
|
||||
|
||||
*ptr = 0;
|
||||
@ -918,16 +725,18 @@ stub_is_stopped(int sigval)
|
||||
putpacket (remcomOutBuffer);
|
||||
}
|
||||
|
||||
/* Performs a complete re-start from scratch. */
|
||||
static void
|
||||
kill_restart (void)
|
||||
{
|
||||
machine_restart("");
|
||||
}
|
||||
|
||||
/* All expected commands are sent from remote.c. Send a response according
|
||||
to the description in remote.c. */
|
||||
static void
|
||||
void
|
||||
handle_exception (int sigval)
|
||||
{
|
||||
/* Avoid warning of not used. */
|
||||
|
||||
USEDFUN(handle_exception);
|
||||
USEDVAR(internal_stack[0]);
|
||||
|
||||
/* Send response. */
|
||||
|
||||
stub_is_stopped (sigval);
|
||||
@ -943,19 +752,7 @@ handle_exception (int sigval)
|
||||
in a register are in the same order the machine uses.
|
||||
Failure: void. */
|
||||
|
||||
{
|
||||
#ifdef PROCESS_SUPPORT
|
||||
/* Use the special register content in the executing thread. */
|
||||
copy_registers (®_g, ®, sizeof(registers));
|
||||
/* Replace the content available on the stack. */
|
||||
if (current_thread_g != executing_task) {
|
||||
copy_registers_from_stack (current_thread_g, ®_g);
|
||||
}
|
||||
mem2hex ((unsigned char *)remcomOutBuffer, (unsigned char *)®_g, sizeof(registers));
|
||||
#else
|
||||
mem2hex(remcomOutBuffer, (char *)®, sizeof(registers));
|
||||
#endif
|
||||
}
|
||||
mem2hex(remcomOutBuffer, (char *)&cris_reg, sizeof(registers));
|
||||
break;
|
||||
|
||||
case 'G':
|
||||
@ -963,17 +760,7 @@ handle_exception (int sigval)
|
||||
Each byte of register data is described by two hex digits.
|
||||
Success: OK
|
||||
Failure: void. */
|
||||
#ifdef PROCESS_SUPPORT
|
||||
hex2mem ((unsigned char *)®_g, &remcomInBuffer[1], sizeof(registers));
|
||||
if (current_thread_g == executing_task) {
|
||||
copy_registers (®, ®_g, sizeof(registers));
|
||||
}
|
||||
else {
|
||||
copy_registers_to_stack(current_thread_g, ®_g);
|
||||
}
|
||||
#else
|
||||
hex2mem((char *)®, &remcomInBuffer[1], sizeof(registers));
|
||||
#endif
|
||||
hex2mem((char *)&cris_reg, &remcomInBuffer[1], sizeof(registers));
|
||||
gdb_cris_strcpy (remcomOutBuffer, "OK");
|
||||
break;
|
||||
|
||||
@ -989,12 +776,7 @@ handle_exception (int sigval)
|
||||
char *suffix;
|
||||
int regno = gdb_cris_strtol (&remcomInBuffer[1], &suffix, 16);
|
||||
int status;
|
||||
#ifdef PROCESS_SUPPORT
|
||||
if (current_thread_g != executing_task)
|
||||
status = write_stack_register (current_thread_g, regno, suffix+1);
|
||||
else
|
||||
#endif
|
||||
status = write_register (regno, suffix+1);
|
||||
status = write_register (regno, suffix+1);
|
||||
|
||||
switch (status) {
|
||||
case E02:
|
||||
@ -1073,7 +855,7 @@ handle_exception (int sigval)
|
||||
Success: return to the executing thread.
|
||||
Failure: will never know. */
|
||||
if (remcomInBuffer[1] != '\0') {
|
||||
reg.pc = gdb_cris_strtol (&remcomInBuffer[1], 0, 16);
|
||||
cris_reg.pc = gdb_cris_strtol (&remcomInBuffer[1], 0, 16);
|
||||
}
|
||||
enableDebugIRQ();
|
||||
return;
|
||||
@ -1129,119 +911,6 @@ handle_exception (int sigval)
|
||||
Not supported: E04 */
|
||||
gdb_cris_strcpy (remcomOutBuffer, error_message[E04]);
|
||||
break;
|
||||
#ifdef PROCESS_SUPPORT
|
||||
|
||||
case 'T':
|
||||
/* Thread alive. TXX
|
||||
Is thread XX alive?
|
||||
Success: OK, thread XX is alive.
|
||||
Failure: E03, thread XX is dead. */
|
||||
{
|
||||
int thread_id = (int)gdb_cris_strtol (&remcomInBuffer[1], 0, 16);
|
||||
/* Cannot tell whether it is alive or not. */
|
||||
if (thread_id >= 0 && thread_id < number_of_tasks)
|
||||
gdb_cris_strcpy (remcomOutBuffer, "OK");
|
||||
}
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
/* Set thread for subsequent operations: Hct
|
||||
c = 'c' for thread used in step and continue;
|
||||
t can be -1 for all threads.
|
||||
c = 'g' for thread used in other operations.
|
||||
t = 0 means pick any thread.
|
||||
Success: OK
|
||||
Failure: E01 */
|
||||
{
|
||||
int thread_id = gdb_cris_strtol (&remcomInBuffer[2], 0, 16);
|
||||
if (remcomInBuffer[1] == 'c') {
|
||||
/* c = 'c' for thread used in step and continue */
|
||||
/* Do not change current_thread_c here. It would create a mess in
|
||||
the scheduler. */
|
||||
gdb_cris_strcpy (remcomOutBuffer, "OK");
|
||||
}
|
||||
else if (remcomInBuffer[1] == 'g') {
|
||||
/* c = 'g' for thread used in other operations.
|
||||
t = 0 means pick any thread. Impossible since the scheduler does
|
||||
not allow that. */
|
||||
if (thread_id >= 0 && thread_id < number_of_tasks) {
|
||||
current_thread_g = thread_id;
|
||||
gdb_cris_strcpy (remcomOutBuffer, "OK");
|
||||
}
|
||||
else {
|
||||
/* Not expected - send an error message. */
|
||||
gdb_cris_strcpy (remcomOutBuffer, error_message[E01]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* Not expected - send an error message. */
|
||||
gdb_cris_strcpy (remcomOutBuffer, error_message[E01]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'q':
|
||||
case 'Q':
|
||||
/* Query of general interest. qXXXX
|
||||
Set general value XXXX. QXXXX=yyyy */
|
||||
{
|
||||
int pos;
|
||||
int nextpos;
|
||||
int thread_id;
|
||||
|
||||
switch (remcomInBuffer[1]) {
|
||||
case 'C':
|
||||
/* Identify the remote current thread. */
|
||||
gdb_cris_strcpy (&remcomOutBuffer[0], "QC");
|
||||
remcomOutBuffer[2] = hex_asc_hi(current_thread_c);
|
||||
remcomOutBuffer[3] = hex_asc_lo(current_thread_c);
|
||||
remcomOutBuffer[4] = '\0';
|
||||
break;
|
||||
case 'L':
|
||||
gdb_cris_strcpy (&remcomOutBuffer[0], "QM");
|
||||
/* Reply with number of threads. */
|
||||
if (os_is_started()) {
|
||||
remcomOutBuffer[2] = hex_asc_hi(number_of_tasks);
|
||||
remcomOutBuffer[3] = hex_asc_lo(number_of_tasks);
|
||||
}
|
||||
else {
|
||||
remcomOutBuffer[2] = hex_asc_hi(0);
|
||||
remcomOutBuffer[3] = hex_asc_lo(1);
|
||||
}
|
||||
/* Done with the reply. */
|
||||
remcomOutBuffer[4] = hex_asc_lo(1);
|
||||
pos = 5;
|
||||
/* Expects the argument thread id. */
|
||||
for (; pos < (5 + HEXCHARS_IN_THREAD_ID); pos++)
|
||||
remcomOutBuffer[pos] = remcomInBuffer[pos];
|
||||
/* Reply with the thread identifiers. */
|
||||
if (os_is_started()) {
|
||||
/* Store the thread identifiers of all tasks. */
|
||||
for (thread_id = 0; thread_id < number_of_tasks; thread_id++) {
|
||||
nextpos = pos + HEXCHARS_IN_THREAD_ID - 1;
|
||||
for (; pos < nextpos; pos ++)
|
||||
remcomOutBuffer[pos] = hex_asc_lo(0);
|
||||
remcomOutBuffer[pos++] = hex_asc_lo(thread_id);
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* Store the thread identifier of the boot task. */
|
||||
nextpos = pos + HEXCHARS_IN_THREAD_ID - 1;
|
||||
for (; pos < nextpos; pos ++)
|
||||
remcomOutBuffer[pos] = hex_asc_lo(0);
|
||||
remcomOutBuffer[pos++] = hex_asc_lo(current_thread_c);
|
||||
}
|
||||
remcomOutBuffer[pos] = '\0';
|
||||
break;
|
||||
default:
|
||||
/* Not supported: "" */
|
||||
/* Request information about section offsets: qOffsets. */
|
||||
remcomOutBuffer[0] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif /* PROCESS_SUPPORT */
|
||||
|
||||
default:
|
||||
/* The stub should ignore other request and send an empty
|
||||
@ -1254,13 +923,6 @@ handle_exception (int sigval)
|
||||
}
|
||||
}
|
||||
|
||||
/* Performs a complete re-start from scratch. */
|
||||
static void
|
||||
kill_restart ()
|
||||
{
|
||||
machine_restart("");
|
||||
}
|
||||
|
||||
/********************************** Breakpoint *******************************/
|
||||
/* The hook for both a static (compiled) and a dynamic breakpoint set by GDB.
|
||||
An internal stack is used by the stub. The register image of the caller is
|
||||
@ -1270,93 +932,93 @@ kill_restart ()
|
||||
|
||||
void kgdb_handle_breakpoint(void);
|
||||
|
||||
asm ("
|
||||
.global kgdb_handle_breakpoint
|
||||
kgdb_handle_breakpoint:
|
||||
;;
|
||||
;; Response to the break-instruction
|
||||
;;
|
||||
;; Create a register image of the caller
|
||||
;;
|
||||
move $dccr,[reg+0x5E] ; Save the flags in DCCR before disable interrupts
|
||||
di ; Disable interrupts
|
||||
move.d $r0,[reg] ; Save R0
|
||||
move.d $r1,[reg+0x04] ; Save R1
|
||||
move.d $r2,[reg+0x08] ; Save R2
|
||||
move.d $r3,[reg+0x0C] ; Save R3
|
||||
move.d $r4,[reg+0x10] ; Save R4
|
||||
move.d $r5,[reg+0x14] ; Save R5
|
||||
move.d $r6,[reg+0x18] ; Save R6
|
||||
move.d $r7,[reg+0x1C] ; Save R7
|
||||
move.d $r8,[reg+0x20] ; Save R8
|
||||
move.d $r9,[reg+0x24] ; Save R9
|
||||
move.d $r10,[reg+0x28] ; Save R10
|
||||
move.d $r11,[reg+0x2C] ; Save R11
|
||||
move.d $r12,[reg+0x30] ; Save R12
|
||||
move.d $r13,[reg+0x34] ; Save R13
|
||||
move.d $sp,[reg+0x38] ; Save SP (R14)
|
||||
;; Due to the old assembler-versions BRP might not be recognized
|
||||
.word 0xE670 ; move brp,$r0
|
||||
subq 2,$r0 ; Set to address of previous instruction.
|
||||
move.d $r0,[reg+0x3c] ; Save the address in PC (R15)
|
||||
clear.b [reg+0x40] ; Clear P0
|
||||
move $vr,[reg+0x41] ; Save special register P1
|
||||
clear.w [reg+0x42] ; Clear P4
|
||||
move $ccr,[reg+0x44] ; Save special register CCR
|
||||
move $mof,[reg+0x46] ; P7
|
||||
clear.d [reg+0x4A] ; Clear P8
|
||||
move $ibr,[reg+0x4E] ; P9,
|
||||
move $irp,[reg+0x52] ; P10,
|
||||
move $srp,[reg+0x56] ; P11,
|
||||
move $dtp0,[reg+0x5A] ; P12, register BAR, assembler might not know BAR
|
||||
; P13, register DCCR already saved
|
||||
;; Due to the old assembler-versions BRP might not be recognized
|
||||
.word 0xE670 ; move brp,r0
|
||||
;; Static (compiled) breakpoints must return to the next instruction in order
|
||||
;; to avoid infinite loops. Dynamic (gdb-invoked) must restore the instruction
|
||||
;; in order to execute it when execution is continued.
|
||||
test.b [is_dyn_brkp] ; Is this a dynamic breakpoint?
|
||||
beq is_static ; No, a static breakpoint
|
||||
nop
|
||||
subq 2,$r0 ; rerun the instruction the break replaced
|
||||
is_static:
|
||||
moveq 1,$r1
|
||||
move.b $r1,[is_dyn_brkp] ; Set the state variable to dynamic breakpoint
|
||||
move.d $r0,[reg+0x62] ; Save the return address in BRP
|
||||
move $usp,[reg+0x66] ; USP
|
||||
;;
|
||||
;; Handle the communication
|
||||
;;
|
||||
move.d internal_stack+1020,$sp ; Use the internal stack which grows upward
|
||||
moveq 5,$r10 ; SIGTRAP
|
||||
jsr handle_exception ; Interactive routine
|
||||
;;
|
||||
;; Return to the caller
|
||||
;;
|
||||
move.d [reg],$r0 ; Restore R0
|
||||
move.d [reg+0x04],$r1 ; Restore R1
|
||||
move.d [reg+0x08],$r2 ; Restore R2
|
||||
move.d [reg+0x0C],$r3 ; Restore R3
|
||||
move.d [reg+0x10],$r4 ; Restore R4
|
||||
move.d [reg+0x14],$r5 ; Restore R5
|
||||
move.d [reg+0x18],$r6 ; Restore R6
|
||||
move.d [reg+0x1C],$r7 ; Restore R7
|
||||
move.d [reg+0x20],$r8 ; Restore R8
|
||||
move.d [reg+0x24],$r9 ; Restore R9
|
||||
move.d [reg+0x28],$r10 ; Restore R10
|
||||
move.d [reg+0x2C],$r11 ; Restore R11
|
||||
move.d [reg+0x30],$r12 ; Restore R12
|
||||
move.d [reg+0x34],$r13 ; Restore R13
|
||||
;;
|
||||
;; FIXME: Which registers should be restored?
|
||||
;;
|
||||
move.d [reg+0x38],$sp ; Restore SP (R14)
|
||||
move [reg+0x56],$srp ; Restore the subroutine return pointer.
|
||||
move [reg+0x5E],$dccr ; Restore DCCR
|
||||
move [reg+0x66],$usp ; Restore USP
|
||||
jump [reg+0x62] ; A jump to the content in register BRP works.
|
||||
nop ;
|
||||
");
|
||||
asm ("\n"
|
||||
" .global kgdb_handle_breakpoint\n"
|
||||
"kgdb_handle_breakpoint:\n"
|
||||
";;\n"
|
||||
";; Response to the break-instruction\n"
|
||||
";;\n"
|
||||
";; Create a register image of the caller\n"
|
||||
";;\n"
|
||||
" move $dccr,[cris_reg+0x5E] ; Save the flags in DCCR before disable interrupts\n"
|
||||
" di ; Disable interrupts\n"
|
||||
" move.d $r0,[cris_reg] ; Save R0\n"
|
||||
" move.d $r1,[cris_reg+0x04] ; Save R1\n"
|
||||
" move.d $r2,[cris_reg+0x08] ; Save R2\n"
|
||||
" move.d $r3,[cris_reg+0x0C] ; Save R3\n"
|
||||
" move.d $r4,[cris_reg+0x10] ; Save R4\n"
|
||||
" move.d $r5,[cris_reg+0x14] ; Save R5\n"
|
||||
" move.d $r6,[cris_reg+0x18] ; Save R6\n"
|
||||
" move.d $r7,[cris_reg+0x1C] ; Save R7\n"
|
||||
" move.d $r8,[cris_reg+0x20] ; Save R8\n"
|
||||
" move.d $r9,[cris_reg+0x24] ; Save R9\n"
|
||||
" move.d $r10,[cris_reg+0x28] ; Save R10\n"
|
||||
" move.d $r11,[cris_reg+0x2C] ; Save R11\n"
|
||||
" move.d $r12,[cris_reg+0x30] ; Save R12\n"
|
||||
" move.d $r13,[cris_reg+0x34] ; Save R13\n"
|
||||
" move.d $sp,[cris_reg+0x38] ; Save SP (R14)\n"
|
||||
";; Due to the old assembler-versions BRP might not be recognized\n"
|
||||
" .word 0xE670 ; move brp,$r0\n"
|
||||
" subq 2,$r0 ; Set to address of previous instruction.\n"
|
||||
" move.d $r0,[cris_reg+0x3c] ; Save the address in PC (R15)\n"
|
||||
" clear.b [cris_reg+0x40] ; Clear P0\n"
|
||||
" move $vr,[cris_reg+0x41] ; Save special register P1\n"
|
||||
" clear.w [cris_reg+0x42] ; Clear P4\n"
|
||||
" move $ccr,[cris_reg+0x44] ; Save special register CCR\n"
|
||||
" move $mof,[cris_reg+0x46] ; P7\n"
|
||||
" clear.d [cris_reg+0x4A] ; Clear P8\n"
|
||||
" move $ibr,[cris_reg+0x4E] ; P9,\n"
|
||||
" move $irp,[cris_reg+0x52] ; P10,\n"
|
||||
" move $srp,[cris_reg+0x56] ; P11,\n"
|
||||
" move $dtp0,[cris_reg+0x5A] ; P12, register BAR, assembler might not know BAR\n"
|
||||
" ; P13, register DCCR already saved\n"
|
||||
";; Due to the old assembler-versions BRP might not be recognized\n"
|
||||
" .word 0xE670 ; move brp,r0\n"
|
||||
";; Static (compiled) breakpoints must return to the next instruction in order\n"
|
||||
";; to avoid infinite loops. Dynamic (gdb-invoked) must restore the instruction\n"
|
||||
";; in order to execute it when execution is continued.\n"
|
||||
" test.b [is_dyn_brkp] ; Is this a dynamic breakpoint?\n"
|
||||
" beq is_static ; No, a static breakpoint\n"
|
||||
" nop\n"
|
||||
" subq 2,$r0 ; rerun the instruction the break replaced\n"
|
||||
"is_static:\n"
|
||||
" moveq 1,$r1\n"
|
||||
" move.b $r1,[is_dyn_brkp] ; Set the state variable to dynamic breakpoint\n"
|
||||
" move.d $r0,[cris_reg+0x62] ; Save the return address in BRP\n"
|
||||
" move $usp,[cris_reg+0x66] ; USP\n"
|
||||
";;\n"
|
||||
";; Handle the communication\n"
|
||||
";;\n"
|
||||
" move.d internal_stack+1020,$sp ; Use the internal stack which grows upward\n"
|
||||
" moveq 5,$r10 ; SIGTRAP\n"
|
||||
" jsr handle_exception ; Interactive routine\n"
|
||||
";;\n"
|
||||
";; Return to the caller\n"
|
||||
";;\n"
|
||||
" move.d [cris_reg],$r0 ; Restore R0\n"
|
||||
" move.d [cris_reg+0x04],$r1 ; Restore R1\n"
|
||||
" move.d [cris_reg+0x08],$r2 ; Restore R2\n"
|
||||
" move.d [cris_reg+0x0C],$r3 ; Restore R3\n"
|
||||
" move.d [cris_reg+0x10],$r4 ; Restore R4\n"
|
||||
" move.d [cris_reg+0x14],$r5 ; Restore R5\n"
|
||||
" move.d [cris_reg+0x18],$r6 ; Restore R6\n"
|
||||
" move.d [cris_reg+0x1C],$r7 ; Restore R7\n"
|
||||
" move.d [cris_reg+0x20],$r8 ; Restore R8\n"
|
||||
" move.d [cris_reg+0x24],$r9 ; Restore R9\n"
|
||||
" move.d [cris_reg+0x28],$r10 ; Restore R10\n"
|
||||
" move.d [cris_reg+0x2C],$r11 ; Restore R11\n"
|
||||
" move.d [cris_reg+0x30],$r12 ; Restore R12\n"
|
||||
" move.d [cris_reg+0x34],$r13 ; Restore R13\n"
|
||||
";;\n"
|
||||
";; FIXME: Which registers should be restored?\n"
|
||||
";;\n"
|
||||
" move.d [cris_reg+0x38],$sp ; Restore SP (R14)\n"
|
||||
" move [cris_reg+0x56],$srp ; Restore the subroutine return pointer.\n"
|
||||
" move [cris_reg+0x5E],$dccr ; Restore DCCR\n"
|
||||
" move [cris_reg+0x66],$usp ; Restore USP\n"
|
||||
" jump [cris_reg+0x62] ; A jump to the content in register BRP works.\n"
|
||||
" nop ;\n"
|
||||
"\n");
|
||||
|
||||
/* The hook for an interrupt generated by GDB. An internal stack is used
|
||||
by the stub. The register image of the caller is stored in the structure
|
||||
@ -1367,94 +1029,94 @@ asm ("
|
||||
|
||||
void kgdb_handle_serial(void);
|
||||
|
||||
asm ("
|
||||
.global kgdb_handle_serial
|
||||
kgdb_handle_serial:
|
||||
;;
|
||||
;; Response to a serial interrupt
|
||||
;;
|
||||
|
||||
move $dccr,[reg+0x5E] ; Save the flags in DCCR
|
||||
di ; Disable interrupts
|
||||
move.d $r0,[reg] ; Save R0
|
||||
move.d $r1,[reg+0x04] ; Save R1
|
||||
move.d $r2,[reg+0x08] ; Save R2
|
||||
move.d $r3,[reg+0x0C] ; Save R3
|
||||
move.d $r4,[reg+0x10] ; Save R4
|
||||
move.d $r5,[reg+0x14] ; Save R5
|
||||
move.d $r6,[reg+0x18] ; Save R6
|
||||
move.d $r7,[reg+0x1C] ; Save R7
|
||||
move.d $r8,[reg+0x20] ; Save R8
|
||||
move.d $r9,[reg+0x24] ; Save R9
|
||||
move.d $r10,[reg+0x28] ; Save R10
|
||||
move.d $r11,[reg+0x2C] ; Save R11
|
||||
move.d $r12,[reg+0x30] ; Save R12
|
||||
move.d $r13,[reg+0x34] ; Save R13
|
||||
move.d $sp,[reg+0x38] ; Save SP (R14)
|
||||
move $irp,[reg+0x3c] ; Save the address in PC (R15)
|
||||
clear.b [reg+0x40] ; Clear P0
|
||||
move $vr,[reg+0x41] ; Save special register P1,
|
||||
clear.w [reg+0x42] ; Clear P4
|
||||
move $ccr,[reg+0x44] ; Save special register CCR
|
||||
move $mof,[reg+0x46] ; P7
|
||||
clear.d [reg+0x4A] ; Clear P8
|
||||
move $ibr,[reg+0x4E] ; P9,
|
||||
move $irp,[reg+0x52] ; P10,
|
||||
move $srp,[reg+0x56] ; P11,
|
||||
move $dtp0,[reg+0x5A] ; P12, register BAR, assembler might not know BAR
|
||||
; P13, register DCCR already saved
|
||||
;; Due to the old assembler-versions BRP might not be recognized
|
||||
.word 0xE670 ; move brp,r0
|
||||
move.d $r0,[reg+0x62] ; Save the return address in BRP
|
||||
move $usp,[reg+0x66] ; USP
|
||||
|
||||
;; get the serial character (from debugport.c) and check if it is a ctrl-c
|
||||
|
||||
jsr getDebugChar
|
||||
cmp.b 3, $r10
|
||||
bne goback
|
||||
nop
|
||||
|
||||
move.d [reg+0x5E], $r10 ; Get DCCR
|
||||
btstq 8, $r10 ; Test the U-flag.
|
||||
bmi goback
|
||||
nop
|
||||
|
||||
;;
|
||||
;; Handle the communication
|
||||
;;
|
||||
move.d internal_stack+1020,$sp ; Use the internal stack
|
||||
moveq 2,$r10 ; SIGINT
|
||||
jsr handle_exception ; Interactive routine
|
||||
|
||||
goback:
|
||||
;;
|
||||
;; Return to the caller
|
||||
;;
|
||||
move.d [reg],$r0 ; Restore R0
|
||||
move.d [reg+0x04],$r1 ; Restore R1
|
||||
move.d [reg+0x08],$r2 ; Restore R2
|
||||
move.d [reg+0x0C],$r3 ; Restore R3
|
||||
move.d [reg+0x10],$r4 ; Restore R4
|
||||
move.d [reg+0x14],$r5 ; Restore R5
|
||||
move.d [reg+0x18],$r6 ; Restore R6
|
||||
move.d [reg+0x1C],$r7 ; Restore R7
|
||||
move.d [reg+0x20],$r8 ; Restore R8
|
||||
move.d [reg+0x24],$r9 ; Restore R9
|
||||
move.d [reg+0x28],$r10 ; Restore R10
|
||||
move.d [reg+0x2C],$r11 ; Restore R11
|
||||
move.d [reg+0x30],$r12 ; Restore R12
|
||||
move.d [reg+0x34],$r13 ; Restore R13
|
||||
;;
|
||||
;; FIXME: Which registers should be restored?
|
||||
;;
|
||||
move.d [reg+0x38],$sp ; Restore SP (R14)
|
||||
move [reg+0x56],$srp ; Restore the subroutine return pointer.
|
||||
move [reg+0x5E],$dccr ; Restore DCCR
|
||||
move [reg+0x66],$usp ; Restore USP
|
||||
reti ; Return from the interrupt routine
|
||||
nop
|
||||
");
|
||||
asm ("\n"
|
||||
" .global kgdb_handle_serial\n"
|
||||
"kgdb_handle_serial:\n"
|
||||
";;\n"
|
||||
";; Response to a serial interrupt\n"
|
||||
";;\n"
|
||||
"\n"
|
||||
" move $dccr,[cris_reg+0x5E] ; Save the flags in DCCR\n"
|
||||
" di ; Disable interrupts\n"
|
||||
" move.d $r0,[cris_reg] ; Save R0\n"
|
||||
" move.d $r1,[cris_reg+0x04] ; Save R1\n"
|
||||
" move.d $r2,[cris_reg+0x08] ; Save R2\n"
|
||||
" move.d $r3,[cris_reg+0x0C] ; Save R3\n"
|
||||
" move.d $r4,[cris_reg+0x10] ; Save R4\n"
|
||||
" move.d $r5,[cris_reg+0x14] ; Save R5\n"
|
||||
" move.d $r6,[cris_reg+0x18] ; Save R6\n"
|
||||
" move.d $r7,[cris_reg+0x1C] ; Save R7\n"
|
||||
" move.d $r8,[cris_reg+0x20] ; Save R8\n"
|
||||
" move.d $r9,[cris_reg+0x24] ; Save R9\n"
|
||||
" move.d $r10,[cris_reg+0x28] ; Save R10\n"
|
||||
" move.d $r11,[cris_reg+0x2C] ; Save R11\n"
|
||||
" move.d $r12,[cris_reg+0x30] ; Save R12\n"
|
||||
" move.d $r13,[cris_reg+0x34] ; Save R13\n"
|
||||
" move.d $sp,[cris_reg+0x38] ; Save SP (R14)\n"
|
||||
" move $irp,[cris_reg+0x3c] ; Save the address in PC (R15)\n"
|
||||
" clear.b [cris_reg+0x40] ; Clear P0\n"
|
||||
" move $vr,[cris_reg+0x41] ; Save special register P1,\n"
|
||||
" clear.w [cris_reg+0x42] ; Clear P4\n"
|
||||
" move $ccr,[cris_reg+0x44] ; Save special register CCR\n"
|
||||
" move $mof,[cris_reg+0x46] ; P7\n"
|
||||
" clear.d [cris_reg+0x4A] ; Clear P8\n"
|
||||
" move $ibr,[cris_reg+0x4E] ; P9,\n"
|
||||
" move $irp,[cris_reg+0x52] ; P10,\n"
|
||||
" move $srp,[cris_reg+0x56] ; P11,\n"
|
||||
" move $dtp0,[cris_reg+0x5A] ; P12, register BAR, assembler might not know BAR\n"
|
||||
" ; P13, register DCCR already saved\n"
|
||||
";; Due to the old assembler-versions BRP might not be recognized\n"
|
||||
" .word 0xE670 ; move brp,r0\n"
|
||||
" move.d $r0,[cris_reg+0x62] ; Save the return address in BRP\n"
|
||||
" move $usp,[cris_reg+0x66] ; USP\n"
|
||||
"\n"
|
||||
";; get the serial character (from debugport.c) and check if it is a ctrl-c\n"
|
||||
"\n"
|
||||
" jsr getDebugChar\n"
|
||||
" cmp.b 3, $r10\n"
|
||||
" bne goback\n"
|
||||
" nop\n"
|
||||
"\n"
|
||||
" move.d [cris_reg+0x5E], $r10 ; Get DCCR\n"
|
||||
" btstq 8, $r10 ; Test the U-flag.\n"
|
||||
" bmi goback\n"
|
||||
" nop\n"
|
||||
"\n"
|
||||
";;\n"
|
||||
";; Handle the communication\n"
|
||||
";;\n"
|
||||
" move.d internal_stack+1020,$sp ; Use the internal stack\n"
|
||||
" moveq 2,$r10 ; SIGINT\n"
|
||||
" jsr handle_exception ; Interactive routine\n"
|
||||
"\n"
|
||||
"goback:\n"
|
||||
";;\n"
|
||||
";; Return to the caller\n"
|
||||
";;\n"
|
||||
" move.d [cris_reg],$r0 ; Restore R0\n"
|
||||
" move.d [cris_reg+0x04],$r1 ; Restore R1\n"
|
||||
" move.d [cris_reg+0x08],$r2 ; Restore R2\n"
|
||||
" move.d [cris_reg+0x0C],$r3 ; Restore R3\n"
|
||||
" move.d [cris_reg+0x10],$r4 ; Restore R4\n"
|
||||
" move.d [cris_reg+0x14],$r5 ; Restore R5\n"
|
||||
" move.d [cris_reg+0x18],$r6 ; Restore R6\n"
|
||||
" move.d [cris_reg+0x1C],$r7 ; Restore R7\n"
|
||||
" move.d [cris_reg+0x20],$r8 ; Restore R8\n"
|
||||
" move.d [cris_reg+0x24],$r9 ; Restore R9\n"
|
||||
" move.d [cris_reg+0x28],$r10 ; Restore R10\n"
|
||||
" move.d [cris_reg+0x2C],$r11 ; Restore R11\n"
|
||||
" move.d [cris_reg+0x30],$r12 ; Restore R12\n"
|
||||
" move.d [cris_reg+0x34],$r13 ; Restore R13\n"
|
||||
";;\n"
|
||||
";; FIXME: Which registers should be restored?\n"
|
||||
";;\n"
|
||||
" move.d [cris_reg+0x38],$sp ; Restore SP (R14)\n"
|
||||
" move [cris_reg+0x56],$srp ; Restore the subroutine return pointer.\n"
|
||||
" move [cris_reg+0x5E],$dccr ; Restore DCCR\n"
|
||||
" move [cris_reg+0x66],$usp ; Restore USP\n"
|
||||
" reti ; Return from the interrupt routine\n"
|
||||
" nop\n"
|
||||
"\n");
|
||||
|
||||
/* Use this static breakpoint in the start-up only. */
|
||||
|
||||
|
@ -640,8 +640,6 @@ config ETRAX_STREAMCOPROC
|
||||
This option enables a driver for the stream co-processor
|
||||
for cryptographic operations.
|
||||
|
||||
source drivers/mmc/Kconfig
|
||||
|
||||
config ETRAX_MMC_IOP
|
||||
tristate "MMC/SD host driver using IO-processor"
|
||||
depends on ETRAX_ARCH_V32 && MMC
|
||||
@ -833,9 +831,4 @@ config ETRAX_SPI_MMC_WP_GPIO_PIN
|
||||
The pin to use for the SD/MMC write-protect signal for a memory
|
||||
card. If defined as " " (space), the card is considered writable.
|
||||
|
||||
# Avoid choices causing non-working configs by conditionalizing the inclusion.
|
||||
if ETRAX_SPI_MMC
|
||||
source drivers/spi/Kconfig
|
||||
endif
|
||||
|
||||
endif
|
||||
|
@ -5,5 +5,9 @@ header-y += arch-v32/
|
||||
|
||||
generic-y += clkdev.h
|
||||
generic-y += exec.h
|
||||
generic-y += kvm_para.h
|
||||
generic-y += linkage.h
|
||||
generic-y += module.h
|
||||
generic-y += trace_clock.h
|
||||
generic-y += vga.h
|
||||
generic-y += xor.h
|
||||
|
@ -167,6 +167,9 @@ static inline void outsl(unsigned int port, const void *addr,
|
||||
cris_iops->write_io(port, (void *)addr, 4, count);
|
||||
}
|
||||
|
||||
#define inb_p(port) inb(port)
|
||||
#define outb_p(val, port) outb((val), (port))
|
||||
|
||||
/*
|
||||
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||
* access
|
||||
|
@ -1,6 +0,0 @@
|
||||
#ifndef __ASM_LINKAGE_H
|
||||
#define __ASM_LINKAGE_H
|
||||
|
||||
/* Nothing to see here... */
|
||||
|
||||
#endif
|
@ -479,11 +479,6 @@ __head_mmu_enabled:
|
||||
|
||||
LEDS 0x000c
|
||||
|
||||
# initialise the processor and the peripherals
|
||||
#call SYMBOL_NAME(processor_init)
|
||||
#call SYMBOL_NAME(unit_init)
|
||||
#LEDS 0x0aff
|
||||
|
||||
sethi.p #0xe5e5,gr3
|
||||
setlo #0xe5e5,gr3
|
||||
or.p gr3,gr0,gr4
|
||||
|
@ -94,126 +94,10 @@ endmenu
|
||||
|
||||
source "net/Kconfig"
|
||||
|
||||
source "drivers/base/Kconfig"
|
||||
|
||||
source "drivers/mtd/Kconfig"
|
||||
|
||||
source "drivers/block/Kconfig"
|
||||
|
||||
source "drivers/ide/Kconfig"
|
||||
source "drivers/Kconfig"
|
||||
|
||||
source "arch/h8300/Kconfig.ide"
|
||||
|
||||
source "drivers/net/Kconfig"
|
||||
|
||||
#
|
||||
# input - input/joystick depends on it. As does USB.
|
||||
#
|
||||
source "drivers/input/Kconfig"
|
||||
|
||||
menu "Character devices"
|
||||
|
||||
config VT
|
||||
bool "Virtual terminal"
|
||||
---help---
|
||||
If you say Y here, you will get support for terminal devices with
|
||||
display and keyboard devices. These are called "virtual" because you
|
||||
can run several virtual terminals (also called virtual consoles) on
|
||||
one physical terminal. This is rather useful, for example one
|
||||
virtual terminal can collect system messages and warnings, another
|
||||
one can be used for a text-mode user session, and a third could run
|
||||
an X session, all in parallel. Switching between virtual terminals
|
||||
is done with certain key combinations, usually Alt-<function key>.
|
||||
|
||||
The setterm command ("man setterm") can be used to change the
|
||||
properties (such as colors or beeping) of a virtual terminal. The
|
||||
man page console_codes(4) ("man console_codes") contains the special
|
||||
character sequences that can be used to change those properties
|
||||
directly. The fonts used on virtual terminals can be changed with
|
||||
the setfont ("man setfont") command and the key bindings are defined
|
||||
with the loadkeys ("man loadkeys") command.
|
||||
|
||||
You need at least one virtual terminal device in order to make use
|
||||
of your keyboard and monitor. Therefore, only people configuring an
|
||||
embedded system would want to say N here in order to save some
|
||||
memory; the only way to log into such a system is then via a serial
|
||||
or network connection.
|
||||
|
||||
If unsure, say Y, or else you won't be able to do much with your new
|
||||
shiny Linux system :-)
|
||||
|
||||
config VT_CONSOLE
|
||||
bool "Support for console on virtual terminal"
|
||||
depends on VT
|
||||
---help---
|
||||
The system console is the device which receives all kernel messages
|
||||
and warnings and which allows logins in single user mode. If you
|
||||
answer Y here, a virtual terminal (the device used to interact with
|
||||
a physical terminal) can be used as system console. This is the most
|
||||
common mode of operations, so you should say Y here unless you want
|
||||
the kernel messages be output only to a serial port (in which case
|
||||
you should say Y to "Console on serial port", below).
|
||||
|
||||
If you do say Y here, by default the currently visible virtual
|
||||
terminal (/dev/tty0) will be used as system console. You can change
|
||||
that with a kernel command line option such as "console=tty3" which
|
||||
would use the third virtual terminal as system console. (Try "man
|
||||
bootparam" or see the documentation of your boot loader (lilo or
|
||||
loadlin) about how to pass options to the kernel at boot time.)
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
config HW_CONSOLE
|
||||
bool
|
||||
depends on VT
|
||||
default y
|
||||
|
||||
comment "Unix98 PTY support"
|
||||
|
||||
config UNIX98_PTYS
|
||||
bool "Unix98 PTY support"
|
||||
---help---
|
||||
A pseudo terminal (PTY) is a software device consisting of two
|
||||
halves: a master and a slave. The slave device behaves identical to
|
||||
a physical terminal; the master device is used by a process to
|
||||
read data from and write data to the slave, thereby emulating a
|
||||
terminal. Typical programs for the master side are telnet servers
|
||||
and xterms.
|
||||
|
||||
Linux has traditionally used the BSD-like names /dev/ptyxx for
|
||||
masters and /dev/ttyxx for slaves of pseudo terminals. This scheme
|
||||
has a number of problems. The GNU C library glibc 2.1 and later,
|
||||
however, supports the Unix98 naming standard: in order to acquire a
|
||||
pseudo terminal, a process opens /dev/ptmx; the number of the pseudo
|
||||
terminal is then made available to the process and the pseudo
|
||||
terminal slave can be accessed as /dev/pts/<number>. What was
|
||||
traditionally /dev/ttyp2 will then be /dev/pts/2, for example.
|
||||
|
||||
The entries in /dev/pts/ are created on the fly by a virtual
|
||||
file system; therefore, if you say Y here you should say Y to
|
||||
"/dev/pts file system for Unix98 PTYs" as well.
|
||||
|
||||
If you want to say Y here, you need to have the C library glibc 2.1
|
||||
or later (equal to libc-6.1, check with "ls -l /lib/libc.so.*").
|
||||
Read the instructions in <file:Documentation/Changes> pertaining to
|
||||
pseudo terminals. It's safe to say N.
|
||||
|
||||
source "drivers/char/pcmcia/Kconfig"
|
||||
|
||||
source "drivers/tty/serial/Kconfig"
|
||||
|
||||
source "drivers/i2c/Kconfig"
|
||||
|
||||
source "drivers/hwmon/Kconfig"
|
||||
|
||||
source "drivers/usb/Kconfig"
|
||||
|
||||
source "drivers/uwb/Kconfig"
|
||||
|
||||
endmenu
|
||||
|
||||
source "drivers/staging/Kconfig"
|
||||
|
||||
source "fs/Kconfig"
|
||||
|
||||
source "arch/h8300/Kconfig.debug"
|
||||
|
@ -64,6 +64,7 @@ choice
|
||||
|
||||
config H83002
|
||||
bool "H8/3001,3002,3003"
|
||||
depends on BROKEN
|
||||
select CPU_H8300H
|
||||
|
||||
config H83007
|
||||
@ -72,6 +73,7 @@ config H83007
|
||||
|
||||
config H83048
|
||||
bool "H8/3044,3045,3046,3047,3048,3052"
|
||||
depends on BROKEN
|
||||
select CPU_H8300H
|
||||
|
||||
config H83068
|
||||
@ -155,10 +157,12 @@ config H8300_TIMER16_CH
|
||||
config H8300_ITU_CH
|
||||
int "ITU channel"
|
||||
depends on H8300_ITU
|
||||
range 0 4
|
||||
|
||||
config H8300_TPU_CH
|
||||
int "TPU channel"
|
||||
depends on H8300_TPU
|
||||
range 0 4
|
||||
|
||||
source "kernel/Kconfig.preempt"
|
||||
|
||||
|
@ -16,7 +16,7 @@ OBJECTS = $(obj)/head.o $(obj)/misc.o
|
||||
#
|
||||
CONFIG_MEMORY_START ?= 0x00400000
|
||||
CONFIG_BOOT_LINK_OFFSET ?= 0x00140000
|
||||
IMAGE_OFFSET := $(shell printf "0x%08x" $$[$(CONFIG_MEMORY_START)+$(CONFIG_BOOT_LINK_OFFSET)])
|
||||
IMAGE_OFFSET := $(shell printf "0x%08x" $$(($(CONFIG_MEMORY_START)+$(CONFIG_BOOT_LINK_OFFSET))))
|
||||
|
||||
LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -estartup $(obj)/vmlinux.lds
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
|
||||
generic-y += clkdev.h
|
||||
generic-y += exec.h
|
||||
generic-y += linkage.h
|
||||
generic-y += mmu.h
|
||||
generic-y += module.h
|
||||
generic-y += trace_clock.h
|
||||
generic-y += xor.h
|
||||
|
@ -12,6 +12,8 @@
|
||||
#define wmb() asm volatile ("" : : :"memory")
|
||||
#define set_mb(var, value) do { xchg(&var, value); } while (0)
|
||||
|
||||
#define read_barrier_depends() do { } while (0)
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
#define smp_mb() mb()
|
||||
#define smp_rmb() rmb()
|
||||
|
@ -1,6 +0,0 @@
|
||||
#ifndef _H8300_LINKAGE_H
|
||||
#define _H8300_LINKAGE_H
|
||||
|
||||
#undef SYMBOL_NAME_LABEL
|
||||
#define SYMBOL_NAME_LABEL(_name_) _##_name_##:
|
||||
#endif
|
@ -1,16 +1,3 @@
|
||||
/*
|
||||
include/asm-h8300/tlb.h
|
||||
*/
|
||||
|
||||
#ifndef __H8300_TLB_H__
|
||||
#define __H8300_TLB_H__
|
||||
|
||||
#define tlb_flush(tlb) do { } while(0)
|
||||
|
||||
/*
|
||||
include/asm-h8300/tlb.h
|
||||
*/
|
||||
|
||||
#ifndef __H8300_TLB_H__
|
||||
#define __H8300_TLB_H__
|
||||
|
||||
@ -19,5 +6,3 @@
|
||||
#include <asm-generic/tlb.h>
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -87,13 +87,13 @@ INTERRUPTS = 128
|
||||
bne 5f
|
||||
|
||||
/* user mode */
|
||||
mov.l sp,@SYMBOL_NAME(sw_usp)
|
||||
mov.l sp,@_sw_usp
|
||||
mov.l @sp,er0 /* restore saved er0 */
|
||||
orc #0x10,ccr /* switch kernel stack */
|
||||
mov.l @SYMBOL_NAME(sw_ksp),sp
|
||||
mov.l @_sw_ksp,sp
|
||||
sub.l #(LRET-LORIG),sp /* allocate LORIG - LRET */
|
||||
SAVEREGS
|
||||
mov.l @SYMBOL_NAME(sw_usp),er0
|
||||
mov.l @_sw_usp,er0
|
||||
mov.l @(USERRET:16,er0),er1 /* copy the RET addr */
|
||||
mov.l er1,@(LRET-LER3:16,sp)
|
||||
SAVEEXR
|
||||
@ -128,7 +128,7 @@ INTERRUPTS = 128
|
||||
bne 7f
|
||||
|
||||
orc #0x80,ccr
|
||||
mov.l @SYMBOL_NAME(sw_usp),er0
|
||||
mov.l @_sw_usp,er0
|
||||
mov.l @(LER0-LER1:16,sp),er1 /* restore ER0 */
|
||||
mov.l er1,@er0
|
||||
RESTOREEXR
|
||||
@ -141,7 +141,7 @@ INTERRUPTS = 128
|
||||
|
||||
mov.l @sp+,er1
|
||||
add.l #(LRET-LER1),sp /* remove LORIG - LRET */
|
||||
mov.l sp,@SYMBOL_NAME(sw_ksp)
|
||||
mov.l sp,@_sw_ksp
|
||||
andc #0xef,ccr /* switch to user mode */
|
||||
mov.l er0,sp
|
||||
bra 8f
|
||||
@ -155,20 +155,20 @@ INTERRUPTS = 128
|
||||
rte
|
||||
.endm
|
||||
|
||||
.globl SYMBOL_NAME(system_call)
|
||||
.globl SYMBOL_NAME(ret_from_exception)
|
||||
.globl SYMBOL_NAME(ret_from_fork)
|
||||
.globl SYMBOL_NAME(ret_from_kernel_thread)
|
||||
.globl SYMBOL_NAME(ret_from_interrupt)
|
||||
.globl SYMBOL_NAME(interrupt_redirect_table)
|
||||
.globl SYMBOL_NAME(sw_ksp),SYMBOL_NAME(sw_usp)
|
||||
.globl SYMBOL_NAME(resume)
|
||||
.globl SYMBOL_NAME(interrupt_entry)
|
||||
.globl SYMBOL_NAME(trace_break)
|
||||
.globl _system_call
|
||||
.globl _ret_from_exception
|
||||
.globl _ret_from_fork
|
||||
.globl _ret_from_kernel_thread
|
||||
.globl _ret_from_interrupt
|
||||
.globl _interrupt_redirect_table
|
||||
.globl _sw_ksp,_sw_usp
|
||||
.globl _resume
|
||||
.globl _interrupt_entry
|
||||
.globl _trace_break
|
||||
|
||||
#if defined(CONFIG_ROMKERNEL)
|
||||
.section .int_redirect,"ax"
|
||||
SYMBOL_NAME_LABEL(interrupt_redirect_table)
|
||||
_interrupt_redirect_table:
|
||||
#if defined(CONFIG_CPU_H8300H)
|
||||
.rept 7
|
||||
.long 0
|
||||
@ -178,54 +178,54 @@ SYMBOL_NAME_LABEL(interrupt_redirect_table)
|
||||
.rept 5
|
||||
.long 0
|
||||
.endr
|
||||
jmp @SYMBOL_NAME(trace_break)
|
||||
jmp @_trace_break
|
||||
.long 0
|
||||
#endif
|
||||
|
||||
jsr @SYMBOL_NAME(interrupt_entry) /* NMI */
|
||||
jmp @SYMBOL_NAME(system_call) /* TRAPA #0 (System call) */
|
||||
jsr @_interrupt_entry /* NMI */
|
||||
jmp @_system_call /* TRAPA #0 (System call) */
|
||||
.long 0
|
||||
.long 0
|
||||
jmp @SYMBOL_NAME(trace_break) /* TRAPA #3 (breakpoint) */
|
||||
jmp @_trace_break /* TRAPA #3 (breakpoint) */
|
||||
.rept INTERRUPTS-12
|
||||
jsr @SYMBOL_NAME(interrupt_entry)
|
||||
jsr @_interrupt_entry
|
||||
.endr
|
||||
#endif
|
||||
#if defined(CONFIG_RAMKERNEL)
|
||||
.globl SYMBOL_NAME(interrupt_redirect_table)
|
||||
.globl _interrupt_redirect_table
|
||||
.section .bss
|
||||
SYMBOL_NAME_LABEL(interrupt_redirect_table)
|
||||
_interrupt_redirect_table:
|
||||
.space 4
|
||||
#endif
|
||||
|
||||
.section .text
|
||||
.align 2
|
||||
SYMBOL_NAME_LABEL(interrupt_entry)
|
||||
_interrupt_entry:
|
||||
SAVE_ALL
|
||||
mov.l sp,er0
|
||||
add.l #LVEC,er0
|
||||
btst #4,r1l
|
||||
bne 1f
|
||||
/* user LVEC */
|
||||
mov.l @SYMBOL_NAME(sw_usp),er0
|
||||
mov.l @_sw_usp,er0
|
||||
adds #4,er0
|
||||
1:
|
||||
mov.l @er0,er0 /* LVEC address */
|
||||
#if defined(CONFIG_ROMKERNEL)
|
||||
sub.l #SYMBOL_NAME(interrupt_redirect_table),er0
|
||||
sub.l #_interrupt_redirect_table,er0
|
||||
#endif
|
||||
#if defined(CONFIG_RAMKERNEL)
|
||||
mov.l @SYMBOL_NAME(interrupt_redirect_table),er1
|
||||
mov.l @_interrupt_redirect_table,er1
|
||||
sub.l er1,er0
|
||||
#endif
|
||||
SHLR2 er0
|
||||
dec.l #1,er0
|
||||
mov.l sp,er1
|
||||
subs #4,er1 /* adjust ret_pc */
|
||||
jsr @SYMBOL_NAME(do_IRQ)
|
||||
jmp @SYMBOL_NAME(ret_from_interrupt)
|
||||
jsr @_do_IRQ
|
||||
jmp @_ret_from_interrupt
|
||||
|
||||
SYMBOL_NAME_LABEL(system_call)
|
||||
_system_call:
|
||||
subs #4,sp /* dummy LVEC */
|
||||
SAVE_ALL
|
||||
andc #0x7f,ccr
|
||||
@ -233,21 +233,21 @@ SYMBOL_NAME_LABEL(system_call)
|
||||
|
||||
/* save top of frame */
|
||||
mov.l sp,er0
|
||||
jsr @SYMBOL_NAME(set_esp0)
|
||||
jsr @_set_esp0
|
||||
mov.l sp,er2
|
||||
and.w #0xe000,r2
|
||||
mov.b @((TI_FLAGS+3-(TIF_SYSCALL_TRACE >> 3)):16,er2),r2l
|
||||
btst #(TIF_SYSCALL_TRACE & 7),r2l
|
||||
beq 1f
|
||||
jsr @SYMBOL_NAME(do_syscall_trace)
|
||||
jsr @_do_syscall_trace
|
||||
1:
|
||||
cmp.l #NR_syscalls,er4
|
||||
bcc badsys
|
||||
SHLL2 er4
|
||||
mov.l #SYMBOL_NAME(sys_call_table),er0
|
||||
mov.l #_sys_call_table,er0
|
||||
add.l er4,er0
|
||||
mov.l @er0,er4
|
||||
beq SYMBOL_NAME(ret_from_exception):16
|
||||
beq _ret_from_exception:16
|
||||
mov.l @(LER1:16,sp),er0
|
||||
mov.l @(LER2:16,sp),er1
|
||||
mov.l @(LER3:16,sp),er2
|
||||
@ -258,10 +258,10 @@ SYMBOL_NAME_LABEL(system_call)
|
||||
mov.b @((TI_FLAGS+3-(TIF_SYSCALL_TRACE >> 3)):16,er2),r2l
|
||||
btst #(TIF_SYSCALL_TRACE & 7),r2l
|
||||
beq 2f
|
||||
jsr @SYMBOL_NAME(do_syscall_trace)
|
||||
jsr @_do_syscall_trace
|
||||
2:
|
||||
#if defined(CONFIG_SYSCALL_PRINT)
|
||||
jsr @SYMBOL_NAME(syscall_print)
|
||||
jsr @_syscall_print
|
||||
#endif
|
||||
orc #0x80,ccr
|
||||
bra resume_userspace
|
||||
@ -275,11 +275,11 @@ badsys:
|
||||
#define resume_kernel restore_all
|
||||
#endif
|
||||
|
||||
SYMBOL_NAME_LABEL(ret_from_exception)
|
||||
_ret_from_exception:
|
||||
#if defined(CONFIG_PREEMPT)
|
||||
orc #0x80,ccr
|
||||
#endif
|
||||
SYMBOL_NAME_LABEL(ret_from_interrupt)
|
||||
_ret_from_interrupt:
|
||||
mov.b @(LCCR+1:16,sp),r0l
|
||||
btst #4,r0l
|
||||
bne resume_kernel:8 /* return from kernel */
|
||||
@ -296,12 +296,12 @@ work_pending:
|
||||
/* work notifysig */
|
||||
mov.l sp,er0
|
||||
subs #4,er0 /* er0: pt_regs */
|
||||
jsr @SYMBOL_NAME(do_notify_resume)
|
||||
jsr @_do_notify_resume
|
||||
bra restore_all:8
|
||||
work_resched:
|
||||
mov.l sp,er0
|
||||
jsr @SYMBOL_NAME(set_esp0)
|
||||
jsr @SYMBOL_NAME(schedule)
|
||||
jsr @_set_esp0
|
||||
jsr @_schedule
|
||||
bra resume_userspace:8
|
||||
restore_all:
|
||||
RESTORE_ALL /* Does RTE */
|
||||
@ -320,26 +320,26 @@ need_resched:
|
||||
mov.l er0,@(TI_PRE_COUNT:16,er4)
|
||||
andc #0x7f,ccr
|
||||
mov.l sp,er0
|
||||
jsr @SYMBOL_NAME(set_esp0)
|
||||
jsr @SYMBOL_NAME(schedule)
|
||||
jsr @_set_esp0
|
||||
jsr @_schedule
|
||||
orc #0x80,ccr
|
||||
bra need_resched:8
|
||||
#endif
|
||||
|
||||
SYMBOL_NAME_LABEL(ret_from_fork)
|
||||
_ret_from_fork:
|
||||
mov.l er2,er0
|
||||
jsr @SYMBOL_NAME(schedule_tail)
|
||||
jmp @SYMBOL_NAME(ret_from_exception)
|
||||
jsr @_schedule_tail
|
||||
jmp @_ret_from_exception
|
||||
|
||||
SYMBOL_NAME_LABEL(ret_from_kernel_thread)
|
||||
_ret_from_kernel_thread:
|
||||
mov.l er2,er0
|
||||
jsr @SYMBOL_NAME(schedule_tail)
|
||||
jsr @_schedule_tail
|
||||
mov.l @(LER4:16,sp),er0
|
||||
mov.l @(LER5:16,sp),er1
|
||||
jsr @er1
|
||||
jmp @SYMBOL_NAME(ret_from_exception)
|
||||
jmp @_ret_from_exception
|
||||
|
||||
SYMBOL_NAME_LABEL(resume)
|
||||
_resume:
|
||||
/*
|
||||
* Beware - when entering resume, offset of tss is in d1,
|
||||
* prev (the current task) is in a0, next (the new task)
|
||||
@ -355,7 +355,7 @@ SYMBOL_NAME_LABEL(resume)
|
||||
|
||||
/* disable interrupts */
|
||||
orc #0x80,ccr
|
||||
mov.l @SYMBOL_NAME(sw_usp),er3
|
||||
mov.l @_sw_usp,er3
|
||||
mov.l er3,@(THREAD_USP:16,er0)
|
||||
mov.l sp,@(THREAD_KSP:16,er0)
|
||||
|
||||
@ -363,7 +363,7 @@ SYMBOL_NAME_LABEL(resume)
|
||||
/* FIXME: what did we hack out of here, this does nothing! */
|
||||
|
||||
mov.l @(THREAD_USP:16,er1),er0
|
||||
mov.l er0,@SYMBOL_NAME(sw_usp)
|
||||
mov.l er0,@_sw_usp
|
||||
mov.l @(THREAD_KSP:16,er1),sp
|
||||
|
||||
/* restore status register */
|
||||
@ -372,15 +372,15 @@ SYMBOL_NAME_LABEL(resume)
|
||||
ldc r3l,ccr
|
||||
rts
|
||||
|
||||
SYMBOL_NAME_LABEL(trace_break)
|
||||
_trace_break:
|
||||
subs #4,sp
|
||||
SAVE_ALL
|
||||
sub.l er1,er1
|
||||
dec.l #1,er1
|
||||
mov.l er1,@(LORIG,sp)
|
||||
mov.l sp,er0
|
||||
jsr @SYMBOL_NAME(set_esp0)
|
||||
mov.l @SYMBOL_NAME(sw_usp),er0
|
||||
jsr @_set_esp0
|
||||
mov.l @_sw_usp,er0
|
||||
mov.l @er0,er1
|
||||
mov.w @(-2:16,er1),r2
|
||||
cmp.w #0x5730,r2
|
||||
@ -390,13 +390,13 @@ SYMBOL_NAME_LABEL(trace_break)
|
||||
1:
|
||||
and.w #0xff,e1
|
||||
mov.l er1,er0
|
||||
jsr @SYMBOL_NAME(trace_trap)
|
||||
jmp @SYMBOL_NAME(ret_from_exception)
|
||||
jsr @_trace_trap
|
||||
jmp @_ret_from_exception
|
||||
|
||||
.section .bss
|
||||
SYMBOL_NAME_LABEL(sw_ksp)
|
||||
_sw_ksp:
|
||||
.space 4
|
||||
SYMBOL_NAME_LABEL(sw_usp)
|
||||
_sw_usp:
|
||||
.space 4
|
||||
|
||||
.end
|
||||
|
@ -2,8 +2,10 @@
|
||||
#include <linux/sys.h>
|
||||
#include <asm/linkage.h>
|
||||
#include <asm/unistd.h>
|
||||
|
||||
.globl SYMBOL_NAME(sys_call_table)
|
||||
|
||||
#define CALL(x) .long _ ## x
|
||||
|
||||
.globl _sys_call_table
|
||||
|
||||
#if defined(CONFIG_CPU_H8300H)
|
||||
.h8300h
|
||||
@ -13,324 +15,324 @@
|
||||
#endif
|
||||
.section .text
|
||||
.align 2
|
||||
SYMBOL_NAME_LABEL(sys_call_table)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* 0 - old "setup()" system call*/
|
||||
.long SYMBOL_NAME(sys_exit)
|
||||
.long SYMBOL_NAME(sys_fork)
|
||||
.long SYMBOL_NAME(sys_read)
|
||||
.long SYMBOL_NAME(sys_write)
|
||||
.long SYMBOL_NAME(sys_open) /* 5 */
|
||||
.long SYMBOL_NAME(sys_close)
|
||||
.long SYMBOL_NAME(sys_waitpid)
|
||||
.long SYMBOL_NAME(sys_creat)
|
||||
.long SYMBOL_NAME(sys_link)
|
||||
.long SYMBOL_NAME(sys_unlink) /* 10 */
|
||||
.long SYMBOL_NAME(sys_execve)
|
||||
.long SYMBOL_NAME(sys_chdir)
|
||||
.long SYMBOL_NAME(sys_time)
|
||||
.long SYMBOL_NAME(sys_mknod)
|
||||
.long SYMBOL_NAME(sys_chmod) /* 15 */
|
||||
.long SYMBOL_NAME(sys_chown16)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */
|
||||
.long SYMBOL_NAME(sys_stat)
|
||||
.long SYMBOL_NAME(sys_lseek)
|
||||
.long SYMBOL_NAME(sys_getpid) /* 20 */
|
||||
.long SYMBOL_NAME(sys_mount)
|
||||
.long SYMBOL_NAME(sys_oldumount)
|
||||
.long SYMBOL_NAME(sys_setuid16)
|
||||
.long SYMBOL_NAME(sys_getuid16)
|
||||
.long SYMBOL_NAME(sys_stime) /* 25 */
|
||||
.long SYMBOL_NAME(sys_ptrace)
|
||||
.long SYMBOL_NAME(sys_alarm)
|
||||
.long SYMBOL_NAME(sys_fstat)
|
||||
.long SYMBOL_NAME(sys_pause)
|
||||
.long SYMBOL_NAME(sys_utime) /* 30 */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */
|
||||
.long SYMBOL_NAME(sys_access)
|
||||
.long SYMBOL_NAME(sys_nice)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* 35 old ftime syscall holder */
|
||||
.long SYMBOL_NAME(sys_sync)
|
||||
.long SYMBOL_NAME(sys_kill)
|
||||
.long SYMBOL_NAME(sys_rename)
|
||||
.long SYMBOL_NAME(sys_mkdir)
|
||||
.long SYMBOL_NAME(sys_rmdir) /* 40 */
|
||||
.long SYMBOL_NAME(sys_dup)
|
||||
.long SYMBOL_NAME(sys_pipe)
|
||||
.long SYMBOL_NAME(sys_times)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */
|
||||
.long SYMBOL_NAME(sys_brk) /* 45 */
|
||||
.long SYMBOL_NAME(sys_setgid16)
|
||||
.long SYMBOL_NAME(sys_getgid16)
|
||||
.long SYMBOL_NAME(sys_signal)
|
||||
.long SYMBOL_NAME(sys_geteuid16)
|
||||
.long SYMBOL_NAME(sys_getegid16) /* 50 */
|
||||
.long SYMBOL_NAME(sys_acct)
|
||||
.long SYMBOL_NAME(sys_umount) /* recycled never used phys() */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */
|
||||
.long SYMBOL_NAME(sys_ioctl)
|
||||
.long SYMBOL_NAME(sys_fcntl) /* 55 */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */
|
||||
.long SYMBOL_NAME(sys_setpgid)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */
|
||||
.long SYMBOL_NAME(sys_ni_syscall)
|
||||
.long SYMBOL_NAME(sys_umask) /* 60 */
|
||||
.long SYMBOL_NAME(sys_chroot)
|
||||
.long SYMBOL_NAME(sys_ustat)
|
||||
.long SYMBOL_NAME(sys_dup2)
|
||||
.long SYMBOL_NAME(sys_getppid)
|
||||
.long SYMBOL_NAME(sys_getpgrp) /* 65 */
|
||||
.long SYMBOL_NAME(sys_setsid)
|
||||
.long SYMBOL_NAME(sys_sigaction)
|
||||
.long SYMBOL_NAME(sys_sgetmask)
|
||||
.long SYMBOL_NAME(sys_ssetmask)
|
||||
.long SYMBOL_NAME(sys_setreuid16) /* 70 */
|
||||
.long SYMBOL_NAME(sys_setregid16)
|
||||
.long SYMBOL_NAME(sys_sigsuspend)
|
||||
.long SYMBOL_NAME(sys_sigpending)
|
||||
.long SYMBOL_NAME(sys_sethostname)
|
||||
.long SYMBOL_NAME(sys_setrlimit) /* 75 */
|
||||
.long SYMBOL_NAME(sys_old_getrlimit)
|
||||
.long SYMBOL_NAME(sys_getrusage)
|
||||
.long SYMBOL_NAME(sys_gettimeofday)
|
||||
.long SYMBOL_NAME(sys_settimeofday)
|
||||
.long SYMBOL_NAME(sys_getgroups16) /* 80 */
|
||||
.long SYMBOL_NAME(sys_setgroups16)
|
||||
.long SYMBOL_NAME(sys_old_select)
|
||||
.long SYMBOL_NAME(sys_symlink)
|
||||
.long SYMBOL_NAME(sys_lstat)
|
||||
.long SYMBOL_NAME(sys_readlink) /* 85 */
|
||||
.long SYMBOL_NAME(sys_uselib)
|
||||
.long SYMBOL_NAME(sys_swapon)
|
||||
.long SYMBOL_NAME(sys_reboot)
|
||||
.long SYMBOL_NAME(sys_old_readdir)
|
||||
.long SYMBOL_NAME(sys_old_mmap) /* 90 */
|
||||
.long SYMBOL_NAME(sys_munmap)
|
||||
.long SYMBOL_NAME(sys_truncate)
|
||||
.long SYMBOL_NAME(sys_ftruncate)
|
||||
.long SYMBOL_NAME(sys_fchmod)
|
||||
.long SYMBOL_NAME(sys_fchown16) /* 95 */
|
||||
.long SYMBOL_NAME(sys_getpriority)
|
||||
.long SYMBOL_NAME(sys_setpriority)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */
|
||||
.long SYMBOL_NAME(sys_statfs)
|
||||
.long SYMBOL_NAME(sys_fstatfs) /* 100 */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* ioperm for i386 */
|
||||
.long SYMBOL_NAME(sys_socketcall)
|
||||
.long SYMBOL_NAME(sys_syslog)
|
||||
.long SYMBOL_NAME(sys_setitimer)
|
||||
.long SYMBOL_NAME(sys_getitimer) /* 105 */
|
||||
.long SYMBOL_NAME(sys_newstat)
|
||||
.long SYMBOL_NAME(sys_newlstat)
|
||||
.long SYMBOL_NAME(sys_newfstat)
|
||||
.long SYMBOL_NAME(sys_ni_syscall)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* iopl for i386 */ /* 110 */
|
||||
.long SYMBOL_NAME(sys_vhangup)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* obsolete idle() syscall */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* vm86old for i386 */
|
||||
.long SYMBOL_NAME(sys_wait4)
|
||||
.long SYMBOL_NAME(sys_swapoff) /* 115 */
|
||||
.long SYMBOL_NAME(sys_sysinfo)
|
||||
.long SYMBOL_NAME(sys_ipc)
|
||||
.long SYMBOL_NAME(sys_fsync)
|
||||
.long SYMBOL_NAME(sys_sigreturn)
|
||||
.long SYMBOL_NAME(sys_clone) /* 120 */
|
||||
.long SYMBOL_NAME(sys_setdomainname)
|
||||
.long SYMBOL_NAME(sys_newuname)
|
||||
.long SYMBOL_NAME(sys_cacheflush) /* modify_ldt for i386 */
|
||||
.long SYMBOL_NAME(sys_adjtimex)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* 125 sys_mprotect */
|
||||
.long SYMBOL_NAME(sys_sigprocmask)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_create_module */
|
||||
.long SYMBOL_NAME(sys_init_module)
|
||||
.long SYMBOL_NAME(sys_delete_module)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* 130 sys_get_kernel_syms */
|
||||
.long SYMBOL_NAME(sys_quotactl)
|
||||
.long SYMBOL_NAME(sys_getpgid)
|
||||
.long SYMBOL_NAME(sys_fchdir)
|
||||
.long SYMBOL_NAME(sys_bdflush)
|
||||
.long SYMBOL_NAME(sys_sysfs) /* 135 */
|
||||
.long SYMBOL_NAME(sys_personality)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */
|
||||
.long SYMBOL_NAME(sys_setfsuid16)
|
||||
.long SYMBOL_NAME(sys_setfsgid16)
|
||||
.long SYMBOL_NAME(sys_llseek) /* 140 */
|
||||
.long SYMBOL_NAME(sys_getdents)
|
||||
.long SYMBOL_NAME(sys_select)
|
||||
.long SYMBOL_NAME(sys_flock)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_msync */
|
||||
.long SYMBOL_NAME(sys_readv) /* 145 */
|
||||
.long SYMBOL_NAME(sys_writev)
|
||||
.long SYMBOL_NAME(sys_getsid)
|
||||
.long SYMBOL_NAME(sys_fdatasync)
|
||||
.long SYMBOL_NAME(sys_sysctl)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* 150 sys_mlock */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_munlock */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_mlockall */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_munlockall */
|
||||
.long SYMBOL_NAME(sys_sched_setparam)
|
||||
.long SYMBOL_NAME(sys_sched_getparam) /* 155 */
|
||||
.long SYMBOL_NAME(sys_sched_setscheduler)
|
||||
.long SYMBOL_NAME(sys_sched_getscheduler)
|
||||
.long SYMBOL_NAME(sys_sched_yield)
|
||||
.long SYMBOL_NAME(sys_sched_get_priority_max)
|
||||
.long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */
|
||||
.long SYMBOL_NAME(sys_sched_rr_get_interval)
|
||||
.long SYMBOL_NAME(sys_nanosleep)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_mremap */
|
||||
.long SYMBOL_NAME(sys_setresuid16)
|
||||
.long SYMBOL_NAME(sys_getresuid16) /* 165 */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* for vm86 */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_query_module */
|
||||
.long SYMBOL_NAME(sys_poll)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* old nfsservctl */
|
||||
.long SYMBOL_NAME(sys_setresgid16) /* 170 */
|
||||
.long SYMBOL_NAME(sys_getresgid16)
|
||||
.long SYMBOL_NAME(sys_prctl)
|
||||
.long SYMBOL_NAME(sys_rt_sigreturn)
|
||||
.long SYMBOL_NAME(sys_rt_sigaction)
|
||||
.long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */
|
||||
.long SYMBOL_NAME(sys_rt_sigpending)
|
||||
.long SYMBOL_NAME(sys_rt_sigtimedwait)
|
||||
.long SYMBOL_NAME(sys_rt_sigqueueinfo)
|
||||
.long SYMBOL_NAME(sys_rt_sigsuspend)
|
||||
.long SYMBOL_NAME(sys_pread64) /* 180 */
|
||||
.long SYMBOL_NAME(sys_pwrite64)
|
||||
.long SYMBOL_NAME(sys_lchown16);
|
||||
.long SYMBOL_NAME(sys_getcwd)
|
||||
.long SYMBOL_NAME(sys_capget)
|
||||
.long SYMBOL_NAME(sys_capset) /* 185 */
|
||||
.long SYMBOL_NAME(sys_sigaltstack)
|
||||
.long SYMBOL_NAME(sys_sendfile)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
|
||||
.long SYMBOL_NAME(sys_vfork) /* 190 */
|
||||
.long SYMBOL_NAME(sys_getrlimit)
|
||||
.long SYMBOL_NAME(sys_mmap_pgoff)
|
||||
.long SYMBOL_NAME(sys_truncate64)
|
||||
.long SYMBOL_NAME(sys_ftruncate64)
|
||||
.long SYMBOL_NAME(sys_stat64) /* 195 */
|
||||
.long SYMBOL_NAME(sys_lstat64)
|
||||
.long SYMBOL_NAME(sys_fstat64)
|
||||
.long SYMBOL_NAME(sys_chown)
|
||||
.long SYMBOL_NAME(sys_getuid)
|
||||
.long SYMBOL_NAME(sys_getgid) /* 200 */
|
||||
.long SYMBOL_NAME(sys_geteuid)
|
||||
.long SYMBOL_NAME(sys_getegid)
|
||||
.long SYMBOL_NAME(sys_setreuid)
|
||||
.long SYMBOL_NAME(sys_setregid)
|
||||
.long SYMBOL_NAME(sys_getgroups) /* 205 */
|
||||
.long SYMBOL_NAME(sys_setgroups)
|
||||
.long SYMBOL_NAME(sys_fchown)
|
||||
.long SYMBOL_NAME(sys_setresuid)
|
||||
.long SYMBOL_NAME(sys_getresuid)
|
||||
.long SYMBOL_NAME(sys_setresgid) /* 210 */
|
||||
.long SYMBOL_NAME(sys_getresgid)
|
||||
.long SYMBOL_NAME(sys_lchown)
|
||||
.long SYMBOL_NAME(sys_setuid)
|
||||
.long SYMBOL_NAME(sys_setgid)
|
||||
.long SYMBOL_NAME(sys_setfsuid) /* 215 */
|
||||
.long SYMBOL_NAME(sys_setfsgid)
|
||||
.long SYMBOL_NAME(sys_pivot_root)
|
||||
.long SYMBOL_NAME(sys_ni_syscall)
|
||||
.long SYMBOL_NAME(sys_ni_syscall)
|
||||
.long SYMBOL_NAME(sys_getdents64) /* 220 */
|
||||
.long SYMBOL_NAME(sys_fcntl64)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* reserved TUX */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* reserved Security */
|
||||
.long SYMBOL_NAME(sys_gettid)
|
||||
.long SYMBOL_NAME(sys_readahead) /* 225 */
|
||||
.long SYMBOL_NAME(sys_setxattr)
|
||||
.long SYMBOL_NAME(sys_lsetxattr)
|
||||
.long SYMBOL_NAME(sys_fsetxattr)
|
||||
.long SYMBOL_NAME(sys_getxattr)
|
||||
.long SYMBOL_NAME(sys_lgetxattr) /* 230 */
|
||||
.long SYMBOL_NAME(sys_fgetxattr)
|
||||
.long SYMBOL_NAME(sys_listxattr)
|
||||
.long SYMBOL_NAME(sys_llistxattr)
|
||||
.long SYMBOL_NAME(sys_flistxattr)
|
||||
.long SYMBOL_NAME(sys_removexattr) /* 235 */
|
||||
.long SYMBOL_NAME(sys_lremovexattr)
|
||||
.long SYMBOL_NAME(sys_fremovexattr)
|
||||
.long SYMBOL_NAME(sys_tkill)
|
||||
.long SYMBOL_NAME(sys_sendfile64)
|
||||
.long SYMBOL_NAME(sys_futex) /* 240 */
|
||||
.long SYMBOL_NAME(sys_sched_setaffinity)
|
||||
.long SYMBOL_NAME(sys_sched_getaffinity)
|
||||
.long SYMBOL_NAME(sys_ni_syscall)
|
||||
.long SYMBOL_NAME(sys_ni_syscall)
|
||||
.long SYMBOL_NAME(sys_io_setup) /* 245 */
|
||||
.long SYMBOL_NAME(sys_io_destroy)
|
||||
.long SYMBOL_NAME(sys_io_getevents)
|
||||
.long SYMBOL_NAME(sys_io_submit)
|
||||
.long SYMBOL_NAME(sys_io_cancel)
|
||||
.long SYMBOL_NAME(sys_fadvise64) /* 250 */
|
||||
.long SYMBOL_NAME(sys_ni_syscall)
|
||||
.long SYMBOL_NAME(sys_exit_group)
|
||||
.long SYMBOL_NAME(sys_lookup_dcookie)
|
||||
.long SYMBOL_NAME(sys_epoll_create)
|
||||
.long SYMBOL_NAME(sys_epoll_ctl) /* 255 */
|
||||
.long SYMBOL_NAME(sys_epoll_wait)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_remap_file_pages */
|
||||
.long SYMBOL_NAME(sys_set_tid_address)
|
||||
.long SYMBOL_NAME(sys_timer_create)
|
||||
.long SYMBOL_NAME(sys_timer_settime) /* 260 */
|
||||
.long SYMBOL_NAME(sys_timer_gettime)
|
||||
.long SYMBOL_NAME(sys_timer_getoverrun)
|
||||
.long SYMBOL_NAME(sys_timer_delete)
|
||||
.long SYMBOL_NAME(sys_clock_settime)
|
||||
.long SYMBOL_NAME(sys_clock_gettime) /* 265 */
|
||||
.long SYMBOL_NAME(sys_clock_getres)
|
||||
.long SYMBOL_NAME(sys_clock_nanosleep)
|
||||
.long SYMBOL_NAME(sys_statfs64)
|
||||
.long SYMBOL_NAME(sys_fstatfs64)
|
||||
.long SYMBOL_NAME(sys_tgkill) /* 270 */
|
||||
.long SYMBOL_NAME(sys_utimes)
|
||||
.long SYMBOL_NAME(sys_fadvise64_64)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_vserver */
|
||||
.long SYMBOL_NAME(sys_ni_syscall)
|
||||
.long SYMBOL_NAME(sys_get_mempolicy) /* 275 */
|
||||
.long SYMBOL_NAME(sys_set_mempolicy)
|
||||
.long SYMBOL_NAME(sys_mq_open)
|
||||
.long SYMBOL_NAME(sys_mq_unlink)
|
||||
.long SYMBOL_NAME(sys_mq_timedsend)
|
||||
.long SYMBOL_NAME(sys_mq_timedreceive) /* 280 */
|
||||
.long SYMBOL_NAME(sys_mq_notify)
|
||||
.long SYMBOL_NAME(sys_mq_getsetattr)
|
||||
.long SYMBOL_NAME(sys_waitid)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_kexec_load */
|
||||
.long SYMBOL_NAME(sys_add_key) /* 285 */
|
||||
.long SYMBOL_NAME(sys_request_key)
|
||||
.long SYMBOL_NAME(sys_keyctl)
|
||||
.long SYMBOL_NAME(sys_ioprio_set)
|
||||
.long SYMBOL_NAME(sys_ioprio_get) /* 290 */
|
||||
.long SYMBOL_NAME(sys_inotify_init)
|
||||
.long SYMBOL_NAME(sys_inotify_add_watch)
|
||||
.long SYMBOL_NAME(sys_inotify_rm_watch)
|
||||
.long SYMBOL_NAME(sys_migrate_pages)
|
||||
.long SYMBOL_NAME(sys_openat) /* 295 */
|
||||
.long SYMBOL_NAME(sys_mkdirat)
|
||||
.long SYMBOL_NAME(sys_mknodat)
|
||||
.long SYMBOL_NAME(sys_fchownat)
|
||||
.long SYMBOL_NAME(sys_futimesat)
|
||||
.long SYMBOL_NAME(sys_fstatat64) /* 300 */
|
||||
.long SYMBOL_NAME(sys_unlinkat)
|
||||
.long SYMBOL_NAME(sys_renameat)
|
||||
.long SYMBOL_NAME(sys_linkat)
|
||||
.long SYMBOL_NAME(sys_symlinkat)
|
||||
.long SYMBOL_NAME(sys_readlinkat) /* 305 */
|
||||
.long SYMBOL_NAME(sys_fchmodat)
|
||||
.long SYMBOL_NAME(sys_faccessat)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_pselect6 */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_ppoll */
|
||||
.long SYMBOL_NAME(sys_unshare) /* 310 */
|
||||
.long SYMBOL_NAME(sys_set_robust_list)
|
||||
.long SYMBOL_NAME(sys_get_robust_list)
|
||||
.long SYMBOL_NAME(sys_splice)
|
||||
.long SYMBOL_NAME(sys_sync_file_range)
|
||||
.long SYMBOL_NAME(sys_tee) /* 315 */
|
||||
.long SYMBOL_NAME(sys_vmsplice)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_move_pages */
|
||||
.long SYMBOL_NAME(sys_getcpu)
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_epoll_pwait */
|
||||
.long SYMBOL_NAME(sys_setns) /* 320 */
|
||||
_sys_call_table:
|
||||
CALL(sys_ni_syscall) /* 0 - old "setup()" system call*/
|
||||
CALL(sys_exit)
|
||||
CALL(sys_fork)
|
||||
CALL(sys_read)
|
||||
CALL(sys_write)
|
||||
CALL(sys_open) /* 5 */
|
||||
CALL(sys_close)
|
||||
CALL(sys_waitpid)
|
||||
CALL(sys_creat)
|
||||
CALL(sys_link)
|
||||
CALL(sys_unlink) /* 10 */
|
||||
CALL(sys_execve)
|
||||
CALL(sys_chdir)
|
||||
CALL(sys_time)
|
||||
CALL(sys_mknod)
|
||||
CALL(sys_chmod) /* 15 */
|
||||
CALL(sys_chown16)
|
||||
CALL(sys_ni_syscall) /* old break syscall holder */
|
||||
CALL(sys_stat)
|
||||
CALL(sys_lseek)
|
||||
CALL(sys_getpid) /* 20 */
|
||||
CALL(sys_mount)
|
||||
CALL(sys_oldumount)
|
||||
CALL(sys_setuid16)
|
||||
CALL(sys_getuid16)
|
||||
CALL(sys_stime) /* 25 */
|
||||
CALL(sys_ptrace)
|
||||
CALL(sys_alarm)
|
||||
CALL(sys_fstat)
|
||||
CALL(sys_pause)
|
||||
CALL(sys_utime) /* 30 */
|
||||
CALL(sys_ni_syscall) /* old stty syscall holder */
|
||||
CALL(sys_ni_syscall) /* old gtty syscall holder */
|
||||
CALL(sys_access)
|
||||
CALL(sys_nice)
|
||||
CALL(sys_ni_syscall) /* 35 old ftime syscall holder */
|
||||
CALL(sys_sync)
|
||||
CALL(sys_kill)
|
||||
CALL(sys_rename)
|
||||
CALL(sys_mkdir)
|
||||
CALL(sys_rmdir) /* 40 */
|
||||
CALL(sys_dup)
|
||||
CALL(sys_pipe)
|
||||
CALL(sys_times)
|
||||
CALL(sys_ni_syscall) /* old prof syscall holder */
|
||||
CALL(sys_brk) /* 45 */
|
||||
CALL(sys_setgid16)
|
||||
CALL(sys_getgid16)
|
||||
CALL(sys_signal)
|
||||
CALL(sys_geteuid16)
|
||||
CALL(sys_getegid16) /* 50 */
|
||||
CALL(sys_acct)
|
||||
CALL(sys_umount) /* recycled never used phys() */
|
||||
CALL(sys_ni_syscall) /* old lock syscall holder */
|
||||
CALL(sys_ioctl)
|
||||
CALL(sys_fcntl) /* 55 */
|
||||
CALL(sys_ni_syscall) /* old mpx syscall holder */
|
||||
CALL(sys_setpgid)
|
||||
CALL(sys_ni_syscall) /* old ulimit syscall holder */
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_umask) /* 60 */
|
||||
CALL(sys_chroot)
|
||||
CALL(sys_ustat)
|
||||
CALL(sys_dup2)
|
||||
CALL(sys_getppid)
|
||||
CALL(sys_getpgrp) /* 65 */
|
||||
CALL(sys_setsid)
|
||||
CALL(sys_sigaction)
|
||||
CALL(sys_sgetmask)
|
||||
CALL(sys_ssetmask)
|
||||
CALL(sys_setreuid16) /* 70 */
|
||||
CALL(sys_setregid16)
|
||||
CALL(sys_sigsuspend)
|
||||
CALL(sys_sigpending)
|
||||
CALL(sys_sethostname)
|
||||
CALL(sys_setrlimit) /* 75 */
|
||||
CALL(sys_old_getrlimit)
|
||||
CALL(sys_getrusage)
|
||||
CALL(sys_gettimeofday)
|
||||
CALL(sys_settimeofday)
|
||||
CALL(sys_getgroups16) /* 80 */
|
||||
CALL(sys_setgroups16)
|
||||
CALL(sys_old_select)
|
||||
CALL(sys_symlink)
|
||||
CALL(sys_lstat)
|
||||
CALL(sys_readlink) /* 85 */
|
||||
CALL(sys_uselib)
|
||||
CALL(sys_swapon)
|
||||
CALL(sys_reboot)
|
||||
CALL(sys_old_readdir)
|
||||
CALL(sys_old_mmap) /* 90 */
|
||||
CALL(sys_munmap)
|
||||
CALL(sys_truncate)
|
||||
CALL(sys_ftruncate)
|
||||
CALL(sys_fchmod)
|
||||
CALL(sys_fchown16) /* 95 */
|
||||
CALL(sys_getpriority)
|
||||
CALL(sys_setpriority)
|
||||
CALL(sys_ni_syscall) /* old profil syscall holder */
|
||||
CALL(sys_statfs)
|
||||
CALL(sys_fstatfs) /* 100 */
|
||||
CALL(sys_ni_syscall) /* ioperm for i386 */
|
||||
CALL(sys_socketcall)
|
||||
CALL(sys_syslog)
|
||||
CALL(sys_setitimer)
|
||||
CALL(sys_getitimer) /* 105 */
|
||||
CALL(sys_newstat)
|
||||
CALL(sys_newlstat)
|
||||
CALL(sys_newfstat)
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_ni_syscall) /* iopl for i386 */ /* 110 */
|
||||
CALL(sys_vhangup)
|
||||
CALL(sys_ni_syscall) /* obsolete idle() syscall */
|
||||
CALL(sys_ni_syscall) /* vm86old for i386 */
|
||||
CALL(sys_wait4)
|
||||
CALL(sys_swapoff) /* 115 */
|
||||
CALL(sys_sysinfo)
|
||||
CALL(sys_ipc)
|
||||
CALL(sys_fsync)
|
||||
CALL(sys_sigreturn)
|
||||
CALL(sys_clone) /* 120 */
|
||||
CALL(sys_setdomainname)
|
||||
CALL(sys_newuname)
|
||||
CALL(sys_cacheflush) /* modify_ldt for i386 */
|
||||
CALL(sys_adjtimex)
|
||||
CALL(sys_ni_syscall) /* 125 sys_mprotect */
|
||||
CALL(sys_sigprocmask)
|
||||
CALL(sys_ni_syscall) /* sys_create_module */
|
||||
CALL(sys_init_module)
|
||||
CALL(sys_delete_module)
|
||||
CALL(sys_ni_syscall) /* 130 sys_get_kernel_syms */
|
||||
CALL(sys_quotactl)
|
||||
CALL(sys_getpgid)
|
||||
CALL(sys_fchdir)
|
||||
CALL(sys_bdflush)
|
||||
CALL(sys_sysfs) /* 135 */
|
||||
CALL(sys_personality)
|
||||
CALL(sys_ni_syscall) /* for afs_syscall */
|
||||
CALL(sys_setfsuid16)
|
||||
CALL(sys_setfsgid16)
|
||||
CALL(sys_llseek) /* 140 */
|
||||
CALL(sys_getdents)
|
||||
CALL(sys_select)
|
||||
CALL(sys_flock)
|
||||
CALL(sys_ni_syscall) /* sys_msync */
|
||||
CALL(sys_readv) /* 145 */
|
||||
CALL(sys_writev)
|
||||
CALL(sys_getsid)
|
||||
CALL(sys_fdatasync)
|
||||
CALL(sys_sysctl)
|
||||
CALL(sys_ni_syscall) /* 150 sys_mlock */
|
||||
CALL(sys_ni_syscall) /* sys_munlock */
|
||||
CALL(sys_ni_syscall) /* sys_mlockall */
|
||||
CALL(sys_ni_syscall) /* sys_munlockall */
|
||||
CALL(sys_sched_setparam)
|
||||
CALL(sys_sched_getparam) /* 155 */
|
||||
CALL(sys_sched_setscheduler)
|
||||
CALL(sys_sched_getscheduler)
|
||||
CALL(sys_sched_yield)
|
||||
CALL(sys_sched_get_priority_max)
|
||||
CALL(sys_sched_get_priority_min) /* 160 */
|
||||
CALL(sys_sched_rr_get_interval)
|
||||
CALL(sys_nanosleep)
|
||||
CALL(sys_ni_syscall) /* sys_mremap */
|
||||
CALL(sys_setresuid16)
|
||||
CALL(sys_getresuid16) /* 165 */
|
||||
CALL(sys_ni_syscall) /* for vm86 */
|
||||
CALL(sys_ni_syscall) /* sys_query_module */
|
||||
CALL(sys_poll)
|
||||
CALL(sys_ni_syscall) /* old nfsservctl */
|
||||
CALL(sys_setresgid16) /* 170 */
|
||||
CALL(sys_getresgid16)
|
||||
CALL(sys_prctl)
|
||||
CALL(sys_rt_sigreturn)
|
||||
CALL(sys_rt_sigaction)
|
||||
CALL(sys_rt_sigprocmask) /* 175 */
|
||||
CALL(sys_rt_sigpending)
|
||||
CALL(sys_rt_sigtimedwait)
|
||||
CALL(sys_rt_sigqueueinfo)
|
||||
CALL(sys_rt_sigsuspend)
|
||||
CALL(sys_pread64) /* 180 */
|
||||
CALL(sys_pwrite64)
|
||||
CALL(sys_lchown16);
|
||||
CALL(sys_getcwd)
|
||||
CALL(sys_capget)
|
||||
CALL(sys_capset) /* 185 */
|
||||
CALL(sys_sigaltstack)
|
||||
CALL(sys_sendfile)
|
||||
CALL(sys_ni_syscall) /* streams1 */
|
||||
CALL(sys_ni_syscall) /* streams2 */
|
||||
CALL(sys_vfork) /* 190 */
|
||||
CALL(sys_getrlimit)
|
||||
CALL(sys_mmap_pgoff)
|
||||
CALL(sys_truncate64)
|
||||
CALL(sys_ftruncate64)
|
||||
CALL(sys_stat64) /* 195 */
|
||||
CALL(sys_lstat64)
|
||||
CALL(sys_fstat64)
|
||||
CALL(sys_chown)
|
||||
CALL(sys_getuid)
|
||||
CALL(sys_getgid) /* 200 */
|
||||
CALL(sys_geteuid)
|
||||
CALL(sys_getegid)
|
||||
CALL(sys_setreuid)
|
||||
CALL(sys_setregid)
|
||||
CALL(sys_getgroups) /* 205 */
|
||||
CALL(sys_setgroups)
|
||||
CALL(sys_fchown)
|
||||
CALL(sys_setresuid)
|
||||
CALL(sys_getresuid)
|
||||
CALL(sys_setresgid) /* 210 */
|
||||
CALL(sys_getresgid)
|
||||
CALL(sys_lchown)
|
||||
CALL(sys_setuid)
|
||||
CALL(sys_setgid)
|
||||
CALL(sys_setfsuid) /* 215 */
|
||||
CALL(sys_setfsgid)
|
||||
CALL(sys_pivot_root)
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_getdents64) /* 220 */
|
||||
CALL(sys_fcntl64)
|
||||
CALL(sys_ni_syscall) /* reserved TUX */
|
||||
CALL(sys_ni_syscall) /* reserved Security */
|
||||
CALL(sys_gettid)
|
||||
CALL(sys_readahead) /* 225 */
|
||||
CALL(sys_setxattr)
|
||||
CALL(sys_lsetxattr)
|
||||
CALL(sys_fsetxattr)
|
||||
CALL(sys_getxattr)
|
||||
CALL(sys_lgetxattr) /* 230 */
|
||||
CALL(sys_fgetxattr)
|
||||
CALL(sys_listxattr)
|
||||
CALL(sys_llistxattr)
|
||||
CALL(sys_flistxattr)
|
||||
CALL(sys_removexattr) /* 235 */
|
||||
CALL(sys_lremovexattr)
|
||||
CALL(sys_fremovexattr)
|
||||
CALL(sys_tkill)
|
||||
CALL(sys_sendfile64)
|
||||
CALL(sys_futex) /* 240 */
|
||||
CALL(sys_sched_setaffinity)
|
||||
CALL(sys_sched_getaffinity)
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_io_setup) /* 245 */
|
||||
CALL(sys_io_destroy)
|
||||
CALL(sys_io_getevents)
|
||||
CALL(sys_io_submit)
|
||||
CALL(sys_io_cancel)
|
||||
CALL(sys_fadvise64) /* 250 */
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_exit_group)
|
||||
CALL(sys_lookup_dcookie)
|
||||
CALL(sys_epoll_create)
|
||||
CALL(sys_epoll_ctl) /* 255 */
|
||||
CALL(sys_epoll_wait)
|
||||
CALL(sys_ni_syscall) /* sys_remap_file_pages */
|
||||
CALL(sys_set_tid_address)
|
||||
CALL(sys_timer_create)
|
||||
CALL(sys_timer_settime) /* 260 */
|
||||
CALL(sys_timer_gettime)
|
||||
CALL(sys_timer_getoverrun)
|
||||
CALL(sys_timer_delete)
|
||||
CALL(sys_clock_settime)
|
||||
CALL(sys_clock_gettime) /* 265 */
|
||||
CALL(sys_clock_getres)
|
||||
CALL(sys_clock_nanosleep)
|
||||
CALL(sys_statfs64)
|
||||
CALL(sys_fstatfs64)
|
||||
CALL(sys_tgkill) /* 270 */
|
||||
CALL(sys_utimes)
|
||||
CALL(sys_fadvise64_64)
|
||||
CALL(sys_ni_syscall) /* sys_vserver */
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_get_mempolicy) /* 275 */
|
||||
CALL(sys_set_mempolicy)
|
||||
CALL(sys_mq_open)
|
||||
CALL(sys_mq_unlink)
|
||||
CALL(sys_mq_timedsend)
|
||||
CALL(sys_mq_timedreceive) /* 280 */
|
||||
CALL(sys_mq_notify)
|
||||
CALL(sys_mq_getsetattr)
|
||||
CALL(sys_waitid)
|
||||
CALL(sys_ni_syscall) /* sys_kexec_load */
|
||||
CALL(sys_add_key) /* 285 */
|
||||
CALL(sys_request_key)
|
||||
CALL(sys_keyctl)
|
||||
CALL(sys_ioprio_set)
|
||||
CALL(sys_ioprio_get) /* 290 */
|
||||
CALL(sys_inotify_init)
|
||||
CALL(sys_inotify_add_watch)
|
||||
CALL(sys_inotify_rm_watch)
|
||||
CALL(sys_migrate_pages)
|
||||
CALL(sys_openat) /* 295 */
|
||||
CALL(sys_mkdirat)
|
||||
CALL(sys_mknodat)
|
||||
CALL(sys_fchownat)
|
||||
CALL(sys_futimesat)
|
||||
CALL(sys_fstatat64) /* 300 */
|
||||
CALL(sys_unlinkat)
|
||||
CALL(sys_renameat)
|
||||
CALL(sys_linkat)
|
||||
CALL(sys_symlinkat)
|
||||
CALL(sys_readlinkat) /* 305 */
|
||||
CALL(sys_fchmodat)
|
||||
CALL(sys_faccessat)
|
||||
CALL(sys_ni_syscall) /* sys_pselect6 */
|
||||
CALL(sys_ni_syscall) /* sys_ppoll */
|
||||
CALL(sys_unshare) /* 310 */
|
||||
CALL(sys_set_robust_list)
|
||||
CALL(sys_get_robust_list)
|
||||
CALL(sys_splice)
|
||||
CALL(sys_sync_file_range)
|
||||
CALL(sys_tee) /* 315 */
|
||||
CALL(sys_vmsplice)
|
||||
CALL(sys_ni_syscall) /* sys_move_pages */
|
||||
CALL(sys_getcpu)
|
||||
CALL(sys_ni_syscall) /* sys_epoll_pwait */
|
||||
CALL(sys_setns) /* 320 */
|
||||
|
@ -9,10 +9,10 @@
|
||||
.h8300s
|
||||
#endif
|
||||
.text
|
||||
.global SYMBOL_NAME(abs)
|
||||
.global _abs
|
||||
|
||||
;;; int abs(int n)
|
||||
SYMBOL_NAME_LABEL(abs)
|
||||
_abs:
|
||||
mov.l er0,er0
|
||||
bpl 1f
|
||||
neg.l er0
|
||||
|
@ -10,10 +10,10 @@
|
||||
#endif
|
||||
|
||||
.text
|
||||
.global SYMBOL_NAME(memcpy)
|
||||
.global _memcpy
|
||||
|
||||
;;; void *memcpy(void *to, void *from, size_t n)
|
||||
SYMBOL_NAME_LABEL(memcpy)
|
||||
_memcpy:
|
||||
mov.l er2,er2
|
||||
bne 1f
|
||||
rts
|
||||
|
@ -10,13 +10,13 @@
|
||||
#endif
|
||||
.text
|
||||
|
||||
.global SYMBOL_NAME(memset)
|
||||
.global _memset
|
||||
|
||||
;;void *memset(*ptr, int c, size_t count)
|
||||
;; ptr = er0
|
||||
;; c = er1(r1l)
|
||||
;; count = er2
|
||||
SYMBOL_NAME_LABEL(memset)
|
||||
_memset:
|
||||
btst #0,r0l
|
||||
beq 2f
|
||||
|
||||
|
@ -22,10 +22,10 @@
|
||||
#define RAMEND CONFIG_BLKDEV_RESERVE_ADDRESS
|
||||
#endif
|
||||
|
||||
.global SYMBOL_NAME(_start)
|
||||
.global SYMBOL_NAME(command_line)
|
||||
.global SYMBOL_NAME(_platform_gpio_table)
|
||||
.global SYMBOL_NAME(_target_name)
|
||||
.global __start
|
||||
.global _command_line
|
||||
.global __platform_gpio_table
|
||||
.global __target_name
|
||||
|
||||
.h8300h
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
.file "crt0_ram.S"
|
||||
|
||||
/* CPU Reset entry */
|
||||
SYMBOL_NAME_LABEL(_start)
|
||||
__start:
|
||||
mov.l #RAMEND,sp
|
||||
ldc #0x80,ccr
|
||||
|
||||
@ -59,13 +59,13 @@ SYMBOL_NAME_LABEL(_start)
|
||||
|
||||
/* copy kernel commandline */
|
||||
mov.l #COMMAND_START,er5
|
||||
mov.l #SYMBOL_NAME(command_line),er6
|
||||
mov.l #_command_line,er6
|
||||
mov.w #512,r4
|
||||
eepmov.w
|
||||
|
||||
/* uClinux kernel start */
|
||||
ldc #0x90,ccr /* running kernel */
|
||||
mov.l #SYMBOL_NAME(init_thread_union),sp
|
||||
mov.l #_init_thread_union,sp
|
||||
add.l #0x2000,sp
|
||||
jsr @_start_kernel
|
||||
_exit:
|
||||
@ -107,4 +107,4 @@ __target_name:
|
||||
.asciz "AE-3068"
|
||||
|
||||
.section .bootvec,"ax"
|
||||
jmp @SYMBOL_NAME(_start)
|
||||
jmp @__start
|
||||
|
@ -22,10 +22,10 @@
|
||||
#define RAMEND CONFIG_BLKDEV_RESERVE_ADDRESS
|
||||
#endif
|
||||
|
||||
.global SYMBOL_NAME(_start)
|
||||
.global SYMBOL_NAME(command_line)
|
||||
.global SYMBOL_NAME(_platform_gpio_table)
|
||||
.global SYMBOL_NAME(_target_name)
|
||||
.global __start
|
||||
.global _command_line
|
||||
.global __platform_gpio_table
|
||||
.global __target_name
|
||||
|
||||
.h8300h
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
.file "crt0_ram.S"
|
||||
|
||||
/* CPU Reset entry */
|
||||
SYMBOL_NAME_LABEL(_start)
|
||||
__start:
|
||||
mov.l #RAMEND,sp
|
||||
ldc #0x80,ccr
|
||||
|
||||
@ -59,13 +59,13 @@ SYMBOL_NAME_LABEL(_start)
|
||||
|
||||
/* copy kernel commandline */
|
||||
mov.l #COMMAND_START,er5
|
||||
mov.l #SYMBOL_NAME(command_line),er6
|
||||
mov.l #_command_line,er6
|
||||
mov.w #512,r4
|
||||
eepmov.w
|
||||
|
||||
/* uClinux kernel start */
|
||||
ldc #0x90,ccr /* running kernel */
|
||||
mov.l #SYMBOL_NAME(init_thread_union),sp
|
||||
mov.l #_init_thread_union,sp
|
||||
add.l #0x2000,sp
|
||||
jsr @_start_kernel
|
||||
_exit:
|
||||
|
@ -12,17 +12,17 @@
|
||||
|
||||
#include <asm/linkage.h>
|
||||
|
||||
.global SYMBOL_NAME(_start)
|
||||
.global SYMBOL_NAME(_command_line)
|
||||
.global SYMBOL_NAME(_platform_gpio_table)
|
||||
.global SYMBOL_NAME(_target_name)
|
||||
.global __start
|
||||
.global __command_line
|
||||
.global __platform_gpio_table
|
||||
.global __target_name
|
||||
|
||||
.h8300h
|
||||
.section .text
|
||||
.file "crt0_rom.S"
|
||||
|
||||
/* CPU Reset entry */
|
||||
SYMBOL_NAME_LABEL(_start)
|
||||
__start:
|
||||
mov.l #__ramend,sp
|
||||
ldc #0x80,ccr
|
||||
|
||||
@ -60,13 +60,13 @@ SYMBOL_NAME_LABEL(_start)
|
||||
|
||||
/* copy kernel commandline */
|
||||
mov.l #COMMAND_START,er5
|
||||
mov.l #SYMBOL_NAME(_command_line),er6
|
||||
mov.l #__command_line,er6
|
||||
mov.w #512,r4
|
||||
eepmov.w
|
||||
|
||||
/* linux kernel start */
|
||||
ldc #0x90,ccr /* running kernel */
|
||||
mov.l #SYMBOL_NAME(init_thread_union),sp
|
||||
mov.l #_init_thread_union,sp
|
||||
add.l #0x2000,sp
|
||||
jsr @_start_kernel
|
||||
_exit:
|
||||
|
@ -22,10 +22,10 @@
|
||||
#define RAMEND CONFIG_BLKDEV_RESERVE_ADDRESS
|
||||
#endif
|
||||
|
||||
.global SYMBOL_NAME(_start)
|
||||
.global SYMBOL_NAME(command_line)
|
||||
.global SYMBOL_NAME(_platform_gpio_table)
|
||||
.global SYMBOL_NAME(_target_name)
|
||||
.global __start
|
||||
.global _command_line
|
||||
.global __platform_gpio_table
|
||||
.global __target_name
|
||||
|
||||
.h8300h
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
.file "crt0_ram.S"
|
||||
|
||||
/* CPU Reset entry */
|
||||
SYMBOL_NAME_LABEL(_start)
|
||||
__start:
|
||||
mov.l #RAMEND,sp
|
||||
ldc #0x80,ccr
|
||||
|
||||
@ -59,13 +59,13 @@ SYMBOL_NAME_LABEL(_start)
|
||||
|
||||
/* copy kernel commandline */
|
||||
mov.l #COMMAND_START,er5
|
||||
mov.l #SYMBOL_NAME(command_line),er6
|
||||
mov.l #_command_line,er6
|
||||
mov.w #512,r4
|
||||
eepmov.w
|
||||
|
||||
/* uClinux kernel start */
|
||||
ldc #0x90,ccr /* running kernel */
|
||||
mov.l #SYMBOL_NAME(init_thread_union),sp
|
||||
mov.l #_init_thread_union,sp
|
||||
add.l #0x2000,sp
|
||||
jsr @_start_kernel
|
||||
_exit:
|
||||
@ -107,4 +107,4 @@ __target_name:
|
||||
.asciz "H8MAX"
|
||||
|
||||
.section .bootvec,"ax"
|
||||
jmp @SYMBOL_NAME(_start)
|
||||
jmp @__start
|
||||
|
@ -23,10 +23,10 @@
|
||||
#define RAMEND CONFIG_BLKDEV_RESERVE_ADDRESS
|
||||
#endif
|
||||
|
||||
.global SYMBOL_NAME(_start)
|
||||
.global SYMBOL_NAME(_command_line)
|
||||
.global SYMBOL_NAME(_platform_gpio_table)
|
||||
.global SYMBOL_NAME(_target_name)
|
||||
.global __start
|
||||
.global __command_line
|
||||
.global __platform_gpio_table
|
||||
.global __target_name
|
||||
|
||||
.h8300s
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
.file "crt0_ram.S"
|
||||
|
||||
/* CPU Reset entry */
|
||||
SYMBOL_NAME_LABEL(_start)
|
||||
__start:
|
||||
mov.l #RAMEND,sp
|
||||
ldc #0x80,ccr
|
||||
ldc #0x00,exr
|
||||
@ -66,13 +66,13 @@ SYMBOL_NAME_LABEL(_start)
|
||||
|
||||
/* copy kernel commandline */
|
||||
mov.l #COMMAND_START,er5
|
||||
mov.l #SYMBOL_NAME(command_line),er6
|
||||
mov.l #_command_line,er6
|
||||
mov.w #512,r4
|
||||
eepmov.w
|
||||
|
||||
/* uClinux kernel start */
|
||||
ldc #0x90,ccr /* running kernel */
|
||||
mov.l #SYMBOL_NAME(init_thread_union),sp
|
||||
mov.l #_init_thread_union,sp
|
||||
add.l #0x2000,sp
|
||||
jsr @_start_kernel
|
||||
_exit:
|
||||
@ -127,4 +127,4 @@ __target_name:
|
||||
.asciz "EDOSK-2674"
|
||||
|
||||
.section .bootvec,"ax"
|
||||
jmp @SYMBOL_NAME(_start)
|
||||
jmp @__start
|
||||
|
@ -13,17 +13,17 @@
|
||||
#include <asm/linkage.h>
|
||||
#include <asm/regs267x.h>
|
||||
|
||||
.global SYMBOL_NAME(_start)
|
||||
.global SYMBOL_NAME(_command_line)
|
||||
.global SYMBOL_NAME(_platform_gpio_table)
|
||||
.global SYMBOL_NAME(_target_name)
|
||||
.global __start
|
||||
.global __command_line
|
||||
.global __platform_gpio_table
|
||||
.global __target_name
|
||||
|
||||
.h8300s
|
||||
.section .text
|
||||
.file "crt0_rom.S"
|
||||
|
||||
/* CPU Reset entry */
|
||||
SYMBOL_NAME_LABEL(_start)
|
||||
__start:
|
||||
mov.l #__ramend,sp
|
||||
ldc #0x80,ccr
|
||||
ldc #0,exr
|
||||
@ -82,13 +82,13 @@ SYMBOL_NAME_LABEL(_start)
|
||||
|
||||
/* copy kernel commandline */
|
||||
mov.l #COMMAND_START,er5
|
||||
mov.l #SYMBOL_NAME(_command_line),er6
|
||||
mov.l #__command_line,er6
|
||||
mov.w #512,r4
|
||||
eepmov.w
|
||||
|
||||
/* linux kernel start */
|
||||
ldc #0x90,ccr /* running kernel */
|
||||
mov.l #SYMBOL_NAME(init_thread_union),sp
|
||||
mov.l #_init_thread_union,sp
|
||||
add.l #0x2000,sp
|
||||
jsr @_start_kernel
|
||||
_exit:
|
||||
|
@ -23,10 +23,10 @@
|
||||
#define RAMEND CONFIG_BLKDEV_RESERVE_ADDRESS
|
||||
#endif
|
||||
|
||||
.global SYMBOL_NAME(_start)
|
||||
.global SYMBOL_NAME(_command_line)
|
||||
.global SYMBOL_NAME(_platform_gpio_table)
|
||||
.global SYMBOL_NAME(_target_name)
|
||||
.global __start
|
||||
.global __command_line
|
||||
.global __platform_gpio_table
|
||||
.global __target_name
|
||||
|
||||
.h8300s
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
.file "crt0_ram.S"
|
||||
|
||||
/* CPU Reset entry */
|
||||
SYMBOL_NAME_LABEL(_start)
|
||||
__start:
|
||||
mov.l #RAMEND,sp
|
||||
ldc #0x80,ccr
|
||||
ldc #0x00,exr
|
||||
@ -63,13 +63,13 @@ SYMBOL_NAME_LABEL(_start)
|
||||
|
||||
/* copy kernel commandline */
|
||||
mov.l #COMMAND_START,er5
|
||||
mov.l #SYMBOL_NAME(command_line),er6
|
||||
mov.l #_command_line,er6
|
||||
mov.w #512,r4
|
||||
eepmov.w
|
||||
|
||||
/* uClinux kernel start */
|
||||
ldc #0x90,ccr /* running kernel */
|
||||
mov.l #SYMBOL_NAME(init_thread_union),sp
|
||||
mov.l #_init_thread_union,sp
|
||||
add.l #0x2000,sp
|
||||
jsr @_start_kernel
|
||||
_exit:
|
||||
@ -124,4 +124,4 @@ __target_name:
|
||||
.asciz "generic"
|
||||
|
||||
.section .bootvec,"ax"
|
||||
jmp @SYMBOL_NAME(_start)
|
||||
jmp @__start
|
||||
|
@ -13,17 +13,17 @@
|
||||
#include <asm/linkage.h>
|
||||
#include <asm/regs267x.h>
|
||||
|
||||
.global SYMBOL_NAME(_start)
|
||||
.global SYMBOL_NAME(_command_line)
|
||||
.global SYMBOL_NAME(_platform_gpio_table)
|
||||
.global SYMBOL_NAME(_target_name)
|
||||
.global __start
|
||||
.global __command_line
|
||||
.global __platform_gpio_table
|
||||
.global __target_name
|
||||
|
||||
.h8300s
|
||||
.section .text
|
||||
.file "crt0_rom.S"
|
||||
|
||||
/* CPU Reset entry */
|
||||
SYMBOL_NAME_LABEL(_start)
|
||||
__start:
|
||||
mov.l #__ramend,sp
|
||||
ldc #0x80,ccr
|
||||
ldc #0,exr
|
||||
@ -61,7 +61,7 @@ SYMBOL_NAME_LABEL(_start)
|
||||
|
||||
/* linux kernel start */
|
||||
ldc #0x90,ccr /* running kernel */
|
||||
mov.l #SYMBOL_NAME(init_thread_union),sp
|
||||
mov.l #_init_thread_union,sp
|
||||
add.l #0x2000,sp
|
||||
jsr @_start_kernel
|
||||
_exit:
|
||||
|
@ -77,7 +77,7 @@ int main(void)
|
||||
DEFINE(BIR_SIZE, offsetof(struct bi_record, size));
|
||||
DEFINE(BIR_DATA, offsetof(struct bi_record, data));
|
||||
|
||||
/* offsets into font_desc (drivers/video/console/font.h) */
|
||||
/* offsets into the font_desc struct */
|
||||
DEFINE(FONT_DESC_IDX, offsetof(struct font_desc, idx));
|
||||
DEFINE(FONT_DESC_NAME, offsetof(struct font_desc, name));
|
||||
DEFINE(FONT_DESC_WIDTH, offsetof(struct font_desc, width));
|
||||
|
@ -66,3 +66,4 @@ generic-y += types.h
|
||||
generic-y += ucontext.h
|
||||
generic-y += user.h
|
||||
generic-y += word-at-a-time.h
|
||||
generic-y += xor.h
|
||||
|
@ -3,3 +3,4 @@ header-y +=
|
||||
|
||||
generic-y += clkdev.h
|
||||
generic-y += trace_clock.h
|
||||
generic-y += xor.h
|
||||
|
@ -1,6 +0,0 @@
|
||||
#ifndef _ASM_SCORE_DMA_MAPPING_H
|
||||
#define _ASM_SCORE_DMA_MAPPING_H
|
||||
|
||||
#include <asm-generic/dma-mapping-broken.h>
|
||||
|
||||
#endif /* _ASM_SCORE_DMA_MAPPING_H */
|
@ -17,7 +17,7 @@ OBJS := misc.o
|
||||
|
||||
# font.c and font.o
|
||||
CFLAGS_font.o := -Dstatic=
|
||||
$(obj)/font.c: $(srctree)/drivers/video/console/font_8x8.c
|
||||
$(obj)/font.c: $(srctree)/lib/fonts/font_8x8.c
|
||||
$(call cmd,shipped)
|
||||
|
||||
# piggy.S and piggy.o
|
||||
|
@ -206,33 +206,6 @@ static int cros_ec_keyb_work(struct notifier_block *nb,
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
/* Clear any keys in the buffer */
|
||||
static void cros_ec_keyb_clear_keyboard(struct cros_ec_keyb *ckdev)
|
||||
{
|
||||
uint8_t old_state[ckdev->cols];
|
||||
uint8_t new_state[ckdev->cols];
|
||||
unsigned long duration;
|
||||
int i, ret;
|
||||
|
||||
/*
|
||||
* Keep reading until we see that the scan state does not change.
|
||||
* That indicates that we are done.
|
||||
*
|
||||
* Assume that the EC keyscan buffer is at most 32 deep.
|
||||
*/
|
||||
duration = jiffies;
|
||||
ret = cros_ec_keyb_get_state(ckdev, new_state);
|
||||
for (i = 1; !ret && i < 32; i++) {
|
||||
memcpy(old_state, new_state, sizeof(old_state));
|
||||
ret = cros_ec_keyb_get_state(ckdev, new_state);
|
||||
if (0 == memcmp(old_state, new_state, sizeof(old_state)))
|
||||
break;
|
||||
}
|
||||
duration = jiffies - duration;
|
||||
dev_info(ckdev->dev, "Discarded %d keyscan(s) in %dus\n", i,
|
||||
jiffies_to_usecs(duration));
|
||||
}
|
||||
|
||||
static int cros_ec_keyb_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct cros_ec_device *ec = dev_get_drvdata(pdev->dev.parent);
|
||||
@ -299,6 +272,33 @@ static int cros_ec_keyb_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
/* Clear any keys in the buffer */
|
||||
static void cros_ec_keyb_clear_keyboard(struct cros_ec_keyb *ckdev)
|
||||
{
|
||||
uint8_t old_state[ckdev->cols];
|
||||
uint8_t new_state[ckdev->cols];
|
||||
unsigned long duration;
|
||||
int i, ret;
|
||||
|
||||
/*
|
||||
* Keep reading until we see that the scan state does not change.
|
||||
* That indicates that we are done.
|
||||
*
|
||||
* Assume that the EC keyscan buffer is at most 32 deep.
|
||||
*/
|
||||
duration = jiffies;
|
||||
ret = cros_ec_keyb_get_state(ckdev, new_state);
|
||||
for (i = 1; !ret && i < 32; i++) {
|
||||
memcpy(old_state, new_state, sizeof(old_state));
|
||||
ret = cros_ec_keyb_get_state(ckdev, new_state);
|
||||
if (0 == memcmp(old_state, new_state, sizeof(old_state)))
|
||||
break;
|
||||
}
|
||||
duration = jiffies - duration;
|
||||
dev_info(ckdev->dev, "Discarded %d keyscan(s) in %dus\n", i,
|
||||
jiffies_to_usecs(duration));
|
||||
}
|
||||
|
||||
static int cros_ec_keyb_resume(struct device *dev)
|
||||
{
|
||||
struct cros_ec_keyb *ckdev = dev_get_drvdata(dev);
|
||||
|
@ -220,7 +220,7 @@ if V4L_TEST_DRIVERS
|
||||
config VIDEO_VIVI
|
||||
tristate "Virtual Video Driver"
|
||||
depends on VIDEO_DEV && VIDEO_V4L2 && !SPARC32 && !SPARC64
|
||||
depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
|
||||
select FONT_SUPPORT
|
||||
select FONT_8x16
|
||||
select VIDEOBUF2_VMALLOC
|
||||
default n
|
||||
|
@ -36,7 +36,9 @@ if PARPORT
|
||||
config PARPORT_PC
|
||||
tristate "PC-style hardware"
|
||||
depends on (!SPARC64 || PCI) && !SPARC32 && !M32R && !FRV && !S390 && \
|
||||
(!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN && !XTENSA
|
||||
(!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN && \
|
||||
!XTENSA && !CRIS
|
||||
|
||||
---help---
|
||||
You should say Y here if you have a PC-style parallel port. All
|
||||
IBM PC compatible computers and some Alphas have PC-style
|
||||
|
@ -1,7 +1,8 @@
|
||||
config SOLO6X10
|
||||
tristate "Softlogic 6x10 MPEG codec cards"
|
||||
depends on PCI && VIDEO_DEV && SND && I2C
|
||||
depends on FONTS
|
||||
select FONT_SUPPORT
|
||||
select FONT_8x16
|
||||
select VIDEOBUF2_DMA_SG
|
||||
select VIDEOBUF2_DMA_CONTIG
|
||||
select SND_PCM
|
||||
|
@ -2,6 +2,7 @@
|
||||
config USB_SISUSBVGA
|
||||
tristate "USB 2.0 SVGA dongle support (Net2280/SiS315)"
|
||||
depends on (USB_MUSB_HDRC || USB_EHCI_HCD)
|
||||
select FONT_SUPPORT if USB_SISUSBVGA_CON
|
||||
---help---
|
||||
Say Y here if you intend to attach a USB2VGA dongle based on a
|
||||
Net2280 and a SiS315 chip.
|
||||
|
@ -6,7 +6,9 @@ menu "Console display driver support"
|
||||
|
||||
config VGA_CONSOLE
|
||||
bool "VGA text console" if EXPERT || !X86
|
||||
depends on !4xx && !8xx && !SPARC && !M68K && !PARISC && !FRV && !SUPERH && !BLACKFIN && !AVR32 && !MN10300 && (!ARM || ARCH_FOOTBRIDGE || ARCH_INTEGRATOR || ARCH_NETWINDER)
|
||||
depends on !4xx && !8xx && !SPARC && !M68K && !PARISC && !FRV && \
|
||||
!SUPERH && !BLACKFIN && !AVR32 && !MN10300 && !CRIS && \
|
||||
(!ARM || ARCH_FOOTBRIDGE || ARCH_INTEGRATOR || ARCH_NETWINDER)
|
||||
default y
|
||||
help
|
||||
Saying Y here will allow you to use Linux in text mode through a
|
||||
@ -62,6 +64,7 @@ config MDA_CONSOLE
|
||||
config SGI_NEWPORT_CONSOLE
|
||||
tristate "SGI Newport Console support"
|
||||
depends on SGI_IP22
|
||||
select FONT_SUPPORT
|
||||
help
|
||||
Say Y here if you want the console on the Newport aka XL graphics
|
||||
card of your Indy. Most people say Y here.
|
||||
@ -91,6 +94,7 @@ config FRAMEBUFFER_CONSOLE
|
||||
tristate "Framebuffer Console support"
|
||||
depends on FB
|
||||
select CRC32
|
||||
select FONT_SUPPORT
|
||||
help
|
||||
Low-level framebuffer-based console driver.
|
||||
|
||||
@ -123,120 +127,12 @@ config FRAMEBUFFER_CONSOLE_ROTATION
|
||||
config STI_CONSOLE
|
||||
bool "STI text console"
|
||||
depends on PARISC
|
||||
select FONT_SUPPORT
|
||||
default y
|
||||
help
|
||||
The STI console is the builtin display/keyboard on HP-PARISC
|
||||
machines. Say Y here to build support for it into your kernel.
|
||||
The alternative is to use your primary serial port as a console.
|
||||
|
||||
config FONTS
|
||||
bool "Select compiled-in fonts"
|
||||
depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
|
||||
help
|
||||
Say Y here if you would like to use fonts other than the default
|
||||
your frame buffer console usually use.
|
||||
|
||||
Note that the answer to this question won't directly affect the
|
||||
kernel: saying N will just cause the configurator to skip all
|
||||
the questions about foreign fonts.
|
||||
|
||||
If unsure, say N (the default choices are safe).
|
||||
|
||||
config FONT_8x8
|
||||
bool "VGA 8x8 font" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
|
||||
default y if !SPARC && !FONTS
|
||||
help
|
||||
This is the "high resolution" font for the VGA frame buffer (the one
|
||||
provided by the text console 80x50 (and higher) modes).
|
||||
|
||||
Note that this is a poor quality font. The VGA 8x16 font is quite a
|
||||
lot more readable.
|
||||
|
||||
Given the resolution provided by the frame buffer device, answer N
|
||||
here is safe.
|
||||
|
||||
config FONT_8x16
|
||||
bool "VGA 8x16 font" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE || SGI_NEWPORT_CONSOLE || STI_CONSOLE || USB_SISUSBVGA_CON
|
||||
default y if !SPARC && !FONTS
|
||||
help
|
||||
This is the "high resolution" font for the VGA frame buffer (the one
|
||||
provided by the VGA text console 80x25 mode.
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
config FONT_6x11
|
||||
bool "Mac console 6x11 font (not supported by all drivers)" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
|
||||
default y if !SPARC && !FONTS && MAC
|
||||
help
|
||||
Small console font with Macintosh-style high-half glyphs. Some Mac
|
||||
framebuffer drivers don't support this one at all.
|
||||
|
||||
config FONT_7x14
|
||||
bool "console 7x14 font (not supported by all drivers)" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE
|
||||
help
|
||||
Console font with characters just a bit smaller than the default.
|
||||
If the standard 8x16 font is a little too big for you, say Y.
|
||||
Otherwise, say N.
|
||||
|
||||
config FONT_PEARL_8x8
|
||||
bool "Pearl (old m68k) console 8x8 font" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE
|
||||
default y if !SPARC && !FONTS && AMIGA
|
||||
help
|
||||
Small console font with PC-style control-character and high-half
|
||||
glyphs.
|
||||
|
||||
config FONT_ACORN_8x8
|
||||
bool "Acorn console 8x8 font" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE
|
||||
default y if !SPARC && !FONTS && ARM && ARCH_ACORN
|
||||
help
|
||||
Small console font with PC-style control characters and high-half
|
||||
glyphs.
|
||||
|
||||
config FONT_MINI_4x6
|
||||
bool "Mini 4x6 font"
|
||||
depends on !SPARC && FONTS
|
||||
|
||||
config FONT_SUN8x16
|
||||
bool "Sparc console 8x16 font"
|
||||
depends on FRAMEBUFFER_CONSOLE && (!SPARC && FONTS || SPARC)
|
||||
help
|
||||
This is the high resolution console font for Sun machines. Say Y.
|
||||
|
||||
config FONT_SUN12x22
|
||||
bool "Sparc console 12x22 font (not supported by all drivers)"
|
||||
depends on FRAMEBUFFER_CONSOLE && (!SPARC && FONTS || SPARC)
|
||||
help
|
||||
This is the high resolution console font for Sun machines with very
|
||||
big letters (like the letters used in the SPARC PROM). If the
|
||||
standard font is unreadable for you, say Y, otherwise say N.
|
||||
|
||||
config FONT_10x18
|
||||
bool "console 10x18 font (not supported by all drivers)" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE
|
||||
help
|
||||
This is a high resolution console font for machines with very
|
||||
big letters. It fits between the sun 12x22 and the normal 8x16 font.
|
||||
If other fonts are too big or too small for you, say Y, otherwise say N.
|
||||
|
||||
config FONT_AUTOSELECT
|
||||
def_bool y
|
||||
depends on FRAMEBUFFER_CONSOLE || SGI_NEWPORT_CONSOLE || STI_CONSOLE || USB_SISUSBVGA_CON
|
||||
depends on !FONT_8x8
|
||||
depends on !FONT_6x11
|
||||
depends on !FONT_7x14
|
||||
depends on !FONT_PEARL_8x8
|
||||
depends on !FONT_ACORN_8x8
|
||||
depends on !FONT_MINI_4x6
|
||||
depends on !FONT_SUN8x16
|
||||
depends on !FONT_SUN12x22
|
||||
depends on !FONT_10x18
|
||||
select FONT_8x16
|
||||
|
||||
endmenu
|
||||
|
||||
|
@ -2,32 +2,12 @@
|
||||
# 5 Aug 1999, James Simmons, <mailto:jsimmons@users.sf.net>
|
||||
# Rewritten to use lists instead of if-statements.
|
||||
|
||||
# Font handling
|
||||
font-objs := fonts.o
|
||||
|
||||
font-objs-$(CONFIG_FONT_SUN8x16) += font_sun8x16.o
|
||||
font-objs-$(CONFIG_FONT_SUN12x22) += font_sun12x22.o
|
||||
font-objs-$(CONFIG_FONT_8x8) += font_8x8.o
|
||||
font-objs-$(CONFIG_FONT_8x16) += font_8x16.o
|
||||
font-objs-$(CONFIG_FONT_6x11) += font_6x11.o
|
||||
font-objs-$(CONFIG_FONT_7x14) += font_7x14.o
|
||||
font-objs-$(CONFIG_FONT_10x18) += font_10x18.o
|
||||
font-objs-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
|
||||
font-objs-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
|
||||
font-objs-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o
|
||||
|
||||
font-objs += $(font-objs-y)
|
||||
|
||||
obj-$(CONFIG_FONTS) += font.o
|
||||
|
||||
# Each configuration option enables a list of files.
|
||||
|
||||
obj-$(CONFIG_DUMMY_CONSOLE) += dummycon.o
|
||||
obj-$(CONFIG_SGI_NEWPORT_CONSOLE) += newport_con.o font.o
|
||||
obj-$(CONFIG_STI_CONSOLE) += sticon.o sticore.o font.o
|
||||
obj-$(CONFIG_SGI_NEWPORT_CONSOLE) += newport_con.o
|
||||
obj-$(CONFIG_STI_CONSOLE) += sticon.o sticore.o
|
||||
obj-$(CONFIG_VGA_CONSOLE) += vgacon.o
|
||||
obj-$(CONFIG_MDA_CONSOLE) += mdacon.o
|
||||
obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o softcursor.o
|
||||
obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o softcursor.o
|
||||
ifeq ($(CONFIG_FB_TILEBLITTING),y)
|
||||
obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += tileblit.o
|
||||
endif
|
||||
@ -36,8 +16,4 @@ obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon_rotate.o fbcon_cw.o fbcon_ud.o \
|
||||
fbcon_ccw.o
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_FB_STI) += sticore.o font.o
|
||||
|
||||
ifeq ($(CONFIG_USB_SISUSBVGA_CON),y)
|
||||
obj-$(CONFIG_USB_SISUSBVGA) += font.o
|
||||
endif
|
||||
obj-$(CONFIG_FB_STI) += sticore.o
|
||||
|
@ -410,4 +410,6 @@ config OID_REGISTRY
|
||||
config UCS2_STRING
|
||||
tristate
|
||||
|
||||
source "lib/fonts/Kconfig"
|
||||
|
||||
endmenu
|
||||
|
@ -153,6 +153,8 @@ interval_tree_test-objs := interval_tree_test_main.o interval_tree.o
|
||||
|
||||
obj-$(CONFIG_ASN1) += asn1_decoder.o
|
||||
|
||||
obj-$(CONFIG_FONT_SUPPORT) += fonts/
|
||||
|
||||
hostprogs-y := gen_crc32table
|
||||
clean-files := crc32table.h
|
||||
|
||||
|
117
lib/fonts/Kconfig
Normal file
117
lib/fonts/Kconfig
Normal file
@ -0,0 +1,117 @@
|
||||
#
|
||||
# Font configuration
|
||||
#
|
||||
|
||||
config FONT_SUPPORT
|
||||
tristate
|
||||
|
||||
if FONT_SUPPORT
|
||||
|
||||
config FONTS
|
||||
bool "Select compiled-in fonts"
|
||||
depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
|
||||
help
|
||||
Say Y here if you would like to use fonts other than the default
|
||||
your frame buffer console usually use.
|
||||
|
||||
Note that the answer to this question won't directly affect the
|
||||
kernel: saying N will just cause the configurator to skip all
|
||||
the questions about foreign fonts.
|
||||
|
||||
If unsure, say N (the default choices are safe).
|
||||
|
||||
config FONT_8x8
|
||||
bool "VGA 8x8 font" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
|
||||
default y if !SPARC && !FONTS
|
||||
help
|
||||
This is the "high resolution" font for the VGA frame buffer (the one
|
||||
provided by the text console 80x50 (and higher) modes).
|
||||
|
||||
Note that this is a poor quality font. The VGA 8x16 font is quite a
|
||||
lot more readable.
|
||||
|
||||
Given the resolution provided by the frame buffer device, answer N
|
||||
here is safe.
|
||||
|
||||
config FONT_8x16
|
||||
bool "VGA 8x16 font" if FONTS
|
||||
default y if !SPARC && !FONTS
|
||||
help
|
||||
This is the "high resolution" font for the VGA frame buffer (the one
|
||||
provided by the VGA text console 80x25 mode.
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
config FONT_6x11
|
||||
bool "Mac console 6x11 font (not supported by all drivers)" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE
|
||||
default y if !SPARC && !FONTS && MAC
|
||||
help
|
||||
Small console font with Macintosh-style high-half glyphs. Some Mac
|
||||
framebuffer drivers don't support this one at all.
|
||||
|
||||
config FONT_7x14
|
||||
bool "console 7x14 font (not supported by all drivers)" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE
|
||||
help
|
||||
Console font with characters just a bit smaller than the default.
|
||||
If the standard 8x16 font is a little too big for you, say Y.
|
||||
Otherwise, say N.
|
||||
|
||||
config FONT_PEARL_8x8
|
||||
bool "Pearl (old m68k) console 8x8 font" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE
|
||||
default y if !SPARC && !FONTS && AMIGA
|
||||
help
|
||||
Small console font with PC-style control-character and high-half
|
||||
glyphs.
|
||||
|
||||
config FONT_ACORN_8x8
|
||||
bool "Acorn console 8x8 font" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE
|
||||
default y if !SPARC && !FONTS && ARM && ARCH_ACORN
|
||||
help
|
||||
Small console font with PC-style control characters and high-half
|
||||
glyphs.
|
||||
|
||||
config FONT_MINI_4x6
|
||||
bool "Mini 4x6 font"
|
||||
depends on !SPARC && FONTS
|
||||
|
||||
config FONT_SUN8x16
|
||||
bool "Sparc console 8x16 font"
|
||||
depends on FRAMEBUFFER_CONSOLE && (!SPARC && FONTS || SPARC)
|
||||
help
|
||||
This is the high resolution console font for Sun machines. Say Y.
|
||||
|
||||
config FONT_SUN12x22
|
||||
bool "Sparc console 12x22 font (not supported by all drivers)"
|
||||
depends on FRAMEBUFFER_CONSOLE && (!SPARC && FONTS || SPARC)
|
||||
help
|
||||
This is the high resolution console font for Sun machines with very
|
||||
big letters (like the letters used in the SPARC PROM). If the
|
||||
standard font is unreadable for you, say Y, otherwise say N.
|
||||
|
||||
config FONT_10x18
|
||||
bool "console 10x18 font (not supported by all drivers)" if FONTS
|
||||
depends on FRAMEBUFFER_CONSOLE
|
||||
help
|
||||
This is a high resolution console font for machines with very
|
||||
big letters. It fits between the sun 12x22 and the normal 8x16 font.
|
||||
If other fonts are too big or too small for you, say Y, otherwise say N.
|
||||
|
||||
config FONT_AUTOSELECT
|
||||
def_bool y
|
||||
depends on !FONT_8x8
|
||||
depends on !FONT_6x11
|
||||
depends on !FONT_7x14
|
||||
depends on !FONT_PEARL_8x8
|
||||
depends on !FONT_ACORN_8x8
|
||||
depends on !FONT_MINI_4x6
|
||||
depends on !FONT_SUN8x16
|
||||
depends on !FONT_SUN12x22
|
||||
depends on !FONT_10x18
|
||||
select FONT_8x16
|
||||
|
||||
endif # FONT_SUPPORT
|
18
lib/fonts/Makefile
Normal file
18
lib/fonts/Makefile
Normal file
@ -0,0 +1,18 @@
|
||||
# Font handling
|
||||
|
||||
font-objs := fonts.o
|
||||
|
||||
font-objs-$(CONFIG_FONT_SUN8x16) += font_sun8x16.o
|
||||
font-objs-$(CONFIG_FONT_SUN12x22) += font_sun12x22.o
|
||||
font-objs-$(CONFIG_FONT_8x8) += font_8x8.o
|
||||
font-objs-$(CONFIG_FONT_8x16) += font_8x16.o
|
||||
font-objs-$(CONFIG_FONT_6x11) += font_6x11.o
|
||||
font-objs-$(CONFIG_FONT_7x14) += font_7x14.o
|
||||
font-objs-$(CONFIG_FONT_10x18) += font_10x18.o
|
||||
font-objs-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
|
||||
font-objs-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
|
||||
font-objs-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o
|
||||
|
||||
font-objs += $(font-objs-y)
|
||||
|
||||
obj-$(CONFIG_FONT_SUPPORT) += font.o
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* linux/drivers/video/fonts.c -- `Soft' font definitions
|
||||
* `Soft' font definitions
|
||||
*
|
||||
* Created 1995 by Geert Uytterhoeven
|
||||
* Rewritten 1998 by Martin Mares <mj@ucw.cz>
|
Loading…
Reference in New Issue
Block a user