Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 620841 Details for
Bug 862620
"may be used uninitialized" warning at odds with assembly
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
output of gdb disassemble /m regmap_raw_read
gdb.txt (text/plain), 5.89 KB, created by
Paul Bolle
on 2012-10-03 12:57:29 UTC
(
hide
)
Description:
output of gdb disassemble /m regmap_raw_read
Filename:
MIME Type:
Creator:
Paul Bolle
Created:
2012-10-03 12:57:29 UTC
Size:
5.89 KB
patch
obsolete
>Dump of assembler code for function regmap_raw_read: >40 for (i = 0; i < num; i++) > 0x0000000000000053 <+83>: test %r12d,%r12d > 0x0000000000000056 <+86>: je 0xf0 <regmap_raw_read+240> > 0x000000000000005c <+92>: xor %r15d,%r15d > 0x000000000000005f <+95>: jmp 0x71 <regmap_raw_read+113> > 0x0000000000000061 <+97>: nopl 0x0(%rax) > 0x0000000000000068 <+104>: add $0x1,%r15 > 0x000000000000006c <+108>: cmp %r15d,%r12d > 0x000000000000006f <+111>: jbe 0xf0 <regmap_raw_read+240> > >41 if (!regmap_volatile(map, reg + i)) > 0x0000000000000076 <+118>: xor %eax,%eax > 0x0000000000000078 <+120>: mov %rbx,%rdi > 0x000000000000007b <+123>: callq 0x80 <regmap_raw_read+128> > 0x0000000000000080 <+128>: test %eax,%eax > 0x0000000000000082 <+130>: jne 0x68 <regmap_raw_read+104> > >42 return false; >43 >44 return true; >45 } >46 >47 int regmap_raw_read(struct regmap *map, unsigned int reg, void *val, > 0x0000000000000071 <+113>: lea 0x0(%rbp,%r15,1),%esi > 0x00000000000000b7 <+183>: add $0x1,%r12 > >48 size_t val_len) >49 { > 0x0000000000000000 <+0>: push %r15 > 0x0000000000000005 <+5>: push %r14 > 0x0000000000000007 <+7>: push %r13 > 0x0000000000000009 <+9>: push %r12 > 0x000000000000000b <+11>: push %rbp > 0x000000000000000c <+12>: push %rbx > 0x000000000000000d <+13>: mov %rdi,%rbx > 0x0000000000000010 <+16>: sub $0x38,%rsp > 0x0000000000000018 <+24>: mov %rdx,0x18(%rsp) > 0x000000000000001f <+31>: mov %rcx,0x8(%rsp) > >50 size_t val_bytes = map->format.val_bytes; > 0x0000000000000014 <+20>: mov 0x10(%rdi),%r14 > >51 size_t val_count = val_len / val_bytes; > 0x0000000000000002 <+2>: mov %rcx,%rax > 0x000000000000001d <+29>: xor %edx,%edx > 0x0000000000000024 <+36>: div %r14 > 0x000000000000002a <+42>: mov %rax,0x10(%rsp) > >52 unsigned int v; >53 int ret, i; >54 >55 if (val_len % map->format.val_bytes) > 0x0000000000000027 <+39>: test %rdx,%rdx > 0x000000000000002f <+47>: jne 0x121 <regmap_raw_read+289> > >56 return -EINVAL; > 0x000000000000003e <+62>: mov $0xffffffea,%r13d > 0x0000000000000121 <+289>: mov $0xffffffea,%r13d > 0x0000000000000127 <+295>: jmp 0x10f <regmap_raw_read+271> > >57 if (reg % map->reg_stride) > 0x0000000000000035 <+53>: xor %edx,%edx > 0x0000000000000037 <+55>: mov %esi,%eax > 0x0000000000000039 <+57>: mov %esi,%ebp > 0x000000000000003b <+59>: divl 0x20(%rdi) > 0x0000000000000044 <+68>: test %edx,%edx > 0x0000000000000046 <+70>: jne 0x10f <regmap_raw_read+271> > >58 return -EINVAL; >59 >60 map->lock(map); > 0x000000000000004c <+76>: callq *(%rbx) > >61 >62 if (regmap_volatile_range(map, reg, val_count) || map->cache_bypass || > 0x000000000000004e <+78>: mov 0x10(%rsp),%r12d > 0x0000000000000084 <+132>: mov 0x28(%rbx),%eax > 0x0000000000000087 <+135>: test %eax,%eax > 0x0000000000000089 <+137>: jne 0xf0 <regmap_raw_read+240> > 0x000000000000008b <+139>: mov 0x24(%rbx),%edx > 0x000000000000008e <+142>: test %edx,%edx > 0x0000000000000090 <+144>: je 0xf0 <regmap_raw_read+240> > >63 map->cache_type == REGCACHE_NONE) { >64 /* Physical block read if there's no cache involved */ >65 ret = _regmap_raw_read(map, reg, val, val_len); > 0x00000000000000f0 <+240>: mov 0x8(%rsp),%rcx > 0x00000000000000f5 <+245>: mov 0x18(%rsp),%rdx > 0x00000000000000fa <+250>: mov %ebp,%esi > 0x00000000000000fc <+252>: mov %rbx,%rdi > 0x00000000000000ff <+255>: xor %eax,%eax > 0x0000000000000101 <+257>: callq 0x106 <regmap_raw_read+262> > 0x0000000000000106 <+262>: mov %eax,%r13d > >66 >67 } else { >68 /* Otherwise go word by word for the cache; should be low >69 * cost as we expect to hit the cache. >70 */ >71 for (i = 0; i < val_count; i++) { > 0x0000000000000092 <+146>: cmpq $0x0,0x10(%rsp) > 0x0000000000000098 <+152>: je 0x109 <regmap_raw_read+265> > 0x000000000000009a <+154>: mov 0x20(%rbx),%esi > 0x000000000000009d <+157>: xor %r12d,%r12d > 0x00000000000000a0 <+160>: xor %r15d,%r15d > 0x00000000000000a3 <+163>: jmp 0xce <regmap_raw_read+206> > 0x00000000000000a5 <+165>: nopl (%rax) > 0x00000000000000c1 <+193>: cmp 0x10(%rsp),%r12 > 0x00000000000000c6 <+198>: je 0x109 <regmap_raw_read+265> > 0x00000000000000c8 <+200>: mov 0x20(%rbx),%esi > 0x00000000000000cb <+203>: mov %r12,%r15 > >72 ret = _regmap_read(map, reg + (i * map->reg_stride), > 0x00000000000000ce <+206>: imul %r12d,%esi > 0x00000000000000d2 <+210>: lea 0x2c(%rsp),%rdx > 0x00000000000000d7 <+215>: xor %eax,%eax > 0x00000000000000d9 <+217>: mov %rbx,%rdi > 0x00000000000000dc <+220>: add %ebp,%esi > 0x00000000000000de <+222>: callq 0xe3 <regmap_raw_read+227> > 0x00000000000000e5 <+229>: mov %eax,%r13d > >73 &v); >74 if (ret != 0) > 0x00000000000000e3 <+227>: test %eax,%eax > 0x00000000000000e8 <+232>: je 0xa8 <regmap_raw_read+168> > 0x00000000000000ea <+234>: jmp 0x109 <regmap_raw_read+265> > 0x00000000000000ec <+236>: nopl 0x0(%rax) > >75 goto out; >76 >77 map->format.format_val(val + (i * val_bytes), v, 0); > 0x00000000000000a8 <+168>: imul %r14,%r15 > 0x00000000000000ac <+172>: mov 0x18(%rsp),%rdi > 0x00000000000000b1 <+177>: xor %edx,%edx > 0x00000000000000b3 <+179>: mov 0x2c(%rsp),%esi > 0x00000000000000bb <+187>: add %r15,%rdi > 0x00000000000000be <+190>: callq *0x18(%rbx) > >78 } >79 } >80 >81 out: >82 map->unlock(map); > 0x0000000000000109 <+265>: mov %rbx,%rdi > 0x000000000000010c <+268>: callq *0x8(%rbx) > >83 >84 return ret; >85 } > 0x000000000000010f <+271>: add $0x38,%rsp > 0x0000000000000113 <+275>: mov %r13d,%eax > 0x0000000000000116 <+278>: pop %rbx > 0x0000000000000117 <+279>: pop %rbp > 0x0000000000000118 <+280>: pop %r12 > 0x000000000000011a <+282>: pop %r13 > 0x000000000000011c <+284>: pop %r14 > 0x000000000000011e <+286>: pop %r15 > 0x0000000000000120 <+288>: retq > >End of assembler dump. >quit
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 862620
:
620821
| 620841