Path: blob/master/arch/h8300/platform/h8s/edosk2674/crt0_rom.S
10820 views
/*1* linux/arch/h8300/platform/h8s/edosk2674/crt0_rom.S2*3* Yoshinori Sato <[email protected]>4*5* Platform depend startup6* Target Archtecture: EDOSK-26747* Memory Layout : ROM8*/910#define ASSEMBLY1112#include <asm/linkage.h>13#include <asm/regs267x.h>1415.global SYMBOL_NAME(_start)16.global SYMBOL_NAME(_command_line)17.global SYMBOL_NAME(_platform_gpio_table)18.global SYMBOL_NAME(_target_name)1920.h8300s21.section .text22.file "crt0_rom.S"2324/* CPU Reset entry */25SYMBOL_NAME_LABEL(_start)26mov.l #__ramend,sp27ldc #0x80,ccr28ldc #0,exr2930/* Peripheral Setup */31;BSC/GPIO setup32mov.l #init_regs,er033mov.w #0xffff,e2341:35mov.w @er0+,r236beq 2f37mov.w @er0+,r138mov.b r1l,@er239bra 1b40412:42;SDRAM setup43#define SDRAM_SMR 0x4000404445mov.b #0,r0l46mov.b r0l,@DRACCR:1647mov.w #0x188,r048mov.w r0,@REFCR:1649mov.w #0x85b4,r050mov.w r0,@DRAMCR:1651mov.b #0,r1l52mov.b r1l,@SDRAM_SMR53mov.w #0x84b4,r054mov.w r0,@DRAMCR:1655;special thanks to Arizona Cooperative Power5657/* copy .data */58mov.l #__begin_data,er559mov.l #__sdata,er660mov.l #__edata,er461sub.l er6,er462shlr.l #2,er4631:64mov.l @er5+,er065mov.l er0,@er666adds #4,er667dec.l #1,er468bne 1b6970/* .bss clear */71mov.l #__sbss,er572mov.l #__ebss,er473sub.l er5,er474shlr.l #2,er475sub.l er0,er0761:77mov.l er0,@er578adds #4,er579dec.l #1,er480bne 1b8182/* copy kernel commandline */83mov.l #COMMAND_START,er584mov.l #SYMBOL_NAME(_command_line),er685mov.w #512,r486eepmov.w8788/* linux kernel start */89ldc #0x90,ccr /* running kernel */90mov.l #SYMBOL_NAME(init_thread_union),sp91add.l #0x2000,sp92jsr @_start_kernel93_exit:9495jmp _exit9697rts9899/* I/O port assign information */100__platform_gpio_table:101mov.l #gpio_table,er0102rts103104#define INIT_REGS_DATA(REGS,DATA) \105.word ((REGS) & 0xffff),DATA106107init_regs:108INIT_REGS_DATA(ASTCR,0xff)109INIT_REGS_DATA(RDNCR,0x00)110INIT_REGS_DATA(ABWCR,0x80)111INIT_REGS_DATA(WTCRAH,0x27)112INIT_REGS_DATA(WTCRAL,0x77)113INIT_REGS_DATA(WTCRBH,0x71)114INIT_REGS_DATA(WTCRBL,0x22)115INIT_REGS_DATA(CSACRH,0x80)116INIT_REGS_DATA(CSACRL,0x80)117INIT_REGS_DATA(BROMCRH,0xa0)118INIT_REGS_DATA(BROMCRL,0xa0)119INIT_REGS_DATA(P3DDR,0x3a)120INIT_REGS_DATA(P3ODR,0x06)121INIT_REGS_DATA(PADDR,0xff)122INIT_REGS_DATA(PFDDR,0xfe)123INIT_REGS_DATA(PGDDR,0x0f)124INIT_REGS_DATA(PHDDR,0x0f)125INIT_REGS_DATA(PFCR0,0xff)126INIT_REGS_DATA(PFCR2,0x0d)127INIT_REGS_DATA(ITSR, 0x00)128INIT_REGS_DATA(ITSR+1,0x3f)129INIT_REGS_DATA(INTCR,0x20)130131.word 0132133gpio_table:134;; P1DDR135.byte 0x00,0x00136;; P2DDR137.byte 0x00,0x00138;; P3DDR139.byte 0x00,0x00140;; dummy141.byte 0x00,0x00142;; P5DDR143.byte 0x00,0x00144;; P6DDR145.byte 0x00,0x00146;; P7DDR147.byte 0x00,0x00148;; P8DDR149.byte 0x00,0x00150;; dummy151.byte 0x00,0x00152;; PADDR153.byte 0x00,0x00154;; PBDDR155.byte 0x00,0x00156;; PCDDR157.byte 0x00,0x00158;; PDDDR159.byte 0x00,0x00160;; PEDDR161.byte 0x00,0x00162;; PFDDR163.byte 0x00,0x00164;; PGDDR165.byte 0x00,0x00166;; PHDDR167.byte 0x00,0x00168169.section .rodata170__target_name:171.asciz "EDOSK-2674"172173.section .bss174__command_line:175.space 512176177/* interrupt vector */178.section .vectors,"ax"179.long __start180.long __start181vector = 2182.rept 126183.long _interrupt_redirect_table+vector*4184vector = vector + 1185.endr186187188