mirror of
https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
synced 2025-10-29 15:28:50 +01:00
Fixed MTP to work with TWRP
This commit is contained in:
commit
f6dfaef42e
50820 changed files with 20846062 additions and 0 deletions
18
arch/m68k/68000/Makefile
Normal file
18
arch/m68k/68000/Makefile
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
##################################################
|
||||
#
|
||||
# Makefile for 68000 core based cpus
|
||||
#
|
||||
# 2012.10.21, Luis Alves <ljalvs@gmail.com>
|
||||
# Merged all 68000 based cpu's config
|
||||
# files into a single directory.
|
||||
#
|
||||
|
||||
# 68328, 68EZ328, 68VZ328
|
||||
|
||||
obj-y += entry.o ints.o timers.o
|
||||
obj-$(CONFIG_M68328) += m68328.o
|
||||
obj-$(CONFIG_M68EZ328) += m68EZ328.o
|
||||
obj-$(CONFIG_M68VZ328) += m68VZ328.o
|
||||
obj-$(CONFIG_ROM) += romvec.o
|
||||
|
||||
extra-y := head.o
|
||||
3204
arch/m68k/68000/bootlogo-vz.h
Normal file
3204
arch/m68k/68000/bootlogo-vz.h
Normal file
File diff suppressed because it is too large
Load diff
270
arch/m68k/68000/bootlogo.h
Normal file
270
arch/m68k/68000/bootlogo.h
Normal file
|
|
@ -0,0 +1,270 @@
|
|||
#define bootlogo_width 160
|
||||
#define bootlogo_height 160
|
||||
unsigned char __attribute__ ((aligned(16))) bootlogo_bits[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x40, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x08, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00,
|
||||
0x00, 0xff, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0xf8, 0x80, 0x0f,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x50, 0x04, 0x00, 0x00, 0x00, 0x78, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00,
|
||||
0x00, 0x78, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40,
|
||||
0xa8, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x70, 0x28, 0x01, 0x00, 0x00,
|
||||
0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x70,
|
||||
0x54, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x80, 0x01, 0x3a, 0x78, 0x80, 0x0e,
|
||||
0x50, 0xc0, 0x03, 0x0e, 0x00, 0x20, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00,
|
||||
0x00, 0x3e, 0xf0, 0x83, 0x1f, 0xfc, 0xe0, 0x0f, 0x78, 0xf8, 0x87, 0x1f,
|
||||
0x00, 0x18, 0x00, 0x30, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xf8, 0xc3,
|
||||
0x1f, 0xfc, 0xe0, 0x0f, 0x78, 0xf8, 0x87, 0x0f, 0x00, 0x20, 0x00, 0x10,
|
||||
0x55, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xc0, 0x03, 0x9f, 0xf3, 0x80, 0x0f,
|
||||
0x78, 0x80, 0xc7, 0x0e, 0x00, 0x18, 0x00, 0x20, 0xaa, 0x00, 0x00, 0x00,
|
||||
0x00, 0x1e, 0xe0, 0x03, 0x9f, 0xf1, 0x80, 0x07, 0x78, 0x80, 0x67, 0x00,
|
||||
0x00, 0x24, 0x00, 0x18, 0x55, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x01,
|
||||
0x5e, 0xf0, 0x80, 0x07, 0x3c, 0x00, 0x2f, 0x00, 0x00, 0x14, 0x00, 0x20,
|
||||
0xaa, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x01, 0x7f, 0xf0, 0x80, 0x07,
|
||||
0x3c, 0x00, 0x3f, 0x00, 0x00, 0x08, 0x00, 0x18, 0x55, 0x00, 0x00, 0x00,
|
||||
0x00, 0x0f, 0xe0, 0x00, 0x3f, 0xf0, 0xc0, 0x03, 0x1e, 0x00, 0x1f, 0x00,
|
||||
0x00, 0x14, 0x00, 0x28, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x0f, 0xf0, 0x00,
|
||||
0x1f, 0xf0, 0xc0, 0x03, 0x1f, 0x00, 0x1f, 0x00, 0x00, 0x04, 0x00, 0x0c,
|
||||
0x54, 0x00, 0x00, 0x00, 0x80, 0x07, 0x78, 0x00, 0x1f, 0x78, 0xc0, 0x03,
|
||||
0x1f, 0x00, 0x1e, 0x00, 0x00, 0x0a, 0x00, 0x12, 0xa8, 0x00, 0x00, 0x00,
|
||||
0x80, 0x07, 0x78, 0x00, 0x1f, 0x78, 0xe0, 0x03, 0x1f, 0x00, 0x1f, 0x00,
|
||||
0x00, 0x04, 0x00, 0x0a, 0x54, 0x00, 0x00, 0x00, 0x80, 0x07, 0x78, 0x80,
|
||||
0x0f, 0x78, 0xe0, 0x03, 0x1f, 0x00, 0x1e, 0x00, 0x00, 0x0a, 0x00, 0x08,
|
||||
0x50, 0x01, 0x00, 0x00, 0x84, 0x03, 0x78, 0x80, 0x07, 0x3c, 0xe0, 0xc1,
|
||||
0x0f, 0x00, 0x1f, 0x00, 0x00, 0x04, 0x00, 0x06, 0xa8, 0x00, 0x00, 0x00,
|
||||
0xc0, 0x03, 0x78, 0xc0, 0x07, 0x3c, 0xe0, 0xc1, 0x0f, 0x00, 0x1f, 0x00,
|
||||
0x00, 0x0a, 0x00, 0x08, 0x50, 0x01, 0x00, 0x00, 0xc2, 0x01, 0x38, 0xc0,
|
||||
0x07, 0x3c, 0xe0, 0x60, 0x0f, 0x80, 0x1e, 0x00, 0x00, 0x05, 0x00, 0x07,
|
||||
0xa0, 0x00, 0x00, 0x80, 0xe0, 0x01, 0x3c, 0xc0, 0x07, 0x3c, 0xf0, 0xa0,
|
||||
0x07, 0xc0, 0x1c, 0x00, 0x00, 0x0a, 0x80, 0x08, 0xa0, 0x02, 0x00, 0xa0,
|
||||
0xe0, 0x21, 0x1c, 0xc0, 0x03, 0x1c, 0x71, 0x90, 0x47, 0x40, 0x3c, 0x04,
|
||||
0x00, 0x05, 0x80, 0x06, 0xa0, 0x02, 0x00, 0x20, 0xe0, 0x31, 0x1e, 0xc3,
|
||||
0x03, 0x1e, 0x79, 0x98, 0x47, 0x60, 0x38, 0x04, 0x00, 0x15, 0x40, 0x0a,
|
||||
0xa0, 0x0a, 0x00, 0x1a, 0xe0, 0x19, 0x9e, 0xe1, 0x01, 0x9e, 0x78, 0xcc,
|
||||
0xa7, 0x32, 0x78, 0x02, 0x80, 0x2a, 0x40, 0x05, 0x80, 0x2a, 0x00, 0x05,
|
||||
0xe0, 0x0d, 0x9e, 0xe0, 0x01, 0xde, 0x78, 0xc6, 0x97, 0x1b, 0x78, 0x03,
|
||||
0x80, 0x52, 0x30, 0x0a, 0x00, 0x95, 0xd2, 0x0a, 0xe0, 0x0f, 0xfe, 0xe0,
|
||||
0x00, 0x7e, 0xf8, 0x87, 0x9f, 0x0f, 0xf8, 0x01, 0x00, 0xa1, 0x0e, 0x15,
|
||||
0x80, 0x55, 0x55, 0x01, 0xe0, 0x01, 0x3c, 0xf0, 0x00, 0x3c, 0xf0, 0x80,
|
||||
0x8f, 0x0f, 0x70, 0x00, 0x00, 0x81, 0x02, 0x14, 0x00, 0x54, 0x55, 0x00,
|
||||
0xc0, 0x01, 0x3c, 0x00, 0x00, 0x0c, 0x60, 0x00, 0x07, 0x03, 0x70, 0x00,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x40, 0x01, 0x00, 0x11, 0x09, 0x00, 0x04, 0x00, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
|
||||
0x00, 0x20, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x49, 0x32, 0x49, 0x49, 0x91,
|
||||
0x24, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x20, 0x49, 0x0a, 0x09, 0xc9, 0x92, 0x14, 0x81, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x49,
|
||||
0x18, 0x01, 0x49, 0x92, 0x0c, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x49, 0x30, 0x01, 0x49, 0x92,
|
||||
0x14, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x08, 0x69, 0x22, 0x09, 0x49, 0xd2, 0x24, 0x24, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x51,
|
||||
0x1a, 0x09, 0x49, 0xa2, 0x44, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
|
||||
0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x87, 0x08, 0x00, 0x00, 0x00,
|
||||
0xf2, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x40, 0x88, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x01, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x24, 0x80,
|
||||
0x88, 0x86, 0x48, 0x04, 0x09, 0x08, 0x01, 0x01, 0x09, 0x01, 0x10, 0x71,
|
||||
0x88, 0x66, 0x00, 0x00, 0x00, 0x40, 0x24, 0x80, 0x88, 0x89, 0x48, 0x84,
|
||||
0x08, 0x08, 0x01, 0x01, 0x09, 0x01, 0x10, 0x89, 0x88, 0x99, 0x00, 0x00,
|
||||
0x00, 0x40, 0x24, 0x80, 0x88, 0x88, 0x88, 0x82, 0xf8, 0xf0, 0xe0, 0x80,
|
||||
0xf0, 0xf8, 0x13, 0x81, 0x88, 0x88, 0x00, 0x00, 0x00, 0x40, 0x24, 0x80,
|
||||
0x88, 0x88, 0x08, 0x81, 0x08, 0x09, 0x01, 0x41, 0x08, 0x01, 0xf0, 0xf0,
|
||||
0x88, 0x88, 0x00, 0x00, 0x00, 0x40, 0x24, 0x80, 0x88, 0x88, 0x88, 0x42,
|
||||
0x08, 0x09, 0x01, 0x21, 0x08, 0x01, 0x10, 0x88, 0x88, 0x88, 0x00, 0x00,
|
||||
0x00, 0x40, 0x46, 0x88, 0x88, 0x88, 0x4c, 0x44, 0x08, 0x09, 0x09, 0x11,
|
||||
0x08, 0x01, 0x10, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x80, 0x85, 0x87,
|
||||
0x88, 0x08, 0x4b, 0x24, 0xf0, 0xf0, 0xf0, 0xf8, 0xf1, 0x00, 0x10, 0x70,
|
||||
0x89, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
|
||||
0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0x00,
|
||||
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x08, 0x02, 0x04, 0x00,
|
||||
0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
||||
0xff, 0x1f, 0x00, 0x00, 0x48, 0x62, 0xc4, 0x31, 0x4a, 0x18, 0x3c, 0x03,
|
||||
0x21, 0x45, 0x92, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00,
|
||||
0x48, 0x92, 0x24, 0x48, 0xb6, 0x24, 0x88, 0x04, 0x21, 0x4b, 0x92, 0x00,
|
||||
0x00, 0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xa8, 0xf2, 0x24, 0x48,
|
||||
0x92, 0x3c, 0x88, 0x04, 0x21, 0x49, 0x62, 0x00, 0x00, 0x00, 0x80, 0xff,
|
||||
0xff, 0x3f, 0x00, 0x00, 0x10, 0x11, 0x24, 0x48, 0x92, 0x04, 0x88, 0x04,
|
||||
0x21, 0x49, 0x62, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00,
|
||||
0x10, 0x11, 0x24, 0x48, 0x92, 0x04, 0x88, 0x04, 0x21, 0x49, 0x93, 0x00,
|
||||
0x00, 0x00, 0x80, 0xff, 0xcf, 0x7e, 0x00, 0x00, 0x10, 0xe1, 0xc4, 0x31,
|
||||
0x92, 0x38, 0x30, 0x03, 0x2f, 0x89, 0x92, 0x00, 0x00, 0x00, 0x80, 0xe3,
|
||||
0x07, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x03, 0x7e, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x80, 0xc9, 0x23, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x95,
|
||||
0x33, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xdd, 0xfb, 0x7e, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x80, 0x1d, 0xf8, 0x7e, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x40, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9b,
|
||||
0x70, 0x7e, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x00, 0x02, 0x00, 0x47, 0x80,
|
||||
0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x03, 0x00, 0x7e, 0x00, 0x00,
|
||||
0x3c, 0xa3, 0x20, 0x31, 0x52, 0x02, 0x49, 0xcc, 0x3f, 0xa3, 0x94, 0x08,
|
||||
0x00, 0x00, 0x00, 0x27, 0x02, 0x7e, 0x00, 0x00, 0x88, 0xe4, 0x20, 0x41,
|
||||
0xb2, 0x05, 0x49, 0x90, 0x88, 0xe4, 0x6c, 0x09, 0x00, 0x00, 0x00, 0x01,
|
||||
0x00, 0x7e, 0x00, 0x00, 0x88, 0x24, 0xe0, 0x70, 0x92, 0x04, 0x47, 0x9c,
|
||||
0x88, 0x24, 0x24, 0x09, 0x00, 0x00, 0x00, 0x13, 0x48, 0x7e, 0x00, 0x00,
|
||||
0x88, 0x24, 0x20, 0x48, 0x92, 0x04, 0x41, 0x92, 0x88, 0x24, 0x24, 0x01,
|
||||
0x00, 0x00, 0x00, 0x43, 0x00, 0xfe, 0x00, 0x00, 0x88, 0x24, 0x20, 0x48,
|
||||
0x92, 0x04, 0x41, 0x92, 0x88, 0x24, 0x24, 0x09, 0x00, 0x00, 0x00, 0x07,
|
||||
0x94, 0xce, 0x00, 0x00, 0x08, 0x23, 0x20, 0xb0, 0x92, 0x04, 0x41, 0x2c,
|
||||
0x0b, 0x23, 0x24, 0x09, 0x00, 0x00, 0x00, 0x49, 0x02, 0xce, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x11, 0x08, 0xdc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
|
||||
0x01, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf8, 0x07, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xc0, 0x01, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01,
|
||||
0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x1f, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x70, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
|
||||
0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0x7f, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x3c, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00,
|
||||
0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
|
||||
0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xff, 0x07,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00,
|
||||
0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xfe, 0x0f,
|
||||
0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x05, 0x00, 0x00, 0x80, 0x08, 0x00,
|
||||
0x00, 0xc0, 0x03, 0x00, 0x78, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x40, 0x10,
|
||||
0x12, 0x10, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00,
|
||||
0x84, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x20, 0x26, 0x0a, 0x10, 0x9d, 0x39,
|
||||
0xa6, 0xb2, 0x0a, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x02, 0x00, 0xfe, 0x0f,
|
||||
0x00, 0x00, 0x20, 0x21, 0x06, 0x28, 0x25, 0x4a, 0xa9, 0x8a, 0x09, 0x00,
|
||||
0x00, 0xe0, 0x01, 0x22, 0x02, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x20, 0x21,
|
||||
0x0e, 0x38, 0xa5, 0x4b, 0xa9, 0xb2, 0x09, 0x00, 0x00, 0xf0, 0x01, 0x22,
|
||||
0x02, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x20, 0x21, 0x12, 0x44, 0xa5, 0x4a,
|
||||
0x49, 0xa1, 0x0a, 0x00, 0x00, 0xf8, 0x01, 0x22, 0x02, 0x00, 0xfc, 0x1f,
|
||||
0x00, 0x00, 0x20, 0x26, 0x52, 0x44, 0x9d, 0x4d, 0x46, 0x99, 0x0a, 0x00,
|
||||
0x00, 0xfc, 0x01, 0x22, 0x02, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x40, 0x10,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xb2,
|
||||
0x84, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x6e, 0x78, 0x00, 0xfc, 0x1f,
|
||||
0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xfc, 0x01, 0x02, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x02,
|
||||
0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0xfc, 0x0f,
|
||||
0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x20, 0x01, 0x02, 0x00, 0x00, 0x00,
|
||||
0x00, 0x24, 0x06, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x40, 0x10,
|
||||
0x1e, 0x20, 0x90, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
|
||||
0x00, 0x80, 0xfc, 0x03, 0x00, 0x00, 0x20, 0x26, 0x22, 0x20, 0xf9, 0x89,
|
||||
0x32, 0xe7, 0x08, 0x00, 0x00, 0x92, 0x38, 0x00, 0x00, 0x00, 0xfc, 0x01,
|
||||
0x00, 0x00, 0x20, 0x21, 0x22, 0xa0, 0x92, 0x88, 0x4a, 0x29, 0x15, 0x00,
|
||||
0x00, 0x00, 0x78, 0x00, 0x00, 0x40, 0xfa, 0x04, 0x00, 0x00, 0x20, 0x21,
|
||||
0x22, 0xa0, 0x93, 0x88, 0x4a, 0x29, 0x1d, 0x00, 0x00, 0x11, 0xf2, 0x00,
|
||||
0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x20, 0x21, 0x22, 0xa8, 0x90, 0x88,
|
||||
0x4a, 0x29, 0x05, 0x00, 0x48, 0x40, 0xf0, 0x01, 0x00, 0x80, 0x14, 0x04,
|
||||
0x00, 0x00, 0x20, 0x26, 0x9e, 0x10, 0x93, 0x78, 0x32, 0x29, 0x19, 0x00,
|
||||
0x00, 0x09, 0xe0, 0x03, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x40, 0x10,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xc5, 0x03,
|
||||
0x00, 0x40, 0x22, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0xc0, 0x07, 0x00, 0x20, 0x08, 0x04,
|
||||
0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x50, 0x90, 0x03, 0x00, 0xb0, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
|
||||
0x00, 0x38, 0x22, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x48, 0x04, 0x44, 0x00, 0x00, 0x3c, 0x08, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x00, 0xbf, 0x40, 0x42, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x24, 0x80, 0x48, 0x02,
|
||||
0xc0, 0x1f, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x05, 0xf0, 0x3f, 0x09, 0x00,
|
||||
0x00, 0x10, 0x24, 0x48, 0x10, 0x12, 0x41, 0x52, 0x24, 0x09, 0x46, 0x71,
|
||||
0x90, 0x20, 0x02, 0xfc, 0xff, 0x1f, 0x80, 0x22, 0x00, 0x90, 0x24, 0x49,
|
||||
0x12, 0x92, 0x40, 0xb2, 0x24, 0x09, 0xc9, 0x49, 0x04, 0x80, 0x90, 0xfc,
|
||||
0xff, 0xbf, 0x24, 0x00, 0x00, 0x90, 0x24, 0x49, 0x12, 0x92, 0x40, 0x92,
|
||||
0x24, 0x06, 0x49, 0x48, 0x50, 0x0a, 0x02, 0xfe, 0xff, 0x3f, 0x00, 0x05,
|
||||
0x00, 0x50, 0xa5, 0x4a, 0x15, 0x92, 0x40, 0x92, 0x24, 0x06, 0x49, 0x48,
|
||||
0x80, 0x40, 0x48, 0xfe, 0xff, 0x3f, 0x49, 0x00, 0x00, 0x20, 0x42, 0x84,
|
||||
0x88, 0x1a, 0x41, 0x92, 0x34, 0x49, 0x49, 0x68, 0x00, 0x38, 0x10, 0x07,
|
||||
0x00, 0x60, 0x80, 0x00, 0x00, 0x20, 0x42, 0x84, 0x88, 0x14, 0x4e, 0x92,
|
||||
0x28, 0x49, 0x46, 0x50, 0x00, 0x80, 0x83, 0x01, 0x00, 0xa0, 0x6a, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
|
||||
0x00, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, };
|
||||
244
arch/m68k/68000/entry.S
Normal file
244
arch/m68k/68000/entry.S
Normal file
|
|
@ -0,0 +1,244 @@
|
|||
/*
|
||||
* entry.S -- non-mmu 68000 interrupt and exception entry points
|
||||
*
|
||||
* Copyright (C) 1991, 1992 Linus Torvalds
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file README.legal in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Linux/m68k support by Hamish Macdonald
|
||||
*/
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/thread_info.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/segment.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/entry.h>
|
||||
|
||||
.text
|
||||
|
||||
.globl system_call
|
||||
.globl resume
|
||||
.globl ret_from_exception
|
||||
.globl ret_from_signal
|
||||
.globl sys_call_table
|
||||
.globl bad_interrupt
|
||||
.globl inthandler1
|
||||
.globl inthandler2
|
||||
.globl inthandler3
|
||||
.globl inthandler4
|
||||
.globl inthandler5
|
||||
.globl inthandler6
|
||||
.globl inthandler7
|
||||
|
||||
badsys:
|
||||
movel #-ENOSYS,%sp@(PT_OFF_D0)
|
||||
jra ret_from_exception
|
||||
|
||||
do_trace:
|
||||
movel #-ENOSYS,%sp@(PT_OFF_D0) /* needed for strace*/
|
||||
subql #4,%sp
|
||||
SAVE_SWITCH_STACK
|
||||
jbsr syscall_trace_enter
|
||||
RESTORE_SWITCH_STACK
|
||||
addql #4,%sp
|
||||
movel %sp@(PT_OFF_ORIG_D0),%d1
|
||||
movel #-ENOSYS,%d0
|
||||
cmpl #NR_syscalls,%d1
|
||||
jcc 1f
|
||||
lsl #2,%d1
|
||||
lea sys_call_table, %a0
|
||||
jbsr %a0@(%d1)
|
||||
|
||||
1: movel %d0,%sp@(PT_OFF_D0) /* save the return value */
|
||||
subql #4,%sp /* dummy return address */
|
||||
SAVE_SWITCH_STACK
|
||||
jbsr syscall_trace_leave
|
||||
|
||||
ret_from_signal:
|
||||
RESTORE_SWITCH_STACK
|
||||
addql #4,%sp
|
||||
jra ret_from_exception
|
||||
|
||||
ENTRY(system_call)
|
||||
SAVE_ALL_SYS
|
||||
|
||||
/* save top of frame*/
|
||||
pea %sp@
|
||||
jbsr set_esp0
|
||||
addql #4,%sp
|
||||
|
||||
movel %sp@(PT_OFF_ORIG_D0),%d0
|
||||
|
||||
movel %sp,%d1 /* get thread_info pointer */
|
||||
andl #-THREAD_SIZE,%d1
|
||||
movel %d1,%a2
|
||||
btst #(TIF_SYSCALL_TRACE%8),%a2@(TINFO_FLAGS+(31-TIF_SYSCALL_TRACE)/8)
|
||||
jne do_trace
|
||||
cmpl #NR_syscalls,%d0
|
||||
jcc badsys
|
||||
lsl #2,%d0
|
||||
lea sys_call_table,%a0
|
||||
movel %a0@(%d0), %a0
|
||||
jbsr %a0@
|
||||
movel %d0,%sp@(PT_OFF_D0) /* save the return value*/
|
||||
|
||||
ret_from_exception:
|
||||
btst #5,%sp@(PT_OFF_SR) /* check if returning to kernel*/
|
||||
jeq Luser_return /* if so, skip resched, signals*/
|
||||
|
||||
Lkernel_return:
|
||||
RESTORE_ALL
|
||||
|
||||
Luser_return:
|
||||
/* only allow interrupts when we are really the last one on the*/
|
||||
/* kernel stack, otherwise stack overflow can occur during*/
|
||||
/* heavy interrupt load*/
|
||||
andw #ALLOWINT,%sr
|
||||
|
||||
movel %sp,%d1 /* get thread_info pointer */
|
||||
andl #-THREAD_SIZE,%d1
|
||||
movel %d1,%a2
|
||||
1:
|
||||
move %a2@(TINFO_FLAGS),%d1 /* thread_info->flags */
|
||||
jne Lwork_to_do
|
||||
RESTORE_ALL
|
||||
|
||||
Lwork_to_do:
|
||||
movel %a2@(TINFO_FLAGS),%d1 /* thread_info->flags */
|
||||
btst #TIF_NEED_RESCHED,%d1
|
||||
jne reschedule
|
||||
|
||||
Lsignal_return:
|
||||
subql #4,%sp /* dummy return address*/
|
||||
SAVE_SWITCH_STACK
|
||||
pea %sp@(SWITCH_STACK_SIZE)
|
||||
bsrw do_notify_resume
|
||||
addql #4,%sp
|
||||
RESTORE_SWITCH_STACK
|
||||
addql #4,%sp
|
||||
jra 1b
|
||||
|
||||
/*
|
||||
* This is the main interrupt handler, responsible for calling process_int()
|
||||
*/
|
||||
inthandler1:
|
||||
SAVE_ALL_INT
|
||||
movew %sp@(PT_OFF_FORMATVEC), %d0
|
||||
and #0x3ff, %d0
|
||||
|
||||
movel %sp,%sp@-
|
||||
movel #65,%sp@- /* put vector # on stack*/
|
||||
jbsr process_int /* process the IRQ*/
|
||||
3: addql #8,%sp /* pop parameters off stack*/
|
||||
bra ret_from_exception
|
||||
|
||||
inthandler2:
|
||||
SAVE_ALL_INT
|
||||
movew %sp@(PT_OFF_FORMATVEC), %d0
|
||||
and #0x3ff, %d0
|
||||
|
||||
movel %sp,%sp@-
|
||||
movel #66,%sp@- /* put vector # on stack*/
|
||||
jbsr process_int /* process the IRQ*/
|
||||
3: addql #8,%sp /* pop parameters off stack*/
|
||||
bra ret_from_exception
|
||||
|
||||
inthandler3:
|
||||
SAVE_ALL_INT
|
||||
movew %sp@(PT_OFF_FORMATVEC), %d0
|
||||
and #0x3ff, %d0
|
||||
|
||||
movel %sp,%sp@-
|
||||
movel #67,%sp@- /* put vector # on stack*/
|
||||
jbsr process_int /* process the IRQ*/
|
||||
3: addql #8,%sp /* pop parameters off stack*/
|
||||
bra ret_from_exception
|
||||
|
||||
inthandler4:
|
||||
SAVE_ALL_INT
|
||||
movew %sp@(PT_OFF_FORMATVEC), %d0
|
||||
and #0x3ff, %d0
|
||||
|
||||
movel %sp,%sp@-
|
||||
movel #68,%sp@- /* put vector # on stack*/
|
||||
jbsr process_int /* process the IRQ*/
|
||||
3: addql #8,%sp /* pop parameters off stack*/
|
||||
bra ret_from_exception
|
||||
|
||||
inthandler5:
|
||||
SAVE_ALL_INT
|
||||
movew %sp@(PT_OFF_FORMATVEC), %d0
|
||||
and #0x3ff, %d0
|
||||
|
||||
movel %sp,%sp@-
|
||||
movel #69,%sp@- /* put vector # on stack*/
|
||||
jbsr process_int /* process the IRQ*/
|
||||
3: addql #8,%sp /* pop parameters off stack*/
|
||||
bra ret_from_exception
|
||||
|
||||
inthandler6:
|
||||
SAVE_ALL_INT
|
||||
movew %sp@(PT_OFF_FORMATVEC), %d0
|
||||
and #0x3ff, %d0
|
||||
|
||||
movel %sp,%sp@-
|
||||
movel #70,%sp@- /* put vector # on stack*/
|
||||
jbsr process_int /* process the IRQ*/
|
||||
3: addql #8,%sp /* pop parameters off stack*/
|
||||
bra ret_from_exception
|
||||
|
||||
inthandler7:
|
||||
SAVE_ALL_INT
|
||||
movew %sp@(PT_OFF_FORMATVEC), %d0
|
||||
and #0x3ff, %d0
|
||||
|
||||
movel %sp,%sp@-
|
||||
movel #71,%sp@- /* put vector # on stack*/
|
||||
jbsr process_int /* process the IRQ*/
|
||||
3: addql #8,%sp /* pop parameters off stack*/
|
||||
bra ret_from_exception
|
||||
|
||||
inthandler:
|
||||
SAVE_ALL_INT
|
||||
movew %sp@(PT_OFF_FORMATVEC), %d0
|
||||
and #0x3ff, %d0
|
||||
|
||||
movel %sp,%sp@-
|
||||
movel %d0,%sp@- /* put vector # on stack*/
|
||||
jbsr process_int /* process the IRQ*/
|
||||
3: addql #8,%sp /* pop parameters off stack*/
|
||||
bra ret_from_exception
|
||||
|
||||
/*
|
||||
* Handler for uninitialized and spurious interrupts.
|
||||
*/
|
||||
ENTRY(bad_interrupt)
|
||||
addql #1,irq_err_count
|
||||
rte
|
||||
|
||||
/*
|
||||
* Beware - when entering resume, prev (the current task) is
|
||||
* in a0, next (the new task) is in a1, so don't change these
|
||||
* registers until their contents are no longer needed.
|
||||
*/
|
||||
ENTRY(resume)
|
||||
movel %a0,%d1 /* save prev thread in d1 */
|
||||
movew %sr,%a0@(TASK_THREAD+THREAD_SR) /* save sr */
|
||||
SAVE_SWITCH_STACK
|
||||
movel %sp,%a0@(TASK_THREAD+THREAD_KSP) /* save kernel stack */
|
||||
movel %usp,%a3 /* save usp */
|
||||
movel %a3,%a0@(TASK_THREAD+THREAD_USP)
|
||||
|
||||
movel %a1@(TASK_THREAD+THREAD_USP),%a3 /* restore user stack */
|
||||
movel %a3,%usp
|
||||
movel %a1@(TASK_THREAD+THREAD_KSP),%sp /* restore new thread stack */
|
||||
RESTORE_SWITCH_STACK
|
||||
movew %a1@(TASK_THREAD+THREAD_SR),%sr /* restore thread status reg */
|
||||
rts
|
||||
|
||||
240
arch/m68k/68000/head.S
Normal file
240
arch/m68k/68000/head.S
Normal file
|
|
@ -0,0 +1,240 @@
|
|||
/*
|
||||
* head.S - Common startup code for 68000 core based CPU's
|
||||
*
|
||||
* 2012.10.21, Luis Alves <ljalvs@gmail.com>, Single head.S file for all
|
||||
* 68000 core based CPU's. Based on the sources from:
|
||||
* Coldfire by Greg Ungerer <gerg@snapgear.com>
|
||||
* 68328 by D. Jeff Dionne <jeff@ryeham.ee.ryerson.ca>,
|
||||
* Kenneth Albanowski <kjahds@kjahds.com>,
|
||||
* The Silver Hammer Group, Ltd.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/init.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/thread_info.h>
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* UCSIMM and UCDIMM use CONFIG_MEMORY_RESERVE to reserve some RAM
|
||||
*****************************************************************************/
|
||||
#ifdef CONFIG_MEMORY_RESERVE
|
||||
#define RAMEND (CONFIG_RAMBASE+CONFIG_RAMSIZE)-(CONFIG_MEMORY_RESERVE*0x100000)
|
||||
#else
|
||||
#define RAMEND (CONFIG_RAMBASE+CONFIG_RAMSIZE)
|
||||
#endif
|
||||
/*****************************************************************************/
|
||||
|
||||
.global _start
|
||||
.global _rambase
|
||||
.global _ramvec
|
||||
.global _ramstart
|
||||
.global _ramend
|
||||
|
||||
#if defined(CONFIG_PILOT) || defined(CONFIG_INIT_LCD)
|
||||
.global bootlogo_bits
|
||||
#endif
|
||||
|
||||
/* Defining DEBUG_HEAD_CODE, serial port in 68x328 is inited */
|
||||
/* #define DEBUG_HEAD_CODE */
|
||||
#undef DEBUG_HEAD_CODE
|
||||
|
||||
.data
|
||||
|
||||
/*****************************************************************************
|
||||
* RAM setup pointers. Used by the kernel to determine RAM location and size.
|
||||
*****************************************************************************/
|
||||
|
||||
_rambase:
|
||||
.long 0
|
||||
_ramvec:
|
||||
.long 0
|
||||
_ramstart:
|
||||
.long 0
|
||||
_ramend:
|
||||
.long 0
|
||||
|
||||
__HEAD
|
||||
|
||||
/*****************************************************************************
|
||||
* Entry point, where all begins!
|
||||
*****************************************************************************/
|
||||
|
||||
_start:
|
||||
|
||||
/* Pilot need this specific signature at the start of ROM */
|
||||
#ifdef CONFIG_PILOT
|
||||
.byte 0x4e, 0xfa, 0x00, 0x0a /* bra opcode (jmp 10 bytes) */
|
||||
.byte 'b', 'o', 'o', 't'
|
||||
.word 10000
|
||||
nop
|
||||
moveq #0, %d0
|
||||
movew %d0, 0xfffff618 /* Watchdog off */
|
||||
movel #0x00011f07, 0xfffff114 /* CS A1 Mask */
|
||||
#endif /* CONFIG_PILOT */
|
||||
|
||||
movew #0x2700, %sr /* disable all interrupts */
|
||||
|
||||
/*****************************************************************************
|
||||
* Setup PLL and wait for it to settle (in 68x328 cpu's).
|
||||
* Also, if enabled, init serial port.
|
||||
*****************************************************************************/
|
||||
#if defined(CONFIG_M68328) || \
|
||||
defined(CONFIG_M68EZ328) || \
|
||||
defined(CONFIG_M68VZ328)
|
||||
|
||||
/* Serial port setup. Should only be needed if debugging this startup code. */
|
||||
#ifdef DEBUG_HEAD_CODE
|
||||
movew #0x0800, 0xfffff906 /* Ignore CTS */
|
||||
movew #0x010b, 0xfffff902 /* BAUD to 9600 */
|
||||
movew #0xe100, 0xfffff900 /* enable */
|
||||
#endif /* DEBUG_HEAD */
|
||||
|
||||
#ifdef CONFIG_PILOT
|
||||
movew #0x2410, 0xfffff200 /* PLLCR */
|
||||
#else
|
||||
movew #0x2400, 0xfffff200 /* PLLCR */
|
||||
#endif
|
||||
movew #0x0123, 0xfffff202 /* PLLFSR */
|
||||
moveq #0, %d0
|
||||
movew #16384, %d0 /* PLL settle wait loop */
|
||||
_pll_settle:
|
||||
subw #1, %d0
|
||||
bne _pll_settle
|
||||
#endif /* CONFIG_M68x328 */
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* If running kernel from ROM some specific initialization has to be done.
|
||||
* (Assuming that everything is already init'ed when running from RAM)
|
||||
*****************************************************************************/
|
||||
#ifdef CONFIG_ROMKERNEL
|
||||
|
||||
/*****************************************************************************
|
||||
* Init chip registers (uCsimm specific)
|
||||
*****************************************************************************/
|
||||
#ifdef CONFIG_UCSIMM
|
||||
moveb #0x00, 0xfffffb0b /* Watchdog off */
|
||||
moveb #0x10, 0xfffff000 /* SCR */
|
||||
moveb #0x00, 0xfffff40b /* enable chip select */
|
||||
moveb #0x00, 0xfffff423 /* enable /DWE */
|
||||
moveb #0x08, 0xfffffd0d /* disable hardmap */
|
||||
moveb #0x07, 0xfffffd0e /* level 7 interrupt clear */
|
||||
movew #0x8600, 0xfffff100 /* FLASH at 0x10c00000 */
|
||||
movew #0x018b, 0xfffff110 /* 2Meg, enable, 0ws */
|
||||
movew #0x8f00, 0xfffffc00 /* DRAM configuration */
|
||||
movew #0x9667, 0xfffffc02 /* DRAM control */
|
||||
movew #0x0000, 0xfffff106 /* DRAM at 0x00000000 */
|
||||
movew #0x068f, 0xfffff116 /* 8Meg, enable, 0ws */
|
||||
moveb #0x40, 0xfffff300 /* IVR */
|
||||
movel #0x007FFFFF, %d0 /* IMR */
|
||||
movel %d0, 0xfffff304
|
||||
moveb 0xfffff42b, %d0
|
||||
andb #0xe0, %d0
|
||||
moveb %d0, 0xfffff42b
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
* Init LCD controller.
|
||||
* (Assuming that LCD controller is already init'ed when running from RAM)
|
||||
*****************************************************************************/
|
||||
#ifdef CONFIG_INIT_LCD
|
||||
#ifdef CONFIG_PILOT
|
||||
moveb #0, 0xfffffA27 /* LCKCON */
|
||||
movel #_start, 0xfffffA00 /* LSSA */
|
||||
moveb #0xa, 0xfffffA05 /* LVPW */
|
||||
movew #0x9f, 0xFFFFFa08 /* LXMAX */
|
||||
movew #0x9f, 0xFFFFFa0a /* LYMAX */
|
||||
moveb #9, 0xfffffa29 /* LBAR */
|
||||
moveb #0, 0xfffffa25 /* LPXCD */
|
||||
moveb #0x04, 0xFFFFFa20 /* LPICF */
|
||||
moveb #0x58, 0xfffffA27 /* LCKCON */
|
||||
moveb #0x85, 0xfffff429 /* PFDATA */
|
||||
moveb #0xd8, 0xfffffA27 /* LCKCON */
|
||||
moveb #0xc5, 0xfffff429 /* PFDATA */
|
||||
moveb #0xd5, 0xfffff429 /* PFDATA */
|
||||
movel #bootlogo_bits, 0xFFFFFA00 /* LSSA */
|
||||
moveb #10, 0xFFFFFA05 /* LVPW */
|
||||
movew #160, 0xFFFFFA08 /* LXMAX */
|
||||
movew #160, 0xFFFFFA0A /* LYMAX */
|
||||
#else /* CONFIG_PILOT */
|
||||
movel #bootlogo_bits, 0xfffffA00 /* LSSA */
|
||||
moveb #0x28, 0xfffffA05 /* LVPW */
|
||||
movew #0x280, 0xFFFFFa08 /* LXMAX */
|
||||
movew #0x1df, 0xFFFFFa0a /* LYMAX */
|
||||
moveb #0, 0xfffffa29 /* LBAR */
|
||||
moveb #0, 0xfffffa25 /* LPXCD */
|
||||
moveb #0x08, 0xFFFFFa20 /* LPICF */
|
||||
moveb #0x01, 0xFFFFFA21 /* -ve pol */
|
||||
moveb #0x81, 0xfffffA27 /* LCKCON */
|
||||
movew #0xff00, 0xfffff412 /* LCD pins */
|
||||
#endif /* CONFIG_PILOT */
|
||||
#endif /* CONFIG_INIT_LCD */
|
||||
|
||||
/*****************************************************************************
|
||||
* Kernel is running from FLASH/ROM (XIP)
|
||||
* Copy init text & data to RAM
|
||||
*****************************************************************************/
|
||||
moveal #_etext, %a0
|
||||
moveal #_sdata, %a1
|
||||
moveal #__bss_start, %a2
|
||||
_copy_initmem:
|
||||
movel %a0@+, %a1@+
|
||||
cmpal %a1, %a2
|
||||
bhi _copy_initmem
|
||||
#endif /* CONFIG_ROMKERNEL */
|
||||
|
||||
/*****************************************************************************
|
||||
* Setup basic memory information for kernel
|
||||
*****************************************************************************/
|
||||
movel #CONFIG_VECTORBASE,_ramvec /* set vector base location */
|
||||
movel #CONFIG_RAMBASE,_rambase /* set the base of RAM */
|
||||
movel #RAMEND, _ramend /* set end ram addr */
|
||||
lea __bss_stop,%a1
|
||||
movel %a1,_ramstart
|
||||
|
||||
/*****************************************************************************
|
||||
* If the kernel is in RAM, move romfs to right above bss and
|
||||
* adjust _ramstart to where romfs ends.
|
||||
*
|
||||
* (Do this only if CONFIG_MTD_UCLINUX is true)
|
||||
*****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_ROMFS_FS) && defined(CONFIG_RAMKERNEL) && \
|
||||
defined(CONFIG_MTD_UCLINUX)
|
||||
lea __bss_start, %a0 /* get start of bss */
|
||||
lea __bss_stop, %a1 /* set up destination */
|
||||
movel %a0, %a2 /* copy of bss start */
|
||||
|
||||
movel 8(%a0), %d0 /* get size of ROMFS */
|
||||
addql #8, %d0 /* allow for rounding */
|
||||
andl #0xfffffffc, %d0 /* whole words */
|
||||
|
||||
addl %d0, %a0 /* copy from end */
|
||||
addl %d0, %a1 /* copy from end */
|
||||
movel %a1, _ramstart /* set start of ram */
|
||||
_copy_romfs:
|
||||
movel -(%a0), -(%a1) /* copy dword */
|
||||
cmpl %a0, %a2 /* check if at end */
|
||||
bne _copy_romfs
|
||||
#endif /* CONFIG_ROMFS_FS && CONFIG_RAMKERNEL && CONFIG_MTD_UCLINUX */
|
||||
|
||||
/*****************************************************************************
|
||||
* Clear bss region
|
||||
*****************************************************************************/
|
||||
lea __bss_start, %a0 /* get start of bss */
|
||||
lea __bss_stop, %a1 /* get end of bss */
|
||||
_clear_bss:
|
||||
movel #0, (%a0)+ /* clear each word */
|
||||
cmpl %a0, %a1 /* check if at end */
|
||||
bne _clear_bss
|
||||
|
||||
/*****************************************************************************
|
||||
* Load the current task pointer and stack.
|
||||
*****************************************************************************/
|
||||
lea init_thread_union,%a0
|
||||
lea THREAD_SIZE(%a0),%sp
|
||||
jsr start_kernel /* start Linux kernel */
|
||||
_exit:
|
||||
jmp _exit /* should never get here */
|
||||
186
arch/m68k/68000/ints.c
Normal file
186
arch/m68k/68000/ints.c
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
/*
|
||||
* ints.c - Generic interrupt controller support
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright 1996 Roman Zippel
|
||||
* Copyright 1999 D. Jeff Dionne <jeff@rt-control.com>
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
|
||||
#if defined(CONFIG_M68328)
|
||||
#include <asm/MC68328.h>
|
||||
#elif defined(CONFIG_M68EZ328)
|
||||
#include <asm/MC68EZ328.h>
|
||||
#elif defined(CONFIG_M68VZ328)
|
||||
#include <asm/MC68VZ328.h>
|
||||
#endif
|
||||
|
||||
/* assembler routines */
|
||||
asmlinkage void system_call(void);
|
||||
asmlinkage void buserr(void);
|
||||
asmlinkage void trap(void);
|
||||
asmlinkage void trap3(void);
|
||||
asmlinkage void trap4(void);
|
||||
asmlinkage void trap5(void);
|
||||
asmlinkage void trap6(void);
|
||||
asmlinkage void trap7(void);
|
||||
asmlinkage void trap8(void);
|
||||
asmlinkage void trap9(void);
|
||||
asmlinkage void trap10(void);
|
||||
asmlinkage void trap11(void);
|
||||
asmlinkage void trap12(void);
|
||||
asmlinkage void trap13(void);
|
||||
asmlinkage void trap14(void);
|
||||
asmlinkage void trap15(void);
|
||||
asmlinkage void trap33(void);
|
||||
asmlinkage void trap34(void);
|
||||
asmlinkage void trap35(void);
|
||||
asmlinkage void trap36(void);
|
||||
asmlinkage void trap37(void);
|
||||
asmlinkage void trap38(void);
|
||||
asmlinkage void trap39(void);
|
||||
asmlinkage void trap40(void);
|
||||
asmlinkage void trap41(void);
|
||||
asmlinkage void trap42(void);
|
||||
asmlinkage void trap43(void);
|
||||
asmlinkage void trap44(void);
|
||||
asmlinkage void trap45(void);
|
||||
asmlinkage void trap46(void);
|
||||
asmlinkage void trap47(void);
|
||||
asmlinkage irqreturn_t bad_interrupt(int, void *);
|
||||
asmlinkage irqreturn_t inthandler(void);
|
||||
asmlinkage irqreturn_t inthandler1(void);
|
||||
asmlinkage irqreturn_t inthandler2(void);
|
||||
asmlinkage irqreturn_t inthandler3(void);
|
||||
asmlinkage irqreturn_t inthandler4(void);
|
||||
asmlinkage irqreturn_t inthandler5(void);
|
||||
asmlinkage irqreturn_t inthandler6(void);
|
||||
asmlinkage irqreturn_t inthandler7(void);
|
||||
|
||||
/* The 68k family did not have a good way to determine the source
|
||||
* of interrupts until later in the family. The EC000 core does
|
||||
* not provide the vector number on the stack, we vector everything
|
||||
* into one vector and look in the blasted mask register...
|
||||
* This code is designed to be fast, almost constant time, not clean!
|
||||
*/
|
||||
void process_int(int vec, struct pt_regs *fp)
|
||||
{
|
||||
int irq;
|
||||
int mask;
|
||||
|
||||
unsigned long pend = ISR;
|
||||
|
||||
while (pend) {
|
||||
if (pend & 0x0000ffff) {
|
||||
if (pend & 0x000000ff) {
|
||||
if (pend & 0x0000000f) {
|
||||
mask = 0x00000001;
|
||||
irq = 0;
|
||||
} else {
|
||||
mask = 0x00000010;
|
||||
irq = 4;
|
||||
}
|
||||
} else {
|
||||
if (pend & 0x00000f00) {
|
||||
mask = 0x00000100;
|
||||
irq = 8;
|
||||
} else {
|
||||
mask = 0x00001000;
|
||||
irq = 12;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (pend & 0x00ff0000) {
|
||||
if (pend & 0x000f0000) {
|
||||
mask = 0x00010000;
|
||||
irq = 16;
|
||||
} else {
|
||||
mask = 0x00100000;
|
||||
irq = 20;
|
||||
}
|
||||
} else {
|
||||
if (pend & 0x0f000000) {
|
||||
mask = 0x01000000;
|
||||
irq = 24;
|
||||
} else {
|
||||
mask = 0x10000000;
|
||||
irq = 28;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while (! (mask & pend)) {
|
||||
mask <<=1;
|
||||
irq++;
|
||||
}
|
||||
|
||||
do_IRQ(irq, fp);
|
||||
pend &= ~mask;
|
||||
}
|
||||
}
|
||||
|
||||
static void intc_irq_unmask(struct irq_data *d)
|
||||
{
|
||||
IMR &= ~(1 << d->irq);
|
||||
}
|
||||
|
||||
static void intc_irq_mask(struct irq_data *d)
|
||||
{
|
||||
IMR |= (1 << d->irq);
|
||||
}
|
||||
|
||||
static struct irq_chip intc_irq_chip = {
|
||||
.name = "M68K-INTC",
|
||||
.irq_mask = intc_irq_mask,
|
||||
.irq_unmask = intc_irq_unmask,
|
||||
};
|
||||
|
||||
/*
|
||||
* This function should be called during kernel startup to initialize
|
||||
* the machine vector table.
|
||||
*/
|
||||
void __init trap_init(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* set up the vectors */
|
||||
for (i = 72; i < 256; ++i)
|
||||
_ramvec[i] = (e_vector) bad_interrupt;
|
||||
|
||||
_ramvec[32] = system_call;
|
||||
|
||||
_ramvec[65] = (e_vector) inthandler1;
|
||||
_ramvec[66] = (e_vector) inthandler2;
|
||||
_ramvec[67] = (e_vector) inthandler3;
|
||||
_ramvec[68] = (e_vector) inthandler4;
|
||||
_ramvec[69] = (e_vector) inthandler5;
|
||||
_ramvec[70] = (e_vector) inthandler6;
|
||||
_ramvec[71] = (e_vector) inthandler7;
|
||||
}
|
||||
|
||||
void __init init_IRQ(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
IVR = 0x40; /* Set DragonBall IVR (interrupt base) to 64 */
|
||||
|
||||
/* turn off all interrupts */
|
||||
IMR = ~0;
|
||||
|
||||
for (i = 0; (i < NR_IRQS); i++) {
|
||||
irq_set_chip(i, &intc_irq_chip);
|
||||
irq_set_handler(i, handle_level_irq);
|
||||
}
|
||||
}
|
||||
|
||||
56
arch/m68k/68000/m68328.c
Normal file
56
arch/m68k/68000/m68328.c
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
/***************************************************************************/
|
||||
|
||||
/*
|
||||
* m68328.c - 68328 specific config
|
||||
*
|
||||
* Copyright (C) 1993 Hamish Macdonald
|
||||
* Copyright (C) 1999 D. Jeff Dionne
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* VZ Support/Fixes Evan Stawnyczy <e@lineo.ca>
|
||||
*/
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/rtc.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/MC68328.h>
|
||||
#if defined(CONFIG_PILOT) || defined(CONFIG_INIT_LCD)
|
||||
#include "bootlogo.h"
|
||||
#endif
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
int m68328_hwclk(int set, struct rtc_time *t);
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
void m68328_reset (void)
|
||||
{
|
||||
local_irq_disable();
|
||||
asm volatile ("moveal #0x10c00000, %a0;\n\t"
|
||||
"moveb #0, 0xFFFFF300;\n\t"
|
||||
"moveal 0(%a0), %sp;\n\t"
|
||||
"moveal 4(%a0), %a0;\n\t"
|
||||
"jmp (%a0);");
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
void __init config_BSP(char *command, int len)
|
||||
{
|
||||
printk(KERN_INFO "\n68328 support D. Jeff Dionne <jeff@uclinux.org>\n");
|
||||
printk(KERN_INFO "68328 support Kenneth Albanowski <kjahds@kjshds.com>\n");
|
||||
printk(KERN_INFO "68328/Pilot support Bernhard Kuhn <kuhn@lpr.e-technik.tu-muenchen.de>\n");
|
||||
|
||||
mach_hwclk = m68328_hwclk;
|
||||
mach_reset = m68328_reset;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
78
arch/m68k/68000/m68EZ328.c
Normal file
78
arch/m68k/68000/m68EZ328.c
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
/***************************************************************************/
|
||||
|
||||
/*
|
||||
* m68EZ328.c - 68EZ328 specific config
|
||||
*
|
||||
* Copyright (C) 1993 Hamish Macdonald
|
||||
* Copyright (C) 1999 D. Jeff Dionne
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/rtc.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/MC68EZ328.h>
|
||||
#ifdef CONFIG_UCSIMM
|
||||
#include <asm/bootstd.h>
|
||||
#endif
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
int m68328_hwclk(int set, struct rtc_time *t);
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
void m68ez328_reset(void)
|
||||
{
|
||||
local_irq_disable();
|
||||
asm volatile (
|
||||
"moveal #0x10c00000, %a0;\n"
|
||||
"moveb #0, 0xFFFFF300;\n"
|
||||
"moveal 0(%a0), %sp;\n"
|
||||
"moveal 4(%a0), %a0;\n"
|
||||
"jmp (%a0);\n"
|
||||
);
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
unsigned char *cs8900a_hwaddr;
|
||||
static int errno;
|
||||
|
||||
#ifdef CONFIG_UCSIMM
|
||||
_bsc0(char *, getserialnum)
|
||||
_bsc1(unsigned char *, gethwaddr, int, a)
|
||||
_bsc1(char *, getbenv, char *, a)
|
||||
#endif
|
||||
|
||||
void __init config_BSP(char *command, int len)
|
||||
{
|
||||
unsigned char *p;
|
||||
|
||||
printk(KERN_INFO "\n68EZ328 DragonBallEZ support (C) 1999 Rt-Control, Inc\n");
|
||||
|
||||
#ifdef CONFIG_UCSIMM
|
||||
printk(KERN_INFO "uCsimm serial string [%s]\n",getserialnum());
|
||||
p = cs8900a_hwaddr = gethwaddr(0);
|
||||
printk(KERN_INFO "uCsimm hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
|
||||
p[0], p[1], p[2], p[3], p[4], p[5]);
|
||||
|
||||
p = getbenv("APPEND");
|
||||
if (p) strcpy(p,command);
|
||||
else command[0] = 0;
|
||||
#endif
|
||||
|
||||
mach_sched_init = hw_timer_init;
|
||||
mach_hwclk = m68328_hwclk;
|
||||
mach_reset = m68ez328_reset;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
190
arch/m68k/68000/m68VZ328.c
Normal file
190
arch/m68k/68000/m68VZ328.c
Normal file
|
|
@ -0,0 +1,190 @@
|
|||
/***************************************************************************/
|
||||
|
||||
/*
|
||||
* m68VZ328.c - 68VZ328 specific config
|
||||
*
|
||||
* Copyright (C) 1993 Hamish Macdonald
|
||||
* Copyright (C) 1999 D. Jeff Dionne
|
||||
* Copyright (C) 2001 Georges Menie, Ken Desmet
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/kd.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/rtc.h>
|
||||
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/MC68VZ328.h>
|
||||
#include <asm/bootstd.h>
|
||||
|
||||
#ifdef CONFIG_INIT_LCD
|
||||
#include "bootlogo-vz.h"
|
||||
#endif
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
int m68328_hwclk(int set, struct rtc_time *t);
|
||||
|
||||
/***************************************************************************/
|
||||
/* Init Drangon Engine hardware */
|
||||
/***************************************************************************/
|
||||
#if defined(CONFIG_DRAGEN2)
|
||||
|
||||
static void m68vz328_reset(void)
|
||||
{
|
||||
local_irq_disable();
|
||||
|
||||
#ifdef CONFIG_INIT_LCD
|
||||
PBDATA |= 0x20; /* disable CCFL light */
|
||||
PKDATA |= 0x4; /* disable LCD controller */
|
||||
LCKCON = 0;
|
||||
#endif
|
||||
|
||||
__asm__ __volatile__(
|
||||
"reset\n\t"
|
||||
"moveal #0x04000000, %a0\n\t"
|
||||
"moveal 0(%a0), %sp\n\t"
|
||||
"moveal 4(%a0), %a0\n\t"
|
||||
"jmp (%a0)"
|
||||
);
|
||||
}
|
||||
|
||||
static void __init init_hardware(char *command, int size)
|
||||
{
|
||||
#ifdef CONFIG_DIRECT_IO_ACCESS
|
||||
SCR = 0x10; /* allow user access to internal registers */
|
||||
#endif
|
||||
|
||||
/* CSGB Init */
|
||||
CSGBB = 0x4000;
|
||||
CSB = 0x1a1;
|
||||
|
||||
/* CS8900 init */
|
||||
/* PK3: hardware sleep function pin, active low */
|
||||
PKSEL |= PK(3); /* select pin as I/O */
|
||||
PKDIR |= PK(3); /* select pin as output */
|
||||
PKDATA |= PK(3); /* set pin high */
|
||||
|
||||
/* PF5: hardware reset function pin, active high */
|
||||
PFSEL |= PF(5); /* select pin as I/O */
|
||||
PFDIR |= PF(5); /* select pin as output */
|
||||
PFDATA &= ~PF(5); /* set pin low */
|
||||
|
||||
/* cs8900 hardware reset */
|
||||
PFDATA |= PF(5);
|
||||
{ int i; for (i = 0; i < 32000; ++i); }
|
||||
PFDATA &= ~PF(5);
|
||||
|
||||
/* INT1 enable (cs8900 IRQ) */
|
||||
PDPOL &= ~PD(1); /* active high signal */
|
||||
PDIQEG &= ~PD(1);
|
||||
PDIRQEN |= PD(1); /* IRQ enabled */
|
||||
|
||||
#ifdef CONFIG_INIT_LCD
|
||||
/* initialize LCD controller */
|
||||
LSSA = (long) screen_bits;
|
||||
LVPW = 0x14;
|
||||
LXMAX = 0x140;
|
||||
LYMAX = 0xef;
|
||||
LRRA = 0;
|
||||
LPXCD = 3;
|
||||
LPICF = 0x08;
|
||||
LPOLCF = 0;
|
||||
LCKCON = 0x80;
|
||||
PCPDEN = 0xff;
|
||||
PCSEL = 0;
|
||||
|
||||
/* Enable LCD controller */
|
||||
PKDIR |= 0x4;
|
||||
PKSEL |= 0x4;
|
||||
PKDATA &= ~0x4;
|
||||
|
||||
/* Enable CCFL backlighting circuit */
|
||||
PBDIR |= 0x20;
|
||||
PBSEL |= 0x20;
|
||||
PBDATA &= ~0x20;
|
||||
|
||||
/* contrast control register */
|
||||
PFDIR |= 0x1;
|
||||
PFSEL &= ~0x1;
|
||||
PWMR = 0x037F;
|
||||
#endif
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
/* Init RT-Control uCdimm hardware */
|
||||
/***************************************************************************/
|
||||
#elif defined(CONFIG_UCDIMM)
|
||||
|
||||
static void m68vz328_reset(void)
|
||||
{
|
||||
local_irq_disable();
|
||||
asm volatile (
|
||||
"moveal #0x10c00000, %a0;\n\t"
|
||||
"moveb #0, 0xFFFFF300;\n\t"
|
||||
"moveal 0(%a0), %sp;\n\t"
|
||||
"moveal 4(%a0), %a0;\n\t"
|
||||
"jmp (%a0);\n"
|
||||
);
|
||||
}
|
||||
|
||||
unsigned char *cs8900a_hwaddr;
|
||||
static int errno;
|
||||
|
||||
_bsc0(char *, getserialnum)
|
||||
_bsc1(unsigned char *, gethwaddr, int, a)
|
||||
_bsc1(char *, getbenv, char *, a)
|
||||
|
||||
static void __init init_hardware(char *command, int size)
|
||||
{
|
||||
char *p;
|
||||
|
||||
printk(KERN_INFO "uCdimm serial string [%s]\n", getserialnum());
|
||||
p = cs8900a_hwaddr = gethwaddr(0);
|
||||
printk(KERN_INFO "uCdimm hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
|
||||
p[0], p[1], p[2], p[3], p[4], p[5]);
|
||||
p = getbenv("APPEND");
|
||||
if (p)
|
||||
strcpy(p, command);
|
||||
else
|
||||
command[0] = 0;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
#else
|
||||
|
||||
static void m68vz328_reset(void)
|
||||
{
|
||||
}
|
||||
|
||||
static void __init init_hardware(char *command, int size)
|
||||
{
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
#endif
|
||||
/***************************************************************************/
|
||||
|
||||
void __init config_BSP(char *command, int size)
|
||||
{
|
||||
printk(KERN_INFO "68VZ328 DragonBallVZ support (c) 2001 Lineo, Inc.\n");
|
||||
|
||||
init_hardware(command, size);
|
||||
|
||||
mach_sched_init = hw_timer_init;
|
||||
mach_hwclk = m68328_hwclk;
|
||||
mach_reset = m68vz328_reset;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
35
arch/m68k/68000/romvec.S
Normal file
35
arch/m68k/68000/romvec.S
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* romvec.S - Vector table for 68000 cpus
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright 1996 Roman Zippel
|
||||
* Copyright 1999 D. Jeff Dionne <jeff@rt-control.com>
|
||||
* Copyright 2006 Greg Ungerer <gerg@snapgear.com>
|
||||
*/
|
||||
|
||||
.global _start
|
||||
.global _buserr
|
||||
.global trap
|
||||
.global system_call
|
||||
|
||||
.section .romvec
|
||||
|
||||
e_vectors:
|
||||
.long CONFIG_RAMBASE+CONFIG_RAMSIZE-4, _start, buserr, trap
|
||||
.long trap, trap, trap, trap
|
||||
.long trap, trap, trap, trap
|
||||
.long trap, trap, trap, trap
|
||||
.long trap, trap, trap, trap
|
||||
.long trap, trap, trap, trap
|
||||
.long trap, trap, trap, trap
|
||||
.long trap, trap, trap, trap
|
||||
/* TRAP #0-15 */
|
||||
.long system_call, trap, trap, trap
|
||||
.long trap, trap, trap, trap
|
||||
.long trap, trap, trap, trap
|
||||
.long trap, trap, trap, trap
|
||||
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
|
||||
137
arch/m68k/68000/timers.c
Normal file
137
arch/m68k/68000/timers.c
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
/***************************************************************************/
|
||||
|
||||
/*
|
||||
* timers.c - Generic hardware timer support.
|
||||
*
|
||||
* Copyright (C) 1993 Hamish Macdonald
|
||||
* Copyright (C) 1999 D. Jeff Dionne
|
||||
* Copyright (C) 2001 Georges Menie, Ken Desmet
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/rtc.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/MC68VZ328.h>
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
#if defined(CONFIG_DRAGEN2)
|
||||
/* with a 33.16 MHz clock, this will give usec resolution to the time functions */
|
||||
#define CLOCK_SOURCE TCTL_CLKSOURCE_SYSCLK
|
||||
#define CLOCK_PRE 7
|
||||
#define TICKS_PER_JIFFY 41450
|
||||
|
||||
#elif defined(CONFIG_XCOPILOT_BUGS)
|
||||
/*
|
||||
* The only thing I know is that CLK32 is not available on Xcopilot
|
||||
* I have little idea about what frequency SYSCLK has on Xcopilot.
|
||||
* The values for prescaler and compare registers were simply
|
||||
* taken from the original source
|
||||
*/
|
||||
#define CLOCK_SOURCE TCTL_CLKSOURCE_SYSCLK
|
||||
#define CLOCK_PRE 2
|
||||
#define TICKS_PER_JIFFY 0xd7e4
|
||||
|
||||
#else
|
||||
/* default to using the 32Khz clock */
|
||||
#define CLOCK_SOURCE TCTL_CLKSOURCE_32KHZ
|
||||
#define CLOCK_PRE 31
|
||||
#define TICKS_PER_JIFFY 10
|
||||
#endif
|
||||
|
||||
static u32 m68328_tick_cnt;
|
||||
static irq_handler_t timer_interrupt;
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
static irqreturn_t hw_tick(int irq, void *dummy)
|
||||
{
|
||||
/* Reset Timer1 */
|
||||
TSTAT &= 0;
|
||||
|
||||
m68328_tick_cnt += TICKS_PER_JIFFY;
|
||||
return timer_interrupt(irq, dummy);
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
static struct irqaction m68328_timer_irq = {
|
||||
.name = "timer",
|
||||
.flags = IRQF_TIMER,
|
||||
.handler = hw_tick,
|
||||
};
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
static cycle_t m68328_read_clk(struct clocksource *cs)
|
||||
{
|
||||
unsigned long flags;
|
||||
u32 cycles;
|
||||
|
||||
local_irq_save(flags);
|
||||
cycles = m68328_tick_cnt + TCN;
|
||||
local_irq_restore(flags);
|
||||
|
||||
return cycles;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
static struct clocksource m68328_clk = {
|
||||
.name = "timer",
|
||||
.rating = 250,
|
||||
.read = m68328_read_clk,
|
||||
.mask = CLOCKSOURCE_MASK(32),
|
||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||
};
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
void hw_timer_init(irq_handler_t handler)
|
||||
{
|
||||
/* disable timer 1 */
|
||||
TCTL = 0;
|
||||
|
||||
/* set ISR */
|
||||
setup_irq(TMR_IRQ_NUM, &m68328_timer_irq);
|
||||
|
||||
/* Restart mode, Enable int, Set clock source */
|
||||
TCTL = TCTL_OM | TCTL_IRQEN | CLOCK_SOURCE;
|
||||
TPRER = CLOCK_PRE;
|
||||
TCMP = TICKS_PER_JIFFY;
|
||||
|
||||
/* Enable timer 1 */
|
||||
TCTL |= TCTL_TEN;
|
||||
clocksource_register_hz(&m68328_clk, TICKS_PER_JIFFY*HZ);
|
||||
timer_interrupt = handler;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
int m68328_hwclk(int set, struct rtc_time *t)
|
||||
{
|
||||
if (!set) {
|
||||
long now = RTCTIME;
|
||||
t->tm_year = t->tm_mon = t->tm_mday = 1;
|
||||
t->tm_hour = (now >> 24) % 24;
|
||||
t->tm_min = (now >> 16) % 60;
|
||||
t->tm_sec = now % 60;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
Loading…
Add table
Add a link
Reference in a new issue