Commit Graph

3496 Commits

Author SHA1 Message Date
j_mayer
578bb25230 More comments about unimplemented SPRs.
Tag unused functions with unused attribute instead of using #ifdef (TODO)
  to ease tests: just have to enable the implementation in the cpu_defs table.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3306 c046a42c-6fe2-441c-8c8c-71466251a162
2007-10-01 04:48:45 +00:00
j_mayer
056b05f8d2 Optimisations: avoid generation of duplicated micro-ops.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3305 c046a42c-6fe2-441c-8c8c-71466251a162
2007-10-01 03:03:51 +00:00
j_mayer
b48d7d697f Compilation fix (forgotten patch).
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3304 c046a42c-6fe2-441c-8c8c-71466251a162
2007-10-01 02:55:07 +00:00
j_mayer
5356c7b5a6 Remove definitions for deprecated SLB & TLB related op helpers.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3303 c046a42c-6fe2-441c-8c8c-71466251a162
2007-10-01 01:59:12 +00:00
j_mayer
daf4f96ece Avoid op helpers that would just call helpers for TLB & SLB management:
call the helpers directly from the micro-ops.
Avoid duplicated code for tlbsx. implementation.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3302 c046a42c-6fe2-441c-8c8c-71466251a162
2007-10-01 01:51:12 +00:00
j_mayer
035feb8857 Share more SPR instanciations between all PowerPC 401 incarnations.
Add comments about some unimplemented storage control dedicated SPRs.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3301 c046a42c-6fe2-441c-8c8c-71466251a162
2007-10-01 01:38:03 +00:00
j_mayer
6f5d427d58 Implement embedded PowerPC exceptions prefix and vectors registers.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3300 c046a42c-6fe2-441c-8c8c-71466251a162
2007-10-01 01:32:49 +00:00
j_mayer
4e290a0b71 Share input pins and internal interrupt controller between all PowerPC 40x.
Fix critical input interrupt generation.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3299 c046a42c-6fe2-441c-8c8c-71466251a162
2007-10-01 01:27:10 +00:00
blueswir1
3391c81801 Fix Sparc64 ldfa, lddfa, stfa, and stdfa instructions
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3298 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 19:38:12 +00:00
blueswir1
ee0b03fd85 Fix Sparc64 wrasr instructions
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3297 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 16:37:00 +00:00
j_mayer
a902d88664 Fix (once again) PowerPC sync weight field.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3296 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 15:21:15 +00:00
j_mayer
1e6784f960 Fix PowerPC TLB miss dump code.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3295 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 15:19:48 +00:00
j_mayer
56ba31ff0b Fix missing case in the new PowerPC exception model.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3294 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 15:15:18 +00:00
j_mayer
068abdc8a5 Fix inconsistent end conditions in ppc_find_xxx functions.
(crash reported by Andreas Farber when using default CPU).


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3293 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 14:52:08 +00:00
j_mayer
8a84de23b8 Fix compilation on Darwin platform, avoiding the use of gcc function attributes
(problem reported by Andreas Farber).
: ----------------------------------------------------------------------


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3292 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 14:44:52 +00:00
ths
a5b85f7959 Fix mmap to handle differing host/target page sizes, by Edgar E. Iglesias.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3291 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 14:32:45 +00:00
ths
0574b6fb10 Add get_sp_from_cpustate implementation.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3290 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 13:49:22 +00:00
j_mayer
be147d0879 * Update OEA environment, following the PowerPC 2.04 specification:
- New mtmsr/mtmsrd form that just update RI and EE bits
- New hrfid, lq and stq instructions
- Add support for supervisor and hypervisor modes process priority update
- Code provision for hypervisor SPR accesses
* Actually implement the wait instruction
* Bugfixes (missing RETURN in micro-op / missing #ifdef)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3289 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 13:03:23 +00:00
ths
b0566f4f45 Support UltraVNC clients, by Eduardo Felipe.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3288 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 13:01:15 +00:00
j_mayer
0db1b20e47 Synchronize with latest PowerPC ISA VEA:
* fix invalid instructions bits masks
* new wait instruction
* more comments about effect of cache instructions on the MMU


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3287 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 03:46:38 +00:00
ths
1548b15d23 Add mipsn32{,el}-linux-user.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3286 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 02:14:03 +00:00
ths
cf575356bf Remove unused variable.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3285 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 02:10:37 +00:00
ths
540635ba65 Code provision for n32/n64 mips userland emulation. Not functional yet.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3284 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 01:58:33 +00:00
j_mayer
868d585ace Avoid crash on NULL timers.
This is a rework of Stefan Weil proposed patch.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3283 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 01:29:07 +00:00
j_mayer
c80f84e3c0 Implement Process Priority Register as defined in the PowerPC 2.04 spec.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3282 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 01:18:26 +00:00
j_mayer
d7e4b87e53 Implement new floating-point instructions (fre, frin, friz, frip, frim)
as defined in the PowerPC 2.04 specification.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3281 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 01:11:48 +00:00
j_mayer
477023a603 Improve single-precision floats load & stores:
as the PowerPC registers only store double-precision floats,
  use float64_to_float32 & float32_to_float64 to do the appropriate conversion.
Implement stfiwx.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3280 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 01:01:08 +00:00
j_mayer
bfa1e5cf0a XER is to be treated as a 64 bits register on 64 bits implementations,
according to the PowerPC 2.04 specification.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3279 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 00:50:23 +00:00
ths
a09d88b86a Update TODO.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3278 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 00:45:51 +00:00
j_mayer
a062e36c58 Implement the PowerPC alternate time-base, following the 2.04 specification.
Share most code with the time-base management routines.
Remove time-base write routines from user-mode emulation environments.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3277 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-30 00:38:38 +00:00
ths
4887d78b01 Don't hardcode the host architecture name.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3276 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 21:22:33 +00:00
ths
ff1aaf65e7 Update tarbin rule.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3275 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 21:18:26 +00:00
ths
8915ee7414 Enable sh4-softmmu and sh4-linux-user builds by default, by Magnus Damm.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3274 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 19:55:21 +00:00
ths
c5e814b271 Fix rte opcode, by Magnus Damm.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3273 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 19:52:22 +00:00
ths
ed8e0a4d4b Add FRQCR read support, by Magnus Damm.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3272 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 19:51:40 +00:00
ths
3464c58998 Add INTC controller prototype, by Magnus Damm.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3271 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 19:47:44 +00:00
ths
2f062c7227 Stand-alone SCI/SCIF emulation code, by Magnus Damm.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3270 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 19:43:54 +00:00
ths
cd1a3f6840 Stand-alone TMU emulation code, by Magnus Damm.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3269 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 19:40:09 +00:00
ths
0d78f544de Add R2D-PLUS support, by Magnus Damm.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3268 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 19:24:41 +00:00
ths
671880e651 Supervisor mode implementation, by Aurelien Jarno.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3267 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 19:21:36 +00:00
ths
544540979c Less magic constants.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3266 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 19:19:59 +00:00
j_mayer
dee96f6ca3 PowerPC emulation optimization:
avoid stopping translation after most SPR updates
when a context-synchronization instruction is also needed.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3265 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 15:02:38 +00:00
j_mayer
58a7d32872 Code provision for hypervisor timers resources,
as described in PowerPC 2.04 specification.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3264 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 13:21:37 +00:00
j_mayer
47c4d8f06b Fix PowerPC target objects dependencies
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3263 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 13:20:12 +00:00
j_mayer
8bb1f9c51c Provision for x86_64-linux-user target: needs get_sp_from_cpustate
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3262 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 13:12:58 +00:00
j_mayer
e1833e1f96 Rework PowerPC exceptions model to make it more versatile:
* don't use exception vectors as the exception number.
  Use vectors numbers as defined in the PowerPC embedded specification instead
  and extend this model to cover all emulated PowerPC variants exceptions.
* add some missing exceptions definitions, from PowerPC 2.04 specification
  and actual PowerPC implementations.
* add code provision for hypervisor exceptions handling.
* define exception vectors and prefix in CPUPPCState to emulate BookE exception
  vectors without any hacks.
* define per CPU model valid exception vectors.
* handle all known exceptions in user-mode only emulations.
* fix hardware interrupts priorities in most cases.
* change RET_EXCP macros name into GEN_EXCP as they don't return.
* do not stop translation on most instructions that are not defined as
  context-synchronizing in PowerPC specification.
* fix PowerPC 64 jump targets and link register update when in 32 bits mode.
* Fix PowerPC 464 and 464F definitions.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3261 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 13:06:16 +00:00
j_mayer
f93732914e make cpu_abort dump cpu state in logfile, which is useful for debugging.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3260 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 12:18:20 +00:00
j_mayer
29f640e2cf always_inline gcc directive can be useful.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3259 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 12:17:25 +00:00
j_mayer
f1548daae3 host_utils.o may also be useful for user-mode emulation.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3258 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 12:15:39 +00:00
j_mayer
237c0af017 Define the proper bfd_mach to be used by the disassembler for each
PowerPC emulated CPU.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3257 c046a42c-6fe2-441c-8c8c-71466251a162
2007-09-29 12:01:46 +00:00