From: Andrei Borzenkov <arvidjaar@gmail.com>
To: grub-devel@gnu.org, The development of GNU GRUB <grub-devel@gnu.org>
Cc: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>,
pfsmorigo@linux.vnet.ibm.com
Subject: Re: [RFC PATCH 0/3] grub powerpc64 little-endian enablement
Date: Sun, 21 Sep 2014 18:24:25 +0400 [thread overview]
Message-ID: <20140921182425.18593186@opensuse.site> (raw)
In-Reply-To: <20140921175844.359e7927@opensuse.site>
В Sun, 21 Sep 2014 17:58:44 +0400
Andrei Borzenkov <arvidjaar@gmail.com> пишет:
> В Thu, 28 Aug 2014 16:56:02 -0300
> Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com> пишет:
>
> > From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
> >
> > Hi,
> >
> > At the beginning of the year we provide a patchset that enabled GRUB for
> > little-endian PowerPC. Our approach at the time was to build GRUB itself and
> > its tools in 64-bit little-endian. One of the reasons of build in 64-bit is
> > to avoid 32-bit dependencies in the distro and build a system entirely 64-bit.
> >
> > This patchset was not welcomed at the time because it would bring a
> > high-maintainance-cost, without real gain since it could just be cross-compiled.
> >
> > After that, Brent Baude, Vladmir (phcoder) and I started to work in a solution
> > that would cross-compile but without 32-bit dependencies. This patchset is the
> > result of this new approach. It's based on the work of Brent Baude, Vladimir
> > (phcoder), and Tomohiro.
> >
> > It can be devided in two parts:
> >
> > 1) Skip libgcc dependency just for ppc64el (patch 1 and 2);
> > 2) Check elf endianess and byteswap if necessary (patch 3);
> >
> > The result is GRUB itself in 32-bit BE and its tools in 64-bit LE. This solution
> > satisfies the needs of the distros. I tested it in three different distros, in
> > both endianess and it's fine.
> >
>
> Unfortunately I'm still not able to boot this version on QEMU. I build
> on openSUSE for three acrhs - ppc, ppc64, ppc64le. First two are OK and
> boot successfully. Third one does not work - it ends up in exception. I
> get initial GRUB greeting and that's all.
>
> Same problem I got with Vladimir libgcc patch series.
>
> It could be toolkit issue of course; but still it would need fixing
> before we can merge it.
>
> Could you help in debugging this issue? I have near to zero experience
> with PPC; I can do what you tell me, but not much more.
>
> I run it with
>
> qemu-system-ppc64 -M pseries -cdrom /tmp/grub2-ppc64le.iso -boot d
>
> Attached is screenshot of error.
>
>
And here is the difference in generated code in case it helps (one
random module as example) ...
--- /tmp/a1 2014-09-21 18:19:59.316494117 +0400
+++ /tmp/a2 2014-09-21 18:20:06.169398736 +0400
@@ -1,5 +1,5 @@
-usr.ppc/lib/grub2/powerpc-ieee1275/ext2.mod: file format elf32-powerpc
+usr.ppc64le/lib/grub2/powerpc-ieee1275/ext2.mod: file format elf32-powerpc
Disassembly of section .text:
@@ -18,15 +18,15 @@ Disassembly of section .text:
28: 38 21 00 10 addi r1,r1,16
2c: 7c 08 03 a6 mtlr r0
30: 4e 80 00 20 blr
- 34: 94 21 ff a0 stwu r1,-96(r1)
+ 34: 94 21 ff 90 stwu r1,-112(r1)
38: 38 e3 00 28 addi r7,r3,40
3c: 7d 80 00 26 mfcr r12
40: 39 23 00 14 addi r9,r3,20
44: 7c 08 02 a6 mflr r0
48: 39 43 00 18 addi r10,r3,24
- 4c: bf 61 00 4c stmw r27,76(r1)
- 50: 90 01 00 64 stw r0,100(r1)
- 54: 91 81 00 48 stw r12,72(r1)
+ 4c: bf 61 00 5c stmw r27,92(r1)
+ 50: 90 01 00 74 stw r0,116(r1)
+ 54: 91 81 00 58 stw r12,88(r1)
58: 3b c4 ff ff addi r30,r4,-1
5c: 7c 7f 1b 78 mr r31,r3
60: 7c bc 2b 78 mr r28,r5
@@ -103,10 +103,10 @@ Disassembly of section .text:
17c: 2f 83 00 00 cmpwi cr7,r3,0
180: 41 9e 00 08 beq cr7,188 <grub_mod_init-0xd50>
184: 81 3d 00 00 lwz r9,0(r29)
- 188: 81 81 00 48 lwz r12,72(r1)
- 18c: 39 61 00 60 addi r11,r1,96
+ 188: 81 81 00 58 lwz r12,88(r1)
+ 18c: 39 61 00 70 addi r11,r1,112
190: 7d 23 4b 78 mr r3,r9
- 194: 7d 80 81 20 mtcrf 8,r12
+ 194: 7d 90 81 20 mtocrf 8,r12
198: 48 00 00 00 b 198 <grub_mod_init-0xd40>
19c: 94 21 ff e0 stwu r1,-32(r1)
1a0: 7c 08 02 a6 mflr r0
@@ -234,10 +234,10 @@ Disassembly of section .text:
388: 39 61 00 20 addi r11,r1,32
38c: 80 69 00 00 lwz r3,0(r9)
390: 48 00 00 00 b 390 <grub_mod_init-0xb48>
- 394: 94 21 ff b0 stwu r1,-80(r1)
+ 394: 94 21 ff a0 stwu r1,-96(r1)
398: 7c 08 02 a6 mflr r0
- 39c: be 61 00 1c stmw r19,28(r1)
- 3a0: 90 01 00 54 stw r0,84(r1)
+ 39c: be 61 00 2c stmw r19,44(r1)
+ 3a0: 90 01 00 64 stw r0,100(r1)
3a4: 7c df 33 78 mr r31,r6
3a8: 7c be 2b 78 mr r30,r5
3ac: 83 63 00 00 lwz r27,0(r3)
@@ -489,12 +489,12 @@ Disassembly of section .text:
784: 48 00 00 0c b 790 <grub_mod_init-0x748>
788: 7f c3 f3 78 mr r3,r30
78c: 7f e4 fb 78 mr r4,r31
- 790: 39 61 00 50 addi r11,r1,80
+ 790: 39 61 00 60 addi r11,r1,96
794: 48 00 00 00 b 794 <grub_mod_init-0x744>
- 798: 94 21 ff e0 stwu r1,-32(r1)
+ 798: 94 21 ff d0 stwu r1,-48(r1)
79c: 7c 08 02 a6 mflr r0
- 7a0: bf a1 00 14 stmw r29,20(r1)
- 7a4: 90 01 00 24 stw r0,36(r1)
+ 7a0: bf a1 00 24 stmw r29,36(r1)
+ 7a4: 90 01 00 34 stw r0,52(r1)
7a8: 3f a0 00 00 lis r29,0
7ac: 7c 9e 23 78 mr r30,r4
7b0: 83 e3 00 00 lwz r31,0(r3)
@@ -525,7 +525,7 @@ Disassembly of section .text:
814: 7f e3 fb 78 mr r3,r31
818: 48 00 00 01 bl 818 <grub_mod_init-0x6c0>
81c: 3d 20 00 00 lis r9,0
- 820: 39 61 00 20 addi r11,r1,32
+ 820: 39 61 00 30 addi r11,r1,48
824: 80 69 00 00 lwz r3,0(r9)
828: 48 00 00 00 b 828 <grub_mod_init-0x6b0>
82c: 94 21 ff e0 stwu r1,-32(r1)
@@ -555,13 +555,13 @@ Disassembly of section .text:
88c: 39 61 00 20 addi r11,r1,32
890: 80 69 00 00 lwz r3,0(r9)
894: 48 00 00 00 b 894 <grub_mod_init-0x644>
- 898: 94 21 ff d0 stwu r1,-48(r1)
+ 898: 94 21 ff c0 stwu r1,-64(r1)
89c: 7c 6b 1b 78 mr r11,r3
8a0: 7c 08 02 a6 mflr r0
8a4: 7c a6 2b 78 mr r6,r5
8a8: 38 ab 00 08 addi r5,r11,8
- 8ac: bf c1 00 28 stmw r30,40(r1)
- 8b0: 90 01 00 34 stw r0,52(r1)
+ 8ac: bf c1 00 38 stmw r30,56(r1)
+ 8b0: 90 01 00 44 stw r0,68(r1)
8b4: 3b cb 00 70 addi r30,r11,112
8b8: 7c 80 23 78 mr r0,r4
8bc: 80 63 00 00 lwz r3,0(r3)
@@ -584,7 +584,7 @@ Disassembly of section .text:
900: 7d 64 5b 78 mr r4,r11
904: 7c 05 03 78 mr r5,r0
908: 48 00 00 01 bl 908 <grub_mod_init-0x5d0>
- 90c: 39 61 00 30 addi r11,r1,48
+ 90c: 39 61 00 40 addi r11,r1,64
910: 48 00 00 00 b 910 <grub_mod_init-0x5c8>
914: 7c 68 1b 78 mr r8,r3
918: 80 63 00 44 lwz r3,68(r3)
@@ -596,10 +596,10 @@ Disassembly of section .text:
930: 81 08 00 14 lwz r8,20(r8)
934: 38 63 01 5c addi r3,r3,348
938: 4b ff ff 60 b 898 <grub_mod_init-0x640>
- 93c: 94 21 fe c0 stwu r1,-320(r1)
+ 93c: 94 21 fe b0 stwu r1,-336(r1)
940: 7c 08 02 a6 mflr r0
- 944: be c1 01 18 stmw r22,280(r1)
- 948: 90 01 01 44 stw r0,324(r1)
+ 944: be c1 01 28 stmw r22,296(r1)
+ 948: 90 01 01 54 stw r0,340(r1)
94c: 7c 7f 1b 78 mr r31,r3
950: 7c 9a 23 78 mr r26,r4
954: 7c b9 2b 78 mr r25,r5
@@ -715,7 +715,7 @@ Disassembly of section .text:
b0c: 2f 83 00 00 cmpwi cr7,r3,0
b10: 41 9e fe b0 beq cr7,9c0 <grub_mod_init-0x518>
b14: 38 60 00 01 li r3,1
- b18: 39 61 01 40 addi r11,r1,320
+ b18: 39 61 01 50 addi r11,r1,336
b1c: 48 00 00 00 b b1c <grub_mod_init-0x3bc>
b20: 94 21 ff d0 stwu r1,-48(r1)
b24: 39 20 00 00 li r9,0
@@ -769,10 +769,10 @@ Disassembly of section .text:
be4: 39 61 00 30 addi r11,r1,48
be8: 80 7f 00 00 lwz r3,0(r31)
bec: 48 00 00 00 b bec <grub_mod_init-0x2ec>
- bf0: 94 21 ff f0 stwu r1,-16(r1)
+ bf0: 94 21 ff e0 stwu r1,-32(r1)
bf4: 7c 08 02 a6 mflr r0
- bf8: bf c1 00 08 stmw r30,8(r1)
- bfc: 90 01 00 14 stw r0,20(r1)
+ bf8: bf c1 00 18 stmw r30,24(r1)
+ bfc: 90 01 00 24 stw r0,36(r1)
c00: 7c 7f 1b 78 mr r31,r3
c04: 81 23 00 88 lwz r9,136(r3)
c08: 2f 89 00 00 cmpwi cr7,r9,0
@@ -821,7 +821,7 @@ Disassembly of section .text:
cb4: 7d 20 fc 2c lwbrx r9,0,r31
cb8: 7f c3 f3 78 mr r3,r30
cbc: 7d 5e 49 ae stbx r10,r30,r9
- cc0: 39 61 00 10 addi r11,r1,16
+ cc0: 39 61 00 20 addi r11,r1,32
cc4: 48 00 00 00 b cc4 <grub_mod_init-0x214>
cc8: 94 21 ff d0 stwu r1,-48(r1)
ccc: 7c 08 02 a6 mflr r0
@@ -878,14 +878,14 @@ Disassembly of section .text:
d98: 4e 80 04 21 bctrl
d9c: 39 61 00 30 addi r11,r1,48
da0: 48 00 00 00 b da0 <grub_mod_init-0x138>
- da4: 94 21 ff d0 stwu r1,-48(r1)
+ da4: 94 21 ff c0 stwu r1,-64(r1)
da8: 39 20 00 00 li r9,0
dac: 7c 08 02 a6 mflr r0
- db0: bf 41 00 18 stmw r26,24(r1)
+ db0: bf 41 00 28 stmw r26,40(r1)
db4: 3f a0 00 00 lis r29,0
db8: 7c 7f 1b 78 mr r31,r3
dbc: 80 7d 00 00 lwz r3,0(r29)
- dc0: 90 01 00 34 stw r0,52(r1)
+ dc0: 90 01 00 44 stw r0,68(r1)
dc4: 7c 9a 23 78 mr r26,r4
dc8: 91 21 00 08 stw r9,8(r1)
dcc: 48 00 00 01 bl dcc <grub_mod_init-0x10c>
@@ -953,23 +953,23 @@ Disassembly of section .text:
ec4: 80 7b 00 00 lwz r3,0(r27)
ec8: 48 00 00 01 bl ec8 <grub_mod_init-0x10>
ecc: 7f a3 eb 78 mr r3,r29
- ed0: 39 61 00 30 addi r11,r1,48
+ ed0: 39 61 00 40 addi r11,r1,64
ed4: 48 00 00 00 b ed4 <grub_mod_init-0x4>
00000ed8 <grub_mod_init>:
- ed8: 94 21 ff f0 stwu r1,-16(r1)
+ ed8: 94 21 ff e0 stwu r1,-32(r1)
edc: 3c 80 00 00 lis r4,0
ee0: 7c 08 02 a6 mflr r0
ee4: 38 84 00 00 addi r4,r4,0
- ee8: 93 e1 00 0c stw r31,12(r1)
+ ee8: 93 e1 00 1c stw r31,28(r1)
eec: 7c 7f 1b 78 mr r31,r3
ef0: 3c 60 00 00 lis r3,0
- ef4: 90 01 00 14 stw r0,20(r1)
+ ef4: 90 01 00 24 stw r0,36(r1)
ef8: 38 63 00 00 addi r3,r3,0
efc: 48 00 00 01 bl efc <grub_mod_init+0x24>
f00: 3d 20 00 00 lis r9,0
f04: 93 e9 00 00 stw r31,0(r9)
- f08: 39 61 00 10 addi r11,r1,16
+ f08: 39 61 00 20 addi r11,r1,32
f0c: 48 00 00 00 b f0c <grub_mod_init+0x34>
00000f10 <grub_mod_fini>:
next prev parent reply other threads:[~2014-09-21 14:24 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-28 19:56 [RFC PATCH 0/3] grub powerpc64 little-endian enablement Paulo Flabiano Smorigo
2014-08-28 19:56 ` [RFC PATCH 1/3] Add powerpc little-endian (ppc64le) flags Paulo Flabiano Smorigo
2014-09-17 22:04 ` Paulo Flabiano Smorigo
2014-09-19 13:48 ` Colin Watson
2014-09-21 16:05 ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-08-28 19:56 ` [RFC PATCH 2/3] Files reorganization and include some libgcc fuctions Paulo Flabiano Smorigo
2014-09-08 2:16 ` Colin Watson
2014-09-17 21:43 ` Paulo Flabiano Smorigo
2014-09-19 14:03 ` Colin Watson
2014-09-21 16:07 ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-08-28 19:56 ` [RFC PATCH 3/3] Suport for bi-endianess in elf file Paulo Flabiano Smorigo
2015-06-16 16:44 ` Andrei Borzenkov
2014-09-21 13:58 ` [RFC PATCH 0/3] grub powerpc64 little-endian enablement Andrei Borzenkov
2014-09-21 14:24 ` Andrei Borzenkov [this message]
2014-09-25 22:48 ` Paulo Flabiano Smorigo
2014-09-26 15:52 ` Andrei Borzenkov
2014-09-26 18:18 ` Paulo Flabiano Smorigo
2015-06-15 17:15 ` Andrei Borzenkov
2015-06-16 12:36 ` Paulo Flabiano Smorigo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140921182425.18593186@opensuse.site \
--to=arvidjaar@gmail.com \
--cc=grub-devel@gnu.org \
--cc=pfsmorigo@br.ibm.com \
--cc=pfsmorigo@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).