[Skiboot] [PATCH 07/15] asm: Add rom_entry.S

Balbir Singh bsingharora at gmail.com
Sat Sep 3 13:33:51 AEST 2016



On 11/08/16 15:23, Claudio Carvalho wrote:
> This adds the asm used to jump into the verification code copied to memory.
> 
> Signed-off-by: Claudio Carvalho <cclaudio at linux.vnet.ibm.com>
> ---
>  asm/Makefile.inc |  2 +-
>  asm/rom_entry.S  | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 53 insertions(+), 1 deletion(-)
>  create mode 100644 asm/rom_entry.S
> 
> diff --git a/asm/Makefile.inc b/asm/Makefile.inc
> index 4c858e2..2e678fd 100644
> --- a/asm/Makefile.inc
> +++ b/asm/Makefile.inc
> @@ -1,7 +1,7 @@
>  # -*-Makefile-*-
>  
>  SUBDIRS += asm 
> -ASM_OBJS = head.o lock.o misc.o kernel-wrapper.o
> +ASM_OBJS = head.o lock.o misc.o kernel-wrapper.o rom_entry.o
>  ASM=asm/built-in.o
>  
>  # Add extra dependency to the kernel wrapper
> diff --git a/asm/rom_entry.S b/asm/rom_entry.S
> new file mode 100644
> index 0000000..26d1b96
> --- /dev/null
> +++ b/asm/rom_entry.S
> @@ -0,0 +1,52 @@
> +# IBM_PROLOG_BEGIN_TAG
> +# This is an automatically generated prolog.
> +#
> +# $Source: src/usr/secureboot/base/rom_entry.S $
> +#
> +# OpenPOWER HostBoot Project
> +#
> +# COPYRIGHT International Business Machines Corp. 2013,2016
> +#
> +# Licensed under the Apache License, Version 2.0 (the "License");
> +# you may not use this file except in compliance with the License.
> +# You may obtain a copy of the License at
> +#
> +#     http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS,
> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> +# implied. See the License for the specific language governing
> +# permissions and limitations under the License.
> +#
> +# IBM_PROLOG_END_TAG
> +
> +#.include "kernel/ppcconsts.S"
> +
> +.section .text
> +
> +.global call_rom_verify
> +.global call_rom_SHA512
> +
> +call_rom_verify:
> +call_rom_SHA512:
> +
> +call_rom_entry:
> +    std %r2, 40(%r1)

Usually storing the r2 is done by the caller.

> +    mflr %r0
> +    std %r0, 16(%r1)
> +    stdu %r1, -128(%r1)
> +    li %r2, 0

Why?

> +    mtctr %r3
> +    mr %r3, %r4
> +    mr %r4, %r5
> +    mr %r5, %r6
> +    mr %r6, %r7
> +    mr %r7, %r8
> +    bctrl
> +    addi %r1, %r1, 128
> +    ld %r2, 40(%r1)
> +    ld %r0, 16(%r1)
> +    mtlr %r0
> +    blr
> +
> 

Balbir Singh.


More information about the Skiboot mailing list