cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

head.S (1637B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 *  linux/arch/sh/boot/romimage/head.S
      4 *
      5 * Board specific setup code, executed before zImage loader
      6 */
      7
      8.text
      9	#include <asm/page.h>
     10
     11	.global	romstart
     12romstart:
     13	/* include board specific setup code */
     14#include <mach/romimage.h>
     15
     16#ifdef CONFIG_ROMIMAGE_MMCIF
     17	/* load the romImage to above the empty zero page */
     18	mov.l	empty_zero_page_dst, r4
     19	mov.l	empty_zero_page_dst_adj, r5
     20	add	r5, r4
     21	mov.l	bytes_to_load, r5
     22	mov.l	loader_function, r7
     23	jsr	@r7
     24	 mov	r4, r15
     25
     26	mov.l	empty_zero_page_dst, r4
     27	mov.l	empty_zero_page_dst_adj, r5
     28	add	r5, r4
     29	mov.l	loaded_code_offs, r5
     30	add	r5, r4
     31	jmp	@r4
     32	 nop
     33
     34	.balign 4
     35empty_zero_page_dst_adj:
     36	.long	PAGE_SIZE
     37bytes_to_load:
     38	.long	end_data - romstart
     39loader_function:
     40	.long	mmcif_loader
     41loaded_code_offs:
     42	.long	loaded_code - romstart
     43loaded_code:
     44#endif /* CONFIG_ROMIMAGE_MMCIF */
     45
     46	/* copy the empty_zero_page contents to where vmlinux expects it */
     47	mova	extra_data_pos, r0
     48	mov.l	extra_data_size, r1
     49	add	r1, r0
     50	mov.l	empty_zero_page_dst, r1
     51	mov	#(PAGE_SHIFT - 4), r4
     52	mov	#1, r3
     53	shld	r4, r3 /* r3 = PAGE_SIZE / 16 */
     54
     551:
     56	mov.l	@r0, r4
     57	mov.l	@(4, r0), r5
     58	mov.l	@(8, r0), r6
     59	mov.l	@(12, r0), r7
     60	add	#16,r0
     61	mov.l	r4, @r1
     62	mov.l	r5, @(4, r1)
     63	mov.l	r6, @(8, r1)
     64	mov.l	r7, @(12, r1)
     65	dt	r3
     66	add	#16,r1
     67	bf	1b
     68
     69	/* jump to the zImage entry point located after the zero page data */
     70	mov	#PAGE_SHIFT, r4
     71	mov	#1, r1
     72	shld	r4, r1
     73	mova	extra_data_pos, r0
     74	add	r1, r0
     75	mov.l	extra_data_size, r1
     76	add	r1, r0
     77	jmp	@r0
     78	 nop
     79
     80	.align 2
     81empty_zero_page_dst:
     82	.long	_text
     83extra_data_pos:
     84extra_data_size:
     85	.long	zero_page_pos - extra_data_pos