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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.