[U-Boot] [PATCH] x86: simplify ljmp to 32-bit code

You can directly specify the label as the operand for ljmp.
This commit saves 4-byte code.
Signed-off-by: Masahiro Yamada masahiroy@kernel.org ---
arch/x86/cpu/start16.S | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/arch/x86/cpu/start16.S b/arch/x86/cpu/start16.S index bcabd76741ef..7bad9f3e4d87 100644 --- a/arch/x86/cpu/start16.S +++ b/arch/x86/cpu/start16.S @@ -44,10 +44,8 @@ data32 cs lgdt gdt_ptr ff:
/* Finally restore BIST and jump to the 32-bit initialization code */ - movw $code32start, %ax - movw %ax, %bp movl %ecx, %eax -data32 cs ljmp *(%bp) +data32 cs ljmp code32start
/* 48-bit far pointer */ code32start:

Hi Masahiro,
On Tue, Dec 3, 2019 at 1:29 PM Masahiro Yamada masahiroy@kernel.org wrote:
You can directly specify the label as the operand for ljmp.
This commit saves 4-byte code.
Signed-off-by: Masahiro Yamada masahiroy@kernel.org
arch/x86/cpu/start16.S | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/arch/x86/cpu/start16.S b/arch/x86/cpu/start16.S index bcabd76741ef..7bad9f3e4d87 100644 --- a/arch/x86/cpu/start16.S +++ b/arch/x86/cpu/start16.S @@ -44,10 +44,8 @@ data32 cs lgdt gdt_ptr ff:
/* Finally restore BIST and jump to the 32-bit initialization code */
movw $code32start, %ax
movw %ax, %bp movl %ecx, %eax
-data32 cs ljmp *(%bp) +data32 cs ljmp code32start
There should be a * before code32start, otherwise gas reportes:
arch/x86/cpu/start16.S: Assembler messages: arch/x86/cpu/start16.S:48: Warning: indirect ljmp without `*'
/* 48-bit far pointer */
code32start:
Reviewed-by: Bin Meng bmeng.cn@gmail.com Tested-by: Bin Meng bmeng.cn@gmail.com
Regards, Bin

On Sun, Dec 8, 2019 at 6:43 PM Bin Meng bmeng.cn@gmail.com wrote:
Hi Masahiro,
On Tue, Dec 3, 2019 at 1:29 PM Masahiro Yamada masahiroy@kernel.org wrote:
You can directly specify the label as the operand for ljmp.
This commit saves 4-byte code.
Signed-off-by: Masahiro Yamada masahiroy@kernel.org
arch/x86/cpu/start16.S | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/arch/x86/cpu/start16.S b/arch/x86/cpu/start16.S index bcabd76741ef..7bad9f3e4d87 100644 --- a/arch/x86/cpu/start16.S +++ b/arch/x86/cpu/start16.S @@ -44,10 +44,8 @@ data32 cs lgdt gdt_ptr ff:
/* Finally restore BIST and jump to the 32-bit initialization code */
movw $code32start, %ax
movw %ax, %bp movl %ecx, %eax
-data32 cs ljmp *(%bp) +data32 cs ljmp code32start
There should be a * before code32start, otherwise gas reportes:
arch/x86/cpu/start16.S: Assembler messages: arch/x86/cpu/start16.S:48: Warning: indirect ljmp without `*'
fixed the warning by adding * before code32start
/* 48-bit far pointer */
code32start:
Reviewed-by: Bin Meng bmeng.cn@gmail.com Tested-by: Bin Meng bmeng.cn@gmail.com
and applied to u-boot-x86, thanks!
participants (2)
-
Bin Meng
-
Masahiro Yamada