Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78665629 authored by Roy Spliet's avatar Roy Spliet Committed by Ben Skeggs
Browse files

drm/nouveau/gr/fuc: Store $r0 in interrupt handler



It's supposed to always be 0, but at least nv_iowr() temporarily violates
this. Since the ih touches $r0, it should be stored.

Signed-off-by: default avatarRoy Spliet <rs855@cam.ac.uk>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent b815a2e3
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -322,6 +322,7 @@ main:

// interrupt handler
ih:
	push $r0
	push $r8
	mov $r8 $flags
	push $r8
@@ -358,6 +359,7 @@ ih:
	pop $r8
	mov $flags $r8
	pop $r8
	pop $r0
	bclr $flags $p0
	iret

+40 −40
Original line number Diff line number Diff line
@@ -382,56 +382,57 @@ uint32_t gf100_grgpc_code[] = {
	0xb60412fd,
	0x1efd01e4,
	0x0018fe05,
	0x05b021f5,
	0x05b421f5,
/* 0x04eb: main_not_ctx_xfer */
	0x94d30ef4,
	0xf5f010ef,
	0x7e21f501,
	0xc60ef403,
/* 0x04f8: ih */
	0x88fe80f9,
	0xf980f901,
	0xf9a0f990,
	0xf9d0f9b0,
	0xbdf0f9e0,
	0x00a7f104,
	0x00a3f002,
	0xc400aacf,
	0x0bf404ab,
	0x1cd7f02c,
	0x1a00e7f1,
	0xcf00e3f0,
	0xf7f100ee,
	0xf3f01900,
	0x00ffcf00,
	0xf00421f4,
	0x07f101e7,
	0x03f01d00,
	0x000ed000,
/* 0x0546: ih_no_fifo */
	0x07f104bd,
	0x03f00100,
	0x000ad000,
	0xf0fc04bd,
	0xd0fce0fc,
	0xa0fcb0fc,
	0x80fc90fc,
	0xfc0088fe,
	0x0032f480,
/* 0x056a: hub_barrier_done */
	0x80f900f9,
	0xf90188fe,
	0xf990f980,
	0xf9b0f9a0,
	0xf9e0f9d0,
	0xf104bdf0,
	0xf00200a7,
	0xaacf00a3,
	0x04abc400,
	0xf02c0bf4,
	0xe7f11cd7,
	0xe3f01a00,
	0x00eecf00,
	0x1900f7f1,
	0xcf00f3f0,
	0x21f400ff,
	0x01e7f004,
	0x1d0007f1,
	0xd00003f0,
	0x04bd000e,
/* 0x0548: ih_no_fifo */
	0x010007f1,
	0xd00003f0,
	0x04bd000a,
	0xe0fcf0fc,
	0xb0fcd0fc,
	0x90fca0fc,
	0x88fe80fc,
	0xfc80fc00,
	0x0032f400,
/* 0x056e: hub_barrier_done */
	0xf7f001f8,
	0x040e9801,
	0xb904febb,
	0xe7f102ff,
	0xe3f09418,
	0x9d21f440,
/* 0x0582: ctx_redswitch */
/* 0x0586: ctx_redswitch */
	0xf7f000f8,
	0x0007f120,
	0x0103f085,
	0xbd000fd0,
	0x08e7f004,
/* 0x0594: ctx_redswitch_delay */
/* 0x0598: ctx_redswitch_delay */
	0xf401e2b6,
	0xf5f1fd1b,
	0xf5f10800,
@@ -439,13 +440,13 @@ uint32_t gf100_grgpc_code[] = {
	0x03f08500,
	0x000fd001,
	0x00f804bd,
/* 0x05b0: ctx_xfer */
/* 0x05b4: ctx_xfer */
	0x810007f1,
	0xd00203f0,
	0x04bd000f,
	0xf50711f4,
/* 0x05c3: ctx_xfer_not_load */
	0xf5058221,
/* 0x05c7: ctx_xfer_not_load */
	0xf5058621,
	0xbd026a21,
	0xfc07f124,
	0x0203f047,
@@ -475,12 +476,11 @@ uint32_t gf100_grgpc_code[] = {
	0x6f21f508,
	0x5e21f501,
	0x0601f402,
/* 0x063b: ctx_xfer_post */
/* 0x063f: ctx_xfer_post */
	0xf50712f4,
/* 0x063f: ctx_xfer_done */
/* 0x0643: ctx_xfer_done */
	0xf5027f21,
	0xf8056a21,
	0x00000000,
	0xf8056e21,
	0x00000000,
	0x00000000,
	0x00000000,
+41 −41
Original line number Diff line number Diff line
@@ -408,56 +408,57 @@ uint32_t gf117_grgpc_code[] = {
	0x0412fd20,
	0xfd01e4b6,
	0x18fe051e,
	0xfd21f500,
	0xd30ef405,
	0x0121f500,
	0xd30ef406,
/* 0x0538: main_not_ctx_xfer */
	0xf010ef94,
	0x21f501f5,
	0x0ef4037e,
/* 0x0545: ih */
	0xfe80f9c6,
	0x80f90188,
	0xa0f990f9,
	0xd0f9b0f9,
	0xf0f9e0f9,
	0xa7f104bd,
	0xa3f00200,
	0x00aacf00,
	0xf404abc4,
	0xd7f02c0b,
	0x00e7f124,
	0x00e3f01a,
	0xf100eecf,
	0xf01900f7,
	0xffcf00f3,
	0x0421f400,
	0xf101e7f0,
	0xf01d0007,
	0x0ed00003,
/* 0x0593: ih_no_fifo */
	0xf104bd00,
	0xf0010007,
	0x0ad00003,
	0xfc04bd00,
	0xfce0fcf0,
	0xfcb0fcd0,
	0xfc90fca0,
	0x0088fe80,
	0x32f480fc,
/* 0x05b7: hub_barrier_done */
	0xf900f9c6,
	0x0188fe80,
	0x90f980f9,
	0xb0f9a0f9,
	0xe0f9d0f9,
	0x04bdf0f9,
	0x0200a7f1,
	0xcf00a3f0,
	0xabc400aa,
	0x2c0bf404,
	0xf124d7f0,
	0xf01a00e7,
	0xeecf00e3,
	0x00f7f100,
	0x00f3f019,
	0xf400ffcf,
	0xe7f00421,
	0x0007f101,
	0x0003f01d,
	0xbd000ed0,
/* 0x0595: ih_no_fifo */
	0x0007f104,
	0x0003f001,
	0xbd000ad0,
	0xfcf0fc04,
	0xfcd0fce0,
	0xfca0fcb0,
	0xfe80fc90,
	0x80fc0088,
	0x32f400fc,
/* 0x05bb: hub_barrier_done */
	0xf001f800,
	0x0e9801f7,
	0x04febb04,
	0xf102ffb9,
	0xf09418e7,
	0x21f440e3,
/* 0x05cf: ctx_redswitch */
/* 0x05d3: ctx_redswitch */
	0xf000f89d,
	0x07f120f7,
	0x03f08500,
	0x000fd001,
	0xe7f004bd,
/* 0x05e1: ctx_redswitch_delay */
/* 0x05e5: ctx_redswitch_delay */
	0x01e2b608,
	0xf1fd1bf4,
	0xf10800f5,
@@ -465,13 +466,13 @@ uint32_t gf117_grgpc_code[] = {
	0xf0850007,
	0x0fd00103,
	0xf804bd00,
/* 0x05fd: ctx_xfer */
/* 0x0601: ctx_xfer */
	0x0007f100,
	0x0203f081,
	0xbd000fd0,
	0x0711f404,
	0x05cf21f5,
/* 0x0610: ctx_xfer_not_load */
	0x05d321f5,
/* 0x0614: ctx_xfer_not_load */
	0x026a21f5,
	0x07f124bd,
	0x03f047fc,
@@ -511,10 +512,10 @@ uint32_t gf117_grgpc_code[] = {
	0x21f5016f,
	0x01f4025e,
	0x0712f406,
/* 0x06ac: ctx_xfer_post */
/* 0x06b0: ctx_xfer_post */
	0x027f21f5,
/* 0x06b0: ctx_xfer_done */
	0x05b721f5,
/* 0x06b4: ctx_xfer_done */
	0x05bb21f5,
	0x000000f8,
	0x00000000,
	0x00000000,
@@ -533,5 +534,4 @@ uint32_t gf117_grgpc_code[] = {
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
};
+41 −41
Original line number Diff line number Diff line
@@ -408,56 +408,57 @@ uint32_t gk104_grgpc_code[] = {
	0x0412fd20,
	0xfd01e4b6,
	0x18fe051e,
	0xfd21f500,
	0xd30ef405,
	0x0121f500,
	0xd30ef406,
/* 0x0538: main_not_ctx_xfer */
	0xf010ef94,
	0x21f501f5,
	0x0ef4037e,
/* 0x0545: ih */
	0xfe80f9c6,
	0x80f90188,
	0xa0f990f9,
	0xd0f9b0f9,
	0xf0f9e0f9,
	0xa7f104bd,
	0xa3f00200,
	0x00aacf00,
	0xf404abc4,
	0xd7f02c0b,
	0x00e7f124,
	0x00e3f01a,
	0xf100eecf,
	0xf01900f7,
	0xffcf00f3,
	0x0421f400,
	0xf101e7f0,
	0xf01d0007,
	0x0ed00003,
/* 0x0593: ih_no_fifo */
	0xf104bd00,
	0xf0010007,
	0x0ad00003,
	0xfc04bd00,
	0xfce0fcf0,
	0xfcb0fcd0,
	0xfc90fca0,
	0x0088fe80,
	0x32f480fc,
/* 0x05b7: hub_barrier_done */
	0xf900f9c6,
	0x0188fe80,
	0x90f980f9,
	0xb0f9a0f9,
	0xe0f9d0f9,
	0x04bdf0f9,
	0x0200a7f1,
	0xcf00a3f0,
	0xabc400aa,
	0x2c0bf404,
	0xf124d7f0,
	0xf01a00e7,
	0xeecf00e3,
	0x00f7f100,
	0x00f3f019,
	0xf400ffcf,
	0xe7f00421,
	0x0007f101,
	0x0003f01d,
	0xbd000ed0,
/* 0x0595: ih_no_fifo */
	0x0007f104,
	0x0003f001,
	0xbd000ad0,
	0xfcf0fc04,
	0xfcd0fce0,
	0xfca0fcb0,
	0xfe80fc90,
	0x80fc0088,
	0x32f400fc,
/* 0x05bb: hub_barrier_done */
	0xf001f800,
	0x0e9801f7,
	0x04febb04,
	0xf102ffb9,
	0xf09418e7,
	0x21f440e3,
/* 0x05cf: ctx_redswitch */
/* 0x05d3: ctx_redswitch */
	0xf000f89d,
	0x07f120f7,
	0x03f08500,
	0x000fd001,
	0xe7f004bd,
/* 0x05e1: ctx_redswitch_delay */
/* 0x05e5: ctx_redswitch_delay */
	0x01e2b608,
	0xf1fd1bf4,
	0xf10800f5,
@@ -465,13 +466,13 @@ uint32_t gk104_grgpc_code[] = {
	0xf0850007,
	0x0fd00103,
	0xf804bd00,
/* 0x05fd: ctx_xfer */
/* 0x0601: ctx_xfer */
	0x0007f100,
	0x0203f081,
	0xbd000fd0,
	0x0711f404,
	0x05cf21f5,
/* 0x0610: ctx_xfer_not_load */
	0x05d321f5,
/* 0x0614: ctx_xfer_not_load */
	0x026a21f5,
	0x07f124bd,
	0x03f047fc,
@@ -511,10 +512,10 @@ uint32_t gk104_grgpc_code[] = {
	0x21f5016f,
	0x01f4025e,
	0x0712f406,
/* 0x06ac: ctx_xfer_post */
/* 0x06b0: ctx_xfer_post */
	0x027f21f5,
/* 0x06b0: ctx_xfer_done */
	0x05b721f5,
/* 0x06b4: ctx_xfer_done */
	0x05bb21f5,
	0x000000f8,
	0x00000000,
	0x00000000,
@@ -533,5 +534,4 @@ uint32_t gk104_grgpc_code[] = {
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
};
+41 −41
Original line number Diff line number Diff line
@@ -408,56 +408,57 @@ uint32_t gk110_grgpc_code[] = {
	0x0412fd20,
	0xfd01e4b6,
	0x18fe051e,
	0xfd21f500,
	0xd30ef405,
	0x0121f500,
	0xd30ef406,
/* 0x0538: main_not_ctx_xfer */
	0xf010ef94,
	0x21f501f5,
	0x0ef4037e,
/* 0x0545: ih */
	0xfe80f9c6,
	0x80f90188,
	0xa0f990f9,
	0xd0f9b0f9,
	0xf0f9e0f9,
	0xa7f104bd,
	0xa3f00200,
	0x00aacf00,
	0xf404abc4,
	0xd7f02c0b,
	0x00e7f124,
	0x00e3f01a,
	0xf100eecf,
	0xf01900f7,
	0xffcf00f3,
	0x0421f400,
	0xf101e7f0,
	0xf01d0007,
	0x0ed00003,
/* 0x0593: ih_no_fifo */
	0xf104bd00,
	0xf0010007,
	0x0ad00003,
	0xfc04bd00,
	0xfce0fcf0,
	0xfcb0fcd0,
	0xfc90fca0,
	0x0088fe80,
	0x32f480fc,
/* 0x05b7: hub_barrier_done */
	0xf900f9c6,
	0x0188fe80,
	0x90f980f9,
	0xb0f9a0f9,
	0xe0f9d0f9,
	0x04bdf0f9,
	0x0200a7f1,
	0xcf00a3f0,
	0xabc400aa,
	0x2c0bf404,
	0xf124d7f0,
	0xf01a00e7,
	0xeecf00e3,
	0x00f7f100,
	0x00f3f019,
	0xf400ffcf,
	0xe7f00421,
	0x0007f101,
	0x0003f01d,
	0xbd000ed0,
/* 0x0595: ih_no_fifo */
	0x0007f104,
	0x0003f001,
	0xbd000ad0,
	0xfcf0fc04,
	0xfcd0fce0,
	0xfca0fcb0,
	0xfe80fc90,
	0x80fc0088,
	0x32f400fc,
/* 0x05bb: hub_barrier_done */
	0xf001f800,
	0x0e9801f7,
	0x04febb04,
	0xf102ffb9,
	0xf09418e7,
	0x21f440e3,
/* 0x05cf: ctx_redswitch */
/* 0x05d3: ctx_redswitch */
	0xf000f89d,
	0x07f120f7,
	0x03f08500,
	0x000fd001,
	0xe7f004bd,
/* 0x05e1: ctx_redswitch_delay */
/* 0x05e5: ctx_redswitch_delay */
	0x01e2b608,
	0xf1fd1bf4,
	0xf10800f5,
@@ -465,13 +466,13 @@ uint32_t gk110_grgpc_code[] = {
	0xf0850007,
	0x0fd00103,
	0xf804bd00,
/* 0x05fd: ctx_xfer */
/* 0x0601: ctx_xfer */
	0x0007f100,
	0x0203f081,
	0xbd000fd0,
	0x0711f404,
	0x05cf21f5,
/* 0x0610: ctx_xfer_not_load */
	0x05d321f5,
/* 0x0614: ctx_xfer_not_load */
	0x026a21f5,
	0x07f124bd,
	0x03f047fc,
@@ -511,10 +512,10 @@ uint32_t gk110_grgpc_code[] = {
	0x21f5016f,
	0x01f4025e,
	0x0712f406,
/* 0x06ac: ctx_xfer_post */
/* 0x06b0: ctx_xfer_post */
	0x027f21f5,
/* 0x06b0: ctx_xfer_done */
	0x05b721f5,
/* 0x06b4: ctx_xfer_done */
	0x05bb21f5,
	0x000000f8,
	0x00000000,
	0x00000000,
@@ -533,5 +534,4 @@ uint32_t gk110_grgpc_code[] = {
	0x00000000,
	0x00000000,
	0x00000000,
	0x00000000,
};
Loading