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 (1845B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * arch/alpha/boot/head.S
      4 *
      5 * initial bootloader stuff..
      6 */
      7
      8#include <asm/pal.h>
      9
     10	.set noreorder
     11	.globl	__start
     12	.ent	__start
     13__start:
     14	br	$29,2f
     152:	ldgp	$29,0($29)
     16	jsr	$26,start_kernel
     17	call_pal PAL_halt
     18	.end __start
     19
     20	.align 5
     21	.globl	wrent
     22	.ent	wrent
     23wrent:
     24	.prologue 0
     25	call_pal PAL_wrent
     26	ret ($26)
     27	.end wrent
     28
     29	.align 5
     30	.globl	wrkgp
     31	.ent	wrkgp
     32wrkgp:
     33	.prologue 0
     34	call_pal PAL_wrkgp
     35	ret ($26)
     36	.end wrkgp
     37
     38	.align 5
     39	.globl	switch_to_osf_pal
     40	.ent	switch_to_osf_pal
     41switch_to_osf_pal:
     42	subq	$30,128,$30
     43	.frame	$30,128,$26
     44	stq	$26,0($30)
     45	stq	$1,8($30)
     46	stq	$2,16($30)
     47	stq	$3,24($30)
     48	stq	$4,32($30)
     49	stq	$5,40($30)
     50	stq	$6,48($30)
     51	stq	$7,56($30)
     52	stq	$8,64($30)
     53	stq	$9,72($30)
     54	stq	$10,80($30)
     55	stq	$11,88($30)
     56	stq	$12,96($30)
     57	stq	$13,104($30)
     58	stq	$14,112($30)
     59	stq	$15,120($30)
     60	.prologue 0
     61
     62	stq	$30,0($17)	/* save KSP in PCB */
     63
     64	bis	$30,$30,$20	/* a4 = KSP */
     65	br	$17,1f
     66
     67	ldq	$26,0($30)
     68	ldq	$1,8($30)
     69	ldq	$2,16($30)
     70	ldq	$3,24($30)
     71	ldq	$4,32($30)
     72	ldq	$5,40($30)
     73	ldq	$6,48($30)
     74	ldq	$7,56($30)
     75	ldq	$8,64($30)
     76	ldq	$9,72($30)
     77	ldq	$10,80($30)
     78	ldq	$11,88($30)
     79	ldq	$12,96($30)
     80	ldq	$13,104($30)
     81	ldq	$14,112($30)
     82	ldq	$15,120($30)
     83	addq	$30,128,$30
     84	ret ($26)
     851:	call_pal PAL_swppal
     86	.end	switch_to_osf_pal
     87
     88	.align 3
     89	.globl	tbi
     90	.ent	tbi
     91tbi:
     92	.prologue 0
     93	call_pal PAL_tbi
     94	ret	($26)
     95	.end tbi
     96
     97	.align 3
     98	.globl	halt
     99	.ent	halt
    100halt:
    101	.prologue 0
    102	call_pal PAL_halt
    103	.end halt
    104
    105/* $16 - new stack page */
    106	.align 3
    107	.globl	move_stack
    108	.ent	move_stack
    109move_stack:
    110	.prologue 0
    111	lda	$0, 0x1fff($31)
    112	and	$0, $30, $1			/* Stack offset */
    113	or	$1, $16, $16			/* New stack pointer */
    114	mov	$30, $1
    115	mov	$16, $2
    1161:	ldq	$3, 0($1)			/* Move the stack */
    117	addq	$1, 8, $1
    118	stq	$3, 0($2)
    119	and	$0, $1, $4
    120	addq	$2, 8, $2
    121	bne	$4, 1b
    122	mov	$16, $30
    123	ret	($26)
    124	.end move_stack