Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
  1#include <linux/init.h>
  2#include <asm/thread_info.h>
  3
  4#if defined(CONFIG_CPU_H8300H)
  5	.h8300h
  6#define SYSCR 0xfee012
  7#define IRAMTOP 0xffff20
  8#define NR_INT 64
  9#endif
 10#if defined(CONFIG_CPU_H8S)
 11	.h8300s
 12#define INTCR 0xffff31
 13#define IRAMTOP 0xffc000
 14#define NR_INT 128
 15#endif
 16
 17	__HEAD
 18	.global	_start
 19_start:
 20	mov.l	#IRAMTOP,sp
 21#if !defined(CONFIG_H8300H_SIM) && \
 22    !defined(CONFIG_H8S_SIM)
 23	jsr	@lowlevel_init
 24
 25	/* copy .data */
 26	mov.l	#_begin_data,er5
 27	mov.l	#_sdata,er6
 28	mov.l	#_edata,er4
 29	sub.l	er6,er4
 30	shlr.l	er4
 31	shlr.l	er4
 321:
 33	mov.l	@er5+,er0
 34	mov.l	er0,@er6
 35	adds	#4,er6
 36	dec.l	#1,er4
 37	bne	1b
 38	/* .bss clear */
 39	mov.l	#_sbss,er5
 40	mov.l	#_ebss,er4
 41	sub.l	er5,er4
 42	shlr	er4
 43	shlr	er4
 44	sub.l	er0,er0
 451:
 46	mov.l	er0,@er5
 47	adds	#4,er5
 48	dec.l	#1,er4
 49	bne	1b
 50#else
 51	/* get cmdline from gdb */
 52	jsr	@0xcc
 53	;; er0 - argc
 54	;; er1 - argv
 55	mov.l	#command_line,er3
 56	adds	#4,er1
 57	dec.l	#1,er0
 58	beq	4f
 591:
 60	mov.l	@er1+,er2
 612:
 62	mov.b	@er2+,r4l
 63	beq	3f
 64	mov.b	r4l,@er3
 65	adds	#1,er3
 66	bra	2b
 673:
 68	mov.b	#' ',r4l
 69	mov.b	r4l,@er3
 70	adds	#1,er3
 71	dec.l	#1,er0
 72	bne	1b
 73	subs	#1,er3
 74	mov.b	#0,r4l
 75	mov.b	r4l,@er3
 764:
 77#endif
 78	sub.l	er0,er0
 79	jsr	@h8300_fdt_init
 80	/* linux kernel start */
 81#if defined(CONFIG_CPU_H8300H)
 82	ldc	#0xd0,ccr	/* running kernel */
 83	mov.l	#SYSCR,er0
 84	bclr	#3,@er0
 85#endif
 86#if defined(CONFIG_CPU_H8S)
 87	ldc	#0x07,exr
 88	bclr	#4,@INTCR:8
 89	bset	#5,@INTCR:8	/* Interrupt mode 2 */
 90	ldc	#0x90,ccr	/* running kernel */
 91#endif
 92	mov.l	#init_thread_union,sp
 93	add.l	#0x2000,sp
 94	jsr	@start_kernel
 95
 961:
 97	bra	1b
 98
 99#if defined(CONFIG_ROMKERNEL)
100	/* interrupt vector */
101	.section .vectors,"ax"
102	.long	_start
103	.long	_start
104vector	=	2
105	.rept	NR_INT - 2
106	.long	_interrupt_redirect_table+vector*4
107vector	=	vector + 1
108	.endr
109#endif
110	.end